Browse AI

App · AI Agents · 18 actions

Point a Browse AI robot at a webpage and get structured data back, no scraper to write. Run a robot on demand or over a whole list of pages at once, read the text fields, tables, and screenshots it captured, schedule monitors that watch pages for changes, and have Browse AI call a webhook when a task finishes.

Actions

ActionWhat it does
Bulk run robotRun one robot over many sets of input parameters at once, a list of pages to scrape, for example.
Check system statusCheck whether Browse AI's task queue is running or under maintenance, to hold off starting robots while it is down.
Create monitorSet a robot to run on a schedule, for example every weekday at 09:00, to watch a page for changes.
Create webhookHave Browse AI POST to a URL whenever one of the robot's tasks finishes, fails, or captures changed data, with the task and its captured data in the request body.
Delete monitorDelete one of a robot's monitors so it stops running.
Delete webhookStop Browse AI calling one of the robot's webhooks.
Get bulk runFetch a bulk run's progress and a page of its tasks, with the data each one captured.
Get monitorFetch one of a robot's monitors: its schedule, whether it is active or paused (and why), its inputs, and its email settings.
Get robotFetch one robot by ID with the input parameters it accepts: each one's name, type, default, and, for number and select parameters, the range or choices it allows.
Get taskFetch one of a robot's tasks by ID, including everything it captured: text fields, list tables, and screenshots.
List bulk runsList a robot's bulk runs, newest first, with each one's status and how many of its tasks have succeeded or failed.
List monitorsList the monitors that run a robot on a schedule to watch pages for changes, with each one's schedule, status, and inputs.
List robotsList the robots on your Browse AI account, each with the input parameters it accepts: the starting point for finding a robot's ID and what to pass it.
List tasksList a robot's tasks with the data each one captured.
List webhooksList the URLs Browse AI calls when the robot's tasks finish, fail, or capture changed data.
Run robotRun a Browse AI robot once: it opens a real browser, follows the steps it was trained on, and extracts the data you recorded.
Update monitorChange a monitor's name, schedule, inputs, or email settings, or pause and resume it.
Update robot cookiesAdd or replace cookies the robot sends when it opens pages, such as a fresh session cookie so it stays signed in to a site.

Bulk run robot

Run one robot over many sets of input parameters at once, a list of pages to scrape, for example. Browse AI queues one task per entry (up to 50,000) and returns a bulk run ID; poll 'Get bulk run' with it until the run finishes to read the results.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').
Input parameters per taskinput_parameterslistRequired
A list of input parameter objects, one per task, for example [{"originUrl": "https://example.com/a"}, {"originUrl": "https://example.com/b"}].
Titletitletext
A name for the bulk run, shown on the Browse AI dashboard. Up to 200 characters.

Outputs

created_atnumber
When the bulk run was created, as a Unix timestamp in ms.
failed_tasksnumber
How many of those tasks have failed.
idtext
The bulk run's ID. Pass it to 'Get bulk run' to follow its progress and read the results.
robot_idtext
ID of the robot running the tasks.
statustext
One of in-progress, finished, paused, or stopped.
successful_tasksnumber
How many of those tasks have succeeded.
tasks_countnumber
How many tasks the bulk run queued.
titletext
The bulk run's title, if one was given.
Example output
{
  "created_at": 1678795867879,
  "failed_tasks": 0,
  "id": "5aa4df52-25bb-48da-bf38-ce4f2bd98dd5",
  "robot_id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06",
  "status": "in-progress",
  "successful_tasks": 0,
  "tasks_count": 2,
  "title": "Competitor pricing sweep"
}

Check system status

Check whether Browse AI's task queue is running or under maintenance, to hold off starting robots while it is down.

Inputs

None.

Outputs

is_operationaltrue/false
True while the task queue is OK.
tasks_queue_statustext
OK, or UNDER_MAINTENANCE.
Example output
{
  "is_operational": true,
  "tasks_queue_status": "OK"
}

Create monitor

