Datasets V5 (beta)

Filter collection results (datasets) and read how they were made and their data.

A dataset is the result of one collection (schedule_results in v4). In v5 you can also read whether it was manual or which plan (trigger, plan) and which conditions it ran with (inputs). Retry and cancel are in Collections.

Endpoints

  • GET /v5/api/datasets List with filters
  • GET /v5/api/datasets/{dataset_id} Status, count, duration, credits, how it started, plan and conditions
  • GET /v5/api/datasets/{dataset_id}/results The data (result rows)

Filter the list

Newest first. Pass the previous next_cursor unchanged as cursor. Giving bot_id as well reads faster. An unknown value gives 400 INVALID_PARAM with the allowed values in details.allowed.

ParameterDescription
bot_idOnly datasets of this bot.
plan_idOnly datasets started by this plan (plan id string). The first plan that follows the bot settings also includes plan runs from before plan records were kept. Giving a plan of another bot together with bot_id returns an empty list.
triggerHow it started: see the table below.
statusStatus: see the table below.
from, toCreation time range. ISO 8601 or YYYY-MM-DD (KST).
cursor, limitPaging. limit defaults to 100, maximum 1000.
Example request
curl 'https://www.hashscraper.com/v5/api/datasets?bot_id=8f3a7c1e9b5d24f6&trigger=period&status=done&from=2026-09-01&to=2026-09-30&limit=20' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Example response 200
{
  "result": "success",
  "version": "v5",
  "request_id": "req_5a8c1f1c-9b2d-4e7c-9abf-3f7e0a4d1b21",
  "elapsed_sec": 0.0123,
  "count": 1,
  "next_cursor": 239700100,
  "data": [
    {
      "id": 239758028,
      "bot": {
        "id": "8f3a7c1e9b5d24f6",
        "name": "Sample shopping bot"
      },
      "status": "done",
      "data_count": 1280,
      "union": false,
      "trigger": "period",
      "plan_id": "512",
      "credits_used": 6400,
      "created_at": "2026-09-28T09:00:03+09:00",
      "updated_at": "2026-09-28T09:01:37+09:00"
    }
  ]
}
Example request
curl 'https://www.hashscraper.com/v5/api/datasets?plan_id=512' \
  -H 'Authorization: Bearer YOUR_API_KEY'

How it started: trigger

ValueMeaning
manualA collection started by hand on screen.
apiA collection started through the API (including v5 collections).
periodA collection a plan started at its scheduled time.
period_manualA collection started with "Run now" on a plan.
excelA collection started from Excel.

Status: status

ValueMeaning
waitingWaiting to start.
runningCollecting.
retryingRetrying.
doneFinished.
attentionNeeds attention: it ended with a notice attached (for example no search results) or stalled without updates for a long time.
failedFailed.
cancelingCanceling.
canceledCanceled.

Detail

On top of the list fields you get started_at, elapsed_sec (so far while collecting) and the three fields below. The list carries only plan_id (a string) to avoid reading plan names, and the name and sentence are in the detail.

FieldDescription
triggerA value from the table above.
plan{ id, name, label, scheduled_at } when a plan started it (id is a string, scheduled_at is the scheduled time of that run), or null when manual.
inputsThe conditions used for that collection { param1: { name, value } }. null for union datasets filled from Excel rows.
credits_usedCredits used (integer).
empty_reasonWhy a finished dataset has no data: no_new_items (nothing new in the collection period), duplicates_only (everything found was already collected), not_found (the target could not be found). null when the dataset has data or no reason is known. The list has the same field, and the v3 get_results response and the webhook body carry it under the same name.
data_countNumber of collected items.
Example request
curl 'https://www.hashscraper.com/v5/api/datasets/239758028' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Example response 200
{
  "result": "success",
  "version": "v5",
  "request_id": "req_5a8c1f1c-9b2d-4e7c-9abf-3f7e0a4d1b21",
  "elapsed_sec": 0.0123,
  "data": {
    "id": 239758028,
    "bot": {
      "id": "8f3a7c1e9b5d24f6",
      "name": "Sample shopping bot"
    },
    "status": "done",
    "data_count": 1280,
    "union": false,
    "trigger": "period",
    "credits_used": 6400,
    "created_at": "2026-09-28T09:00:03+09:00",
    "updated_at": "2026-09-28T09:01:37+09:00",
    "plan": {
      "id": "512",
      "name": "주기 2",
      "label": "매주 월요일 09:00 (KST)",
      "scheduled_at": "2026-09-28T09:00:00+09:00"
    },
    "inputs": {
      "param1": {
        "name": "Keyword",
        "value": "sneakers"
      }
    },
    "started_at": "2026-09-28T09:00:03+09:00",
    "elapsed_sec": 94
  }
}

Read the data

Rows arrive limit at a time (default 100, maximum 1000). sorting is asc (default) or desc, and since keeps only rows created after that time (ISO 8601, KST). Do not change sorting while paging.

Each row is id, created_at and updated_at plus the values keyed by the bot's field names. They are the same columns as v4.

Example request
curl 'https://www.hashscraper.com/v5/api/datasets/239758028/results?limit=1000&sorting=asc' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Example response 200
{
  "result": "success",
  "version": "v5",
  "request_id": "req_5a8c1f1c-9b2d-4e7c-9abf-3f7e0a4d1b21",
  "elapsed_sec": 0.0123,
  "count": 1,
  "next_cursor": 91000001,
  "data": [
    {
      "id": 91000001,
      "created_at": "2026-09-28T09:00:40+09:00",
      "updated_at": "2026-09-28T09:00:40+09:00",
      "title": "Sneakers A",
      "price": "59000"
    }
  ]
}
Example request
curl 'https://www.hashscraper.com/v5/api/datasets/239758028/results?limit=1000&cursor=91000001' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Related guides