Bots V5 (beta)

Read your bot list and the detail of one bot.

A bot bundles a target site with how it is collected (schedules in v4). Both the list and the detail are read-only. Collection inputs live in Settings and automatic collection in Plans.

Endpoints

  • GET /v5/api/bots Your bots: name, credits per item, plan summary and latest collection
  • GET /v5/api/bots/{bot_id} One bot: the fields above plus a settings and notifications summary

Bot list

Bots arrive in creation order (oldest first). Page with limit (default 100, maximum 1000) and cursor. Hidden bots are not listed.

Example request
curl 'https://www.hashscraper.com/v5/api/bots?limit=50' \
  -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": null,
  "data": [
    {
      "id": "8f3a7c1e9b5d24f6",
      "name": "Sample shopping bot",
      "description": "Collects product lists by keyword.",
      "schedule_group": null,
      "union": false,
      "created_at": "2026-08-12T10:21:05+09:00",
      "updated_at": "2026-10-01T18:02:40+09:00",
      "worker_source": {
        "name": "Shopping list",
        "version": 12,
        "updated_at": "2026-09-20T11:00:00+09:00",
        "price": 5
      },
      "credit_per_item": 5,
      "plans_count": 2,
      "active_plans": [
        {
          "id": "512",
          "name": "주기 2",
          "label": "매주 월요일 09:00 (KST)"
        }
      ],
      "period_summary": "주기 2 · 매주 월요일 09:00 (KST)",
      "next_run_at": "2026-10-05T09:00:00+09:00",
      "latest_dataset": {
        "id": 239758028,
        "status": "done",
        "data_count": 1280,
        "trigger": "period",
        "created_at": "2026-09-28T09:00:03+09:00"
      }
    }
  ]
}

Response fields

FieldDescription
idThe bot ID. Use it as {bot_id} in the other paths.
name, descriptionBot name and description.
schedule_groupThe group it belongs to (id, name, name_en), or null.
unionWhether the setting that accumulates results (union) is on.
worker_sourceCollection method info (name, version, updated_at, price).
credit_per_itemCredits per collected item.
plans_countNumber of plans. null for accounts where multiple plans are not open.
active_plansPlans that are on, [{ id, name, label }]. id is a string.
period_summaryA one-line sentence (in Korean) summarizing the plans that are on, or null when there is none.
next_run_atThe nearest next run among plans that are on, or null.
latest_datasetThe latest collection { id, status, data_count, trigger, created_at }, or null if there is none yet.
created_at, updated_atWhen the bot was created and last changed.

Accounts without multiple plans

If multiple plans are not open on the account yet, plans_count is null, active_plans is an empty array, and only the single legacy plan arrives as period_summary. The plan paths are closed with 404 PLAN_NOT_FOUND.

Example response 200
{
  "result": "success",
  "version": "v5",
  "request_id": "req_5a8c1f1c-9b2d-4e7c-9abf-3f7e0a4d1b21",
  "elapsed_sec": 0.0123,
  "count": 1,
  "next_cursor": null,
  "data": [
    {
      "id": "8f3a7c1e9b5d24f6",
      "name": "Sample shopping bot",
      "description": "Collects product lists by keyword.",
      "schedule_group": null,
      "union": false,
      "created_at": "2026-08-12T10:21:05+09:00",
      "updated_at": "2026-10-01T18:02:40+09:00",
      "worker_source": {
        "name": "Shopping list",
        "version": 12,
        "updated_at": "2026-09-20T11:00:00+09:00",
        "price": 5
      },
      "credit_per_item": 5,
      "plans_count": null,
      "active_plans": [],
      "period_summary": "매일 09:00 (KST)",
      "next_run_at": "2026-10-05T09:00:00+09:00",
      "latest_dataset": {
        "id": 239758028,
        "status": "done",
        "data_count": 1280,
        "trigger": "period",
        "created_at": "2026-09-28T09:00:03+09:00"
      }
    }
  ]
}

One bot

On top of the list fields you get settings (input_mode, union_enabled) and notifications (webhook.enabled, slack.enabled, slack.channel). Read the details in Settings and Notifications.

Example request
curl 'https://www.hashscraper.com/v5/api/bots/8f3a7c1e9b5d24f6' \
  -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": "8f3a7c1e9b5d24f6",
    "name": "Sample shopping bot",
    "description": "Collects product lists by keyword.",
    "schedule_group": null,
    "union": false,
    "created_at": "2026-08-12T10:21:05+09:00",
    "updated_at": "2026-10-01T18:02:40+09:00",
    "worker_source": {
      "name": "Shopping list",
      "version": 12,
      "updated_at": "2026-09-20T11:00:00+09:00",
      "price": 5
    },
    "credit_per_item": 5,
    "plans_count": 2,
    "active_plans": [
      {
        "id": "512",
        "name": "주기 2",
        "label": "매주 월요일 09:00 (KST)"
      }
    ],
    "period_summary": "주기 2 · 매주 월요일 09:00 (KST)",
    "next_run_at": "2026-10-05T09:00:00+09:00",
    "latest_dataset": {
      "id": 239758028,
      "status": "done",
      "data_count": 1280,
      "trigger": "period",
      "created_at": "2026-09-28T09:00:03+09:00"
    },
    "settings": {
      "input_mode": "direct",
      "union_enabled": false
    },
    "notifications": {
      "webhook": {
        "enabled": true
      },
      "slack": {
        "enabled": false,
        "channel": null
      }
    }
  }
}

When it cannot be found

A bot that does not exist, is hidden, or belongs to someone else is always the same 404 BOT_NOT_FOUND. We never reveal whether another account's bot exists.

Related guides