Set a robot to run on a schedule, for example every weekday at 09:00, to watch a page for changes. Each check uses a task credit. Read the results with 'List tasks', or have Browse AI call a URL on each change with 'Create webhook'.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').
NamenametextRequired
A name for the monitor, shown on the Browse AI dashboard. Up to 200 characters.
CheckfrequencytextRequired
How often the monitor runs the robot.One of: hourly, daily, weekly. Default: daily.
Everyintervalnumber
Run every this many hours, days, or weeks, for example 2 with Hourly to check every two hours. Defaults to 1. Browse AI refuses schedules that check more often than your plan allows.Only when Check is Hourly, Daily or Weekly. At least 1.
On these daysweekdayslist
Only run on these days of the week. Leave empty for every day.Only when Check is Hourly, Daily or Weekly. One or more of: MO (Monday), TU (Tuesday), WE (Wednesday), TH (Thursday), FR (Friday), SA (Saturday), SU (Sunday).
At these hourshourslist
Hours of the day to run at, for example 09:00 and 17:00. Leave empty to run at any hour the frequency allows.Only when Check is Hourly, Daily or Weekly. One or more of: 0 (00:00), 1 (01:00), 2 (02:00), 3 (03:00), 4 (04:00), 5 (05:00), 6 (06:00), 7 (07:00), 8 (08:00), 9 (09:00), and 14 more.
Input parametersinput_parametersobject
Values the robot runs with on every check, one row per parameter (for example 'originUrl' set to the page to watch). Use the names 'Get robot' lists. Leave empty to use the robot's own defaults.
Email me when captured text changesnotify_on_text_changetrue/false
Have Browse AI email the account when a check captures different text from the last one.Default: false.
Email me when a screenshot changesnotify_on_screenshot_changetrue/false
Have Browse AI email the account when a captured screenshot changes by more than the threshold below.Default: false.
Screenshot change threshold (%)screenshot_change_thresholdnumber
How much a screenshot must change, as a percentage from 1 to 100, before Browse AI emails about it. Defaults to 15.From 1 to 100.

Outputs

created_atnumber
When the monitor was created, as a Unix timestamp in ms.
idtext
The monitor's ID.
input_parametersobject
The input parameters the robot runs with on each check.
nametext
The monitor's name.
notify_on_screenshot_changetrue/false
Whether Browse AI emails when a screenshot changes.
notify_on_text_changetrue/false
Whether Browse AI emails when captured text changes.
paused_atnumber
When the monitor was paused, as a Unix timestamp in ms.
paused_reasontext
Why a paused monitor stopped: lowCredits, tooManyFailures, userRequested, or userInactivity. Null while active.
scheduletext
When the monitor runs, as an RFC 5545 recurrence rule, for example FREQ=DAILY;INTERVAL=1;BYHOUR=9.
screenshot_change_thresholdnumber
Percentage a screenshot must change by before Browse AI emails.
statustext
Either active or paused.
updated_atnumber
When the monitor last changed, as a Unix timestamp in ms.
Example output
{
  "created_at": 1678795867879,
  "id": "8d2b6f0e-71c4-4f7a-9a3e-2c5d1b0f9e44",
  "input_parameters": {
    "originUrl": "https://example.com/pricing"
  },
  "name": "Pricing page \u2014 weekdays",
  "notify_on_screenshot_change": false,
  "notify_on_text_change": false,
  "paused_at": null,
  "paused_reason": null,
  "schedule": "FREQ=DAILY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR;BYHOUR=9",
  "screenshot_change_threshold": 15,
  "status": "active",
  "updated_at": 1678795867879
}

Create webhook

Have Browse AI POST to a URL whenever one of the robot's tasks finishes, fails, or captures changed data, with the task and its captured data in the request body. Browse AI retries a delivery up to three times if the URL doesn't answer 200.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').
Webhook URLurltextRequired
The http(s) URL Browse AI should POST each event to.
EventeventtextRequired
When Browse AI should call the URL.One of: taskFinished (A task finishes), taskFinishedSuccessfully (A task finishes successfully), taskFinishedWithError (A task fails), taskCapturedDataChanged (A task's captured data changes), tableExportFinishedSuccessfully (A table export finishes (beta)). Default: taskFinished.

Outputs

created_atnumber
When the webhook was created, as a Unix timestamp in ms.
eventtext
What the webhook fires on: taskFinished, taskFinishedSuccessfully, taskFinishedWithError, taskCapturedDataChanged, or tableExportFinishedSuccessfully.
idtext
The webhook's ID. Pass it to 'Delete webhook' to stop it.
urltext
The URL Browse AI POSTs the event to.
Example output
{
  "created_at": 1678795867879,
  "event": "taskFinishedSuccessfully",
  "id": "6d7f1218-43fb-4735-ac71-21e81b1ab23e",
  "url": "https://hooks.example.com/browse-ai/finished"
}

Delete monitor

Delete one of a robot's monitors so it stops running. The robot and the tasks the monitor already ran are kept.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').
Monitor IDmonitor_idtextRequired
The ID of the monitor (an 'id' returned by 'List monitors' or 'Create monitor', or the UUID in the address bar when you open the monitor on the Browse AI dashboard).

Outputs

