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/datasetsList with filters -
GET
/v5/api/datasets/{dataset_id}Status, count, duration, credits, how it started, plan and conditions -
GET
/v5/api/datasets/{dataset_id}/resultsThe 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.
| Parameter | Description |
|---|---|
bot_id | Only datasets of this bot. |
plan_id | Only 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. |
trigger | How it started: see the table below. |
status | Status: see the table below. |
from, to | Creation time range. ISO 8601 or YYYY-MM-DD (KST). |
cursor, limit | Paging. limit defaults to 100, maximum 1000. |
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'{
"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"
}
]
}curl 'https://www.hashscraper.com/v5/api/datasets?plan_id=512' \
-H 'Authorization: Bearer YOUR_API_KEY'How it started: trigger
| Value | Meaning |
|---|---|
manual | A collection started by hand on screen. |
api | A collection started through the API (including v5 collections). |
period | A collection a plan started at its scheduled time. |
period_manual | A collection started with "Run now" on a plan. |
excel | A collection started from Excel. |
Status: status
| Value | Meaning |
|---|---|
waiting | Waiting to start. |
running | Collecting. |
retrying | Retrying. |
done | Finished. |
attention | Needs attention: it ended with a notice attached (for example no search results) or stalled without updates for a long time. |
failed | Failed. |
canceling | Canceling. |
canceled | Canceled. |
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.
| Field | Description |
|---|---|
trigger | A 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. |
inputs | The conditions used for that collection { param1: { name, value } }. null for union datasets filled from Excel rows. |
credits_used | Credits used (integer). |
empty_reason | Why 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_count | Number of collected items. |
curl 'https://www.hashscraper.com/v5/api/datasets/239758028' \
-H 'Authorization: Bearer YOUR_API_KEY'{
"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.
curl 'https://www.hashscraper.com/v5/api/datasets/239758028/results?limit=1000&sorting=asc' \
-H 'Authorization: Bearer YOUR_API_KEY'{
"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"
}
]
}curl 'https://www.hashscraper.com/v5/api/datasets/239758028/results?limit=1000&cursor=91000001' \
-H 'Authorization: Bearer YOUR_API_KEY'