deletedtrue/false
True once Browse AI has deleted it.
monitor_idtext
ID of the deleted monitor.
robot_idtext
ID of the robot the monitor belonged to.
Example output
{
  "deleted": true,
  "monitor_id": "8d2b6f0e-71c4-4f7a-9a3e-2c5d1b0f9e44",
  "robot_id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06"
}

Delete webhook

Stop Browse AI calling one of the robot's webhooks.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').
Webhook IDwebhook_idtextRequired
The ID of the webhook (the 'id' returned by 'Create webhook' or 'List webhooks').

Outputs

deletedtrue/false
True once Browse AI has deleted it.
robot_idtext
ID of the robot the webhook belonged to.
webhook_idtext
ID of the deleted webhook.
Example output
{
  "deleted": true,
  "robot_id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06",
  "webhook_id": "6d7f1218-43fb-4735-ac71-21e81b1ab23e"
}

Get bulk run

Fetch a bulk run's progress and a page of its tasks, with the data each one captured. Poll this after 'Bulk run robot' until 'is_finished' is true, then page through the tasks.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').
Bulk run IDbulk_run_idtextRequired
The ID of the bulk run (the 'id' returned by 'Bulk run robot' or 'List bulk runs').
Tasks pagepagenumber
Which page of the bulk run's tasks to return. Starts at 1.At least 1.

Outputs

created_atnumber
When the bulk run was created, as a Unix timestamp in ms.
failed_tasksnumber
How many of those tasks have failed.
has_moretrue/false
Whether another page of tasks is available.
idtext
The bulk run's ID. Pass it to 'Get bulk run' to follow its progress and read the results.
is_finishedtrue/false
True once the bulk run has finished or was stopped. False while tasks may still run.
page_numbernumber
Which page of tasks this is.
robot_idtext
ID of the robot running the tasks.
statustext
One of in-progress, finished, paused, or stopped.
successful_tasksnumber
How many of those tasks have succeeded.
taskslist
This page of the bulk run's tasks, with their captured data.
tasks_countnumber
How many tasks the bulk run queued.
tasks_total_countnumber
How many tasks the bulk run has so far.
titletext
The bulk run's title, if one was given.
Example output
{
  "created_at": 1678795867879,
  "failed_tasks": 0,
  "has_more": false,
  "id": "5aa4df52-25bb-48da-bf38-ce4f2bd98dd5",
  "is_finished": true,
  "page_number": 1,
  "robot_id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06",
  "status": "finished",
  "successful_tasks": 2,
  "tasks": [
    {
      "bulk_run_id": "5aa4df52-25bb-48da-bf38-ce4f2bd98dd5",
      "captured_data_url": "https://prod-browseai-captured-data.s3.amazonaws.com/example.json",
      "captured_lists": {
        "companies": [
          {
            "Position": "1",
            "description": "Book accommodations around the world.",
            "location": "San Francisco, CA, USA",
            "name": "Airbnb"
          },
          {
            "Position": "2",
            "description": "Buy, sell, and manage cryptocurrencies.",
            "location": "San Francisco, CA, USA",
            "name": "Coinbase"
          },
          {
            "Position": "3",
            "description": "Restaurant delivery.",
            "location": "San Francisco, CA, USA",
            "name": "DoorDash"
          }
        ]
      },
      "captured_screenshots": {},
      "captured_texts": {
        "Page Title": "Y Combinator Companies"
      },
      "created_at": 1678795867879,
      "error": null,
      "finished_at": 1678795901044,
      "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0",
      "input_parameters": {
        "companies_limit": 3,
        "originUrl": "https://www.ycombinator.com/companies"
      },
      "is_finished": true,
      "retried_by_task_id": null,
      "retried_original_task_id": null,
      "robot_id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06",
      "run_by_api": true,
      "run_by_monitor_id": null,
      "run_by_user_id": null,
      "started_at": 1678795869120,
      "status": "successful",
      "tried_recording_video": false,
      "video_removed_at": null,
      "video_url": null
    },
    {
      "bulk_run_id": "5aa4df52-25bb-48da-bf38-ce4f2bd98dd5",
      "captured_data_url": "https://prod-browseai-captured-data.s3.amazonaws.com/example.json",
      "captured_lists": {
        "companies": [
          {
            "Position": "1",
            "description": "Book accommodations around the world.",
            "location": "San Francisco, CA, USA",
            "name": "Airbnb"
          },
          {
            "Position": "2",
            "description": "Buy, sell, and manage cryptocurrencies.",
            "location": "San Francisco, CA, USA",
            "name": "Coinbase"
          },
          {
            "Position": "3",
            "description": "Restaurant delivery.",
            "location": "San Francisco, CA, USA",
            "name": "DoorDash"
          }
        ]
      },
      "captured_screenshots": {},
      "captured_texts": {
        "Page Title": "Y Combinator Companies"
      },
      "created_at": 1678795867879,
      "error": null,
      "finished_at": 1678795901044,
      "id": "a3e1c9d2-5b7f-4c8e-9d0a-1b2c3d4e5f60",
      "input_parameters": {
        "originUrl": "https://www.ycombinator.com/companies?batch=W24"
      },
      "is_finished": true,
      "retried_by_task_id": null,
      "retried_original_task_id": null,
      "robot_id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06",
      "run_by_api": true,
      "run_by_monitor_id": null,
      "run_by_user_id": null,
      "started_at": 1678795869120,
      "status": "successful",
      "tried_recording_video": false,
      "video_removed_at": null,
      "video_url": null
    }
  ],
  "tasks_count": 2,
  "tasks_total_count": 2,
  "title": "Competitor pricing sweep"
}

Get monitor

Fetch one of a robot's monitors: its schedule, whether it is active or paused (and why), its inputs, and its email settings.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').
Monitor IDmonitor_idtextRequired
The ID of the monitor (an 'id' returned by 'List monitors' or 'Create monitor', or the UUID in the address bar when you open the monitor on the Browse AI dashboard).

Outputs

created_atnumber
When the monitor was created, as a Unix timestamp in ms.
idtext
The monitor's ID.
input_parametersobject
The input parameters the robot runs with on each check.
nametext
The monitor's name.
notify_on_screenshot_changetrue/false
Whether Browse AI emails when a screenshot changes.
notify_on_text_changetrue/false
Whether Browse AI emails when captured text changes.
paused_atnumber
When the monitor was paused, as a Unix timestamp in ms.
paused_reasontext
Why a paused monitor stopped: lowCredits, tooManyFailures, userRequested, or userInactivity. Null while active.
scheduletext
When the monitor runs, as an RFC 5545 recurrence rule, for example FREQ=DAILY;INTERVAL=1;BYHOUR=9.
screenshot_change_thresholdnumber
Percentage a screenshot must change by before Browse AI emails.
statustext
Either active or paused.
updated_atnumber
When the monitor last changed, as a Unix timestamp in ms.
Example output
{
  "created_at": 1678795867879,
  "id": "8d2b6f0e-71c4-4f7a-9a3e-2c5d1b0f9e44",
  "input_parameters": {
    "originUrl": "https://example.com/pricing"
  },
  "name": "Pricing page \u2014 weekdays",
  "notify_on_screenshot_change": false,
  "notify_on_text_change": false,
  "paused_at": null,
  "paused_reason": null,
  "schedule": "FREQ=DAILY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR;BYHOUR=9",
  "screenshot_change_threshold": 15,
  "status": "active",
  "updated_at": 1678795867879
}

Get robot

Fetch one robot by ID with the input parameters it accepts: each one's name, type, default, and, for number and select parameters, the range or choices it allows.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').

Outputs

created_atnumber
When the robot was created, as a Unix timestamp in ms.
idtext
The robot's ID.
input_parameterslist
The input parameters the robot accepts.
nametext
The robot's name.
Example output
{
  "created_at": 1678795867879,
  "id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06",
  "input_parameters": [
    {
      "default_value": "https://www.ycombinator.com/companies",
      "encrypted": false,
      "label": "Origin URL",
      "max": null,
      "min": null,
      "name": "originUrl",
      "options": [],
      "required": true,
      "type": "url"
    },
    {
      "default_value": 10,
      "encrypted": false,
      "label": "Companies limit",
      "max": 200,
      "min": 1,
      "name": "companies_limit",
      "options": [],
      "required": false,
      "type": "number"
    }
  ],
  "name": "Extract companies from Y Combinator"
}

Get task

Fetch one of a robot's tasks by ID, including everything it captured: text fields, list tables, and screenshots. Poll this after 'Run robot' until 'is_finished' is true.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').
Task IDtask_idtextRequired
The ID of the task (the 'id' returned by 'Run robot' or 'List tasks').

Outputs

bulk_run_idtext
ID of the bulk run this task belongs to, if any.
captured_data_urltext
Temporary link to the full captured data as JSON, for results too large to inline.
captured_listsobject
The tables the robot captured, keyed by list name. Each value is an array of row objects.
captured_screenshotsobject
The screenshots the robot captured, keyed by screenshot name, each with a temporary 'src' link and its dimensions.
captured_textsobject
The single values the robot captured, keyed by the field name given in the recorder, for example {'Product Name': 'Alexis'}.
created_atnumber
When the task was created, as a Unix timestamp in ms.
errortext
Why the task failed, or null if it did not fail.
finished_atnumber
When the task finished, as a Unix timestamp in ms.
idtext
The task's ID.
input_parametersobject
The input parameters the robot ran with.
is_finishedtrue/false
True once the task is successful or failed. False while the robot is still working; poll 'Get task' until it turns true.
retried_by_task_idtext
ID of the task that retried this one, if any.
retried_original_task_idtext
ID of the task this one is a retry of, if any.
robot_idtext
ID of the robot that ran the task.
run_by_apitrue/false
Whether the task was started through the API.
run_by_monitor_idtext
ID of the monitor that started the task, if one did.
run_by_user_idtext
ID of the user who started the task, if a person did.
started_atnumber
When the task started, as a Unix timestamp in ms.
statustext
One of in-progress, successful, or failed.
tried_recording_videotrue/false
Whether the robot tried to record a video of the run.
video_removed_atnumber
When the recording was deleted at the end of the account's data retention period, as a Unix timestamp in ms.
video_urltext
Temporary link to the session recording, when one was made.
Example output
{
  "bulk_run_id": null,
  "captured_data_url": "https://prod-browseai-captured-data.s3.amazonaws.com/example.json",
  "captured_lists": {
    "companies": [
      {
        "Position": "1",
        "description": "Book accommodations around the world.",
        "location": "San Francisco, CA, USA",
        "name": "Airbnb"
      },
      {
        "Position": "2",
        "description": "Buy, sell, and manage cryptocurrencies.",
        "location": "San Francisco, CA, USA",
        "name": "Coinbase"
      },
      {
        "Position": "3",
        "description": "Restaurant delivery.",
        "location": "San Francisco, CA, USA",
        "name": "DoorDash"
      }
    ]
  },
  "captured_screenshots": {},
  "captured_texts": {
    "Page Title": "Y Combinator Companies"
  },
  "created_at": 1678795867879,
  "error": null,
  "finished_at": 1678795901044,
  "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0",
  "input_parameters": {
    "companies_limit": 3,
    "originUrl": "https://www.ycombinator.com/companies"
  },
  "is_finished": true,
  "retried_by_task_id": null,
  "retried_original_task_id": null,
  "robot_id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06",
  "run_by_api": true,
  "run_by_monitor_id": null,
  "run_by_user_id": null,
  "started_at": 1678795869120,
  "status": "successful",
  "tried_recording_video": false,
  "video_removed_at": null,
  "video_url": null
}

List bulk runs

List a robot's bulk runs, newest first, with each one's status and how many of its tasks have succeeded or failed.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').
Pagepagenumber
Which page of results to return. Starts at 1.At least 1.

Outputs

bulk_runslist
The robot's bulk runs.
has_moretrue/false
Whether another page is available.
page_numbernumber
Which page these bulk runs came from.
total_countnumber
How many bulk runs the robot has had.
Example output
{
  "bulk_runs": [
    {
      "created_at": 1678795867879,
      "failed_tasks": 0,
      "id": "5aa4df52-25bb-48da-bf38-ce4f2bd98dd5",
      "robot_id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06",
      "status": "in-progress",
      "successful_tasks": 0,
      "tasks_count": 2,
      "title": "Competitor pricing sweep"
    },
    {
      "created_at": 1678695867879,
      "failed_tasks": 2,
      "id": "0c1f5e7a-9b3d-4e2f-8a6c-5d4b3a2f1e0d",
      "robot_id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06",
      "status": "finished",
      "successful_tasks": 118,
      "tasks_count": 120,
      "title": "Product catalogue refresh"
    }
  ],
  "has_more": false,
  "page_number": 1,
  "total_count": 2
}

List monitors

List the monitors that run a robot on a schedule to watch pages for changes, with each one's schedule, status, and inputs.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').

Outputs

monitorslist
The robot's monitors.
total_countnumber
How many monitors the robot has.
Example output
{
  "monitors": [
    {
      "created_at": 1678795867879,
      "id": "8d2b6f0e-71c4-4f7a-9a3e-2c5d1b0f9e44",
      "input_parameters": {
        "originUrl": "https://example.com/pricing"
      },
      "name": "Pricing page \u2014 weekdays",
      "notify_on_screenshot_change": false,
      "notify_on_text_change": false,
      "paused_at": null,
      "paused_reason": null,
      "schedule": "FREQ=DAILY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR;BYHOUR=9",
      "screenshot_change_threshold": 15,
      "status": "active",
      "updated_at": 1678795867879
    },
    {
      "created_at": 1678795867879,
      "id": "2f9c4a1b-6e3d-4b8a-a7c5-0d1e2f3a4b5c",
      "input_parameters": {
        "originUrl": "https://example.com/careers"
      },
      "name": "Careers page \u2014 hourly",
      "notify_on_screenshot_change": false,
      "notify_on_text_change": false,
      "paused_at": 1679795867879,
      "paused_reason": "userRequested",
      "schedule": "FREQ=HOURLY;INTERVAL=1",
      "screenshot_change_threshold": 15,
      "status": "paused",
      "updated_at": 1678795867879
    }
  ],
  "total_count": 2
}

List robots

List the robots on your Browse AI account, each with the input parameters it accepts: the starting point for finding a robot's ID and what to pass it.

Inputs

None.

Outputs

robotslist
The robots on the account.
total_countnumber
How many robots the account has.
Example output
{
  "robots": [
    {
      "created_at": 1678795867879,
      "id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06",
      "input_parameters": [
        {
          "default_value": "https://www.ycombinator.com/companies",
          "encrypted": false,
          "label": "Origin URL",
          "max": null,
          "min": null,
          "name": "originUrl",
          "options": [],
          "required": true,
          "type": "url"
        },
        {
          "default_value": 10,
          "encrypted": false,
          "label": "Companies limit",
          "max": 200,
          "min": 1,
          "name": "companies_limit",
          "options": [],
          "required": false,
          "type": "number"
        }
      ],
      "name": "Extract companies from Y Combinator"
    },
    {
      "created_at": 1679795867879,
      "id": "c3689adb-50aa-44af-b265-a7e0d4e5846e",
      "input_parameters": [
        {
          "default_value": "https://example.com/pricing",
          "encrypted": false,
          "label": "Origin URL",
          "max": null,
          "min": null,
          "name": "originUrl",
          "options": [],
          "required": true,
          "type": "url"
        }
      ],
      "name": "Monitor competitor pricing page"
    }
  ],
  "total_count": 2
}

List tasks

List a robot's tasks with the data each one captured. Filter by status to pick up only successful runs, or by bulk run ID to collect the results of a bulk run.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').
Statusstatustext
Only return tasks with this status. Leave blank for all.One of: successful, failed, in-progress (In progress).
Pagepagenumber
Which page of results to return. Starts at 1.At least 1.
Page sizepage_sizenumber
How many tasks to return per page, from 1 to 10. Defaults to Browse AI's own page size.From 1 to 10.
Bulk run IDbulk_run_idtext
Only return the tasks that belong to this bulk run (the 'id' returned by 'Bulk run robot' or 'List bulk runs').
Sort bysorttext
Comma-separated fields to sort by, such as '-createdAt'. A leading '-' sorts newest first; without it, oldest first.
Include retried tasksinclude_retriedtrue/false
Include tasks that were later retried. Turn this off to see only the task that ended up counting.Default: true.
Created afterfrom_datedate and time
Only return tasks created at or after this time.
Created beforeto_datedate and time
Only return tasks created at or before this time.

Outputs

has_moretrue/false
Whether another page of tasks is available.
page_numbernumber
Which page these tasks came from.
taskslist
The matching tasks, with their captured data.
total_countnumber
How many tasks match the filters.
Example output
{
  "has_more": false,
  "page_number": 1,
  "tasks": [
    {
      "bulk_run_id": null,
      "captured_data_url": "https://prod-browseai-captured-data.s3.amazonaws.com/example.json",
      "captured_lists": {
        "companies": [
          {
            "Position": "1",
            "description": "Book accommodations around the world.",
            "location": "San Francisco, CA, USA",
            "name": "Airbnb"
          },
          {
            "Position": "2",
            "description": "Buy, sell, and manage cryptocurrencies.",
            "location": "San Francisco, CA, USA",
            "name": "Coinbase"
          },
          {
            "Position": "3",
            "description": "Restaurant delivery.",
            "location": "San Francisco, CA, USA",
            "name": "DoorDash"
          }
        ]
      },
      "captured_screenshots": {},
      "captured_texts": {
        "Page Title": "Y Combinator Companies"
      },
      "created_at": 1678795867879,
      "error": null,
      "finished_at": 1678795901044,
      "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0",
      "input_parameters": {
        "companies_limit": 3,
        "originUrl": "https://www.ycombinator.com/companies"
      },
      "is_finished": true,
      "retried_by_task_id": null,
      "retried_original_task_id": null,
      "robot_id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06",
      "run_by_api": true,
      "run_by_monitor_id": null,
      "run_by_user_id": null,
      "started_at": 1678795869120,
      "status": "successful",
      "tried_recording_video": false,
      "video_removed_at": null,
      "video_url": null
    }
  ],
  "total_count": 1
}

List webhooks

List the URLs Browse AI calls when the robot's tasks finish, fail, or capture changed data.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').

Outputs

total_countnumber
How many webhooks the robot has.
webhookslist
The robot's webhooks.
Example output
{
  "total_count": 2,
  "webhooks": [
    {
      "created_at": 1678795867879,
      "event": "taskFinishedSuccessfully",
      "id": "6d7f1218-43fb-4735-ac71-21e81b1ab23e",
      "url": "https://hooks.example.com/browse-ai/finished"
    },
    {
      "created_at": 1679795867879,
      "event": "taskCapturedDataChanged",
      "id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
      "url": "https://hooks.example.com/browse-ai/changed"
    }
  ]
}

Run robot

Run a Browse AI robot once: it opens a real browser, follows the steps it was trained on, and extracts the data you recorded. The robot works in the background: this action returns a task ID straight away, so follow it with 'Get task' until the task finishes to read the captured data, or have Browse AI call a URL when it does with 'Create webhook'.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').
Input parametersinput_parametersobject
Values to run the robot with, one row per parameter (for example 'originUrl' set to the page to open). Use the parameter names the robot declares, which 'List robots' returns under 'input_parameters'. Leave this empty to use the robot's own defaults.
Record a videorecord_videotrue/false
Try to record a video of the run, viewable on the Browse AI dashboard. Browse AI skips recording on pages that are too heavy, so it is not guaranteed.Default: false.

Outputs

bulk_run_idtext
ID of the bulk run this task belongs to, if any.
captured_data_urltext
Temporary link to the full captured data as JSON, for results too large to inline.
captured_listsobject
The tables the robot captured, keyed by list name. Each value is an array of row objects.
captured_screenshotsobject
The screenshots the robot captured, keyed by screenshot name, each with a temporary 'src' link and its dimensions.
captured_textsobject
The single values the robot captured, keyed by the field name given in the recorder, for example {'Product Name': 'Alexis'}.
created_atnumber
When the task was created, as a Unix timestamp in ms.
errortext
Why the task failed, or null if it did not fail.
finished_atnumber
When the task finished, as a Unix timestamp in ms.
idtext
The task's ID.
input_parametersobject
The input parameters the robot ran with.
is_finishedtrue/false
True once the task is successful or failed. False while the robot is still working; poll 'Get task' until it turns true.
retried_by_task_idtext
ID of the task that retried this one, if any.
retried_original_task_idtext
ID of the task this one is a retry of, if any.
robot_idtext
ID of the robot that ran the task.
run_by_apitrue/false
Whether the task was started through the API.
run_by_monitor_idtext
ID of the monitor that started the task, if one did.
run_by_user_idtext
ID of the user who started the task, if a person did.
started_atnumber
When the task started, as a Unix timestamp in ms.
statustext
One of in-progress, successful, or failed.
tried_recording_videotrue/false
Whether the robot tried to record a video of the run.
video_removed_atnumber
When the recording was deleted at the end of the account's data retention period, as a Unix timestamp in ms.
video_urltext
Temporary link to the session recording, when one was made.
Example output
{
  "bulk_run_id": null,
  "captured_data_url": null,
  "captured_lists": {},
  "captured_screenshots": {},
  "captured_texts": {},
  "created_at": 1678795867879,
  "error": null,
  "finished_at": null,
  "id": "f6fb62b6-f06a-4bf7-a623-c6a35c2e70b0",
  "input_parameters": {
    "companies_limit": 3,
    "originUrl": "https://www.ycombinator.com/companies"
  },
  "is_finished": false,
  "retried_by_task_id": null,
  "retried_original_task_id": null,
  "robot_id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06",
  "run_by_api": true,
  "run_by_monitor_id": null,
  "run_by_user_id": null,
  "started_at": 1678795869120,
  "status": "in-progress",
  "tried_recording_video": false,
  "video_removed_at": null,
  "video_url": null
}

Update monitor

Change a monitor's name, schedule, inputs, or email settings, or pause and resume it. Only the fields you fill in change.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').
Monitor IDmonitor_idtextRequired
The ID of the monitor (an 'id' returned by 'List monitors' or 'Create monitor', or the UUID in the address bar when you open the monitor on the Browse AI dashboard).
Statusstatustext
Pause the monitor to stop its checks, or set it active to resume them. Leave blank to keep the current status.One of: active, paused.
Namenametext
A new name for the monitor. Leave blank to keep the current one.
Checkfrequencytext
Choose a frequency to change the monitor's schedule. Leave blank to keep the current one.One of: hourly, daily, weekly.
Everyintervalnumber
Run every this many hours, days, or weeks, for example 2 with Hourly to check every two hours. Defaults to 1. Browse AI refuses schedules that check more often than your plan allows.Only when Check is Hourly, Daily or Weekly. At least 1.
On these daysweekdayslist
Only run on these days of the week. Leave empty for every day.Only when Check is Hourly, Daily or Weekly. One or more of: MO (Monday), TU (Tuesday), WE (Wednesday), TH (Thursday), FR (Friday), SA (Saturday), SU (Sunday).
At these hourshourslist
Hours of the day to run at, for example 09:00 and 17:00. Leave empty to run at any hour the frequency allows.Only when Check is Hourly, Daily or Weekly. One or more of: 0 (00:00), 1 (01:00), 2 (02:00), 3 (03:00), 4 (04:00), 5 (05:00), 6 (06:00), 7 (07:00), 8 (08:00), 9 (09:00), and 14 more.
Input parametersinput_parametersobject
Values the robot runs with on every check, one row per parameter (for example 'originUrl' set to the page to watch). Use the names 'Get robot' lists. Leave empty to keep the current ones.
Email me when captured text changesnotify_on_text_changetrue/false
Have Browse AI email the account when a check captures different text from the last one. Leave blank to keep the current setting.
Email me when a screenshot changesnotify_on_screenshot_changetrue/false
Have Browse AI email the account when a captured screenshot changes by more than the threshold below. Leave blank to keep the current setting.
Screenshot change threshold (%)screenshot_change_thresholdnumber
How much a screenshot must change, as a percentage from 1 to 100, before Browse AI emails about it. Leave blank to keep the current setting.From 1 to 100.

Outputs

created_atnumber
When the monitor was created, as a Unix timestamp in ms.
idtext
The monitor's ID.
input_parametersobject
The input parameters the robot runs with on each check.
nametext
The monitor's name.
notify_on_screenshot_changetrue/false
Whether Browse AI emails when a screenshot changes.
notify_on_text_changetrue/false
Whether Browse AI emails when captured text changes.
paused_atnumber
When the monitor was paused, as a Unix timestamp in ms.
paused_reasontext
Why a paused monitor stopped: lowCredits, tooManyFailures, userRequested, or userInactivity. Null while active.
scheduletext
When the monitor runs, as an RFC 5545 recurrence rule, for example FREQ=DAILY;INTERVAL=1;BYHOUR=9.
screenshot_change_thresholdnumber
Percentage a screenshot must change by before Browse AI emails.
statustext
Either active or paused.
updated_atnumber
When the monitor last changed, as a Unix timestamp in ms.
Example output
{
  "created_at": 1678795867879,
  "id": "8d2b6f0e-71c4-4f7a-9a3e-2c5d1b0f9e44",
  "input_parameters": {
    "originUrl": "https://example.com/pricing"
  },
  "name": "Pricing page \u2014 weekdays",
  "notify_on_screenshot_change": false,
  "notify_on_text_change": false,
  "paused_at": 1679795867879,
  "paused_reason": "userRequested",
  "schedule": "FREQ=DAILY;INTERVAL=1;BYWEEKDAY=MO,TU,WE,TH,FR;BYHOUR=9",
  "screenshot_change_threshold": 15,
  "status": "paused",
  "updated_at": 1679795867879
}

Update robot cookies

Add or replace cookies the robot sends when it opens pages, such as a fresh session cookie so it stays signed in to a site. Cookies with the same name are replaced; the step's output lists the cookies without their values.

Inputs

Robot IDrobot_idtextRequired
The ID of the robot to use (the UUID in the address bar when you open the robot on the Browse AI dashboard, or an 'id' returned by 'List robots').
CookiescookieslistRequired
The cookies to set, each with a 'name', a 'value' and the 'domain' it is for, and optionally 'path' (/ if left out), 'expirationDate' (seconds since 1970), and 'secure', 'httpOnly' and 'hostOnly' (off if left out). A cookie export from a browser extension can be pasted as is; settings Browse AI doesn't store are dropped.

Outputs

cookieslist
The cookies as Browse AI stored them, without their values.
robot_idtext
ID of the robot the cookies were set on.
updated_countnumber
How many cookies were sent.
Example output
{
  "cookies": [
    {
      "domain": ".example.com",
      "expiration_date": 1723659417,
      "host_only": false,
      "http_only": true,
      "name": "session_id",
      "path": "/",
      "secure": true
    },
    {
      "domain": ".example.com",
      "expiration_date": 1755195417,
      "host_only": false,
      "http_only": false,
      "name": "locale",
      "path": "/",
      "secure": false
    }
  ],
  "robot_id": "4f5cd7ff-6c98-4cac-8cf0-d7d0cb050b06",
  "updated_count": 2
}

On this page