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
| Action | What it does |
|---|---|
| Bulk run robot | Run one robot over many sets of input parameters at once, a list of pages to scrape, for example. |
| Check system status | Check whether Browse AI's task queue is running or under maintenance, to hold off starting robots while it is down. |
| Create monitor | Set a robot to run on a schedule, for example every weekday at 09:00, to watch a page for changes. |
| 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. |
| Delete monitor | Delete one of a robot's monitors so it stops running. |
| Delete webhook | Stop Browse AI calling one of the robot's webhooks. |
| Get bulk run | Fetch a bulk run's progress and a page of its tasks, with the data each one captured. |
| 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. |
| 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. |
| Get task | Fetch one of a robot's tasks by ID, including everything it captured: text fields, list tables, and screenshots. |
| 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. |
| 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. |
| 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. |
| List tasks | List a robot's tasks with the data each one captured. |
| List webhooks | List the URLs Browse AI calls when the robot's tasks finish, fail, or capture changed data. |
| 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. |
| Update monitor | Change a monitor's name, schedule, inputs, or email settings, or pause and resume it. |
| 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. |
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 ID
robot_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 task
input_parameterslistRequired - A list of input parameter objects, one per task, for example [{"originUrl": "https://example.com/a"}, {"originUrl": "https://example.com/b"}].
- Title
titletext - 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 ID
robot_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').
- Name
nametextRequired - A name for the monitor, shown on the Browse AI dashboard. Up to 200 characters.
- Check
frequencytextRequired - How often the monitor runs the robot.One of:
hourly,daily,weekly. Default:daily. - Every
intervalnumber - 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 days
weekdayslist - 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 hours
hourslist - 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 parameters
input_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 changes
notify_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 changes
notify_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 ID
robot_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 URL
urltextRequired - The http(s) URL Browse AI should POST each event to.
- Event
eventtextRequired - 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 ID
robot_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 ID
monitor_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 ID
robot_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 ID
webhook_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 ID
robot_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 ID
bulk_run_idtextRequired - The ID of the bulk run (the 'id' returned by 'Bulk run robot' or 'List bulk runs').
- Tasks page
pagenumber - 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 ID
robot_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 ID
monitor_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 ID
robot_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 ID
robot_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 ID
task_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 ID
robot_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').
- Page
pagenumber - 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 ID
robot_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 ID
robot_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').
- Status
statustext - Only return tasks with this status. Leave blank for all.One of:
successful,failed,in-progress(In progress). - Page
pagenumber - Which page of results to return. Starts at 1.At least 1.
- Page size
page_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 ID
bulk_run_idtext - Only return the tasks that belong to this bulk run (the 'id' returned by 'Bulk run robot' or 'List bulk runs').
- Sort by
sorttext - Comma-separated fields to sort by, such as '-createdAt'. A leading '-' sorts newest first; without it, oldest first.
- Include retried tasks
include_retriedtrue/false - Include tasks that were later retried. Turn this off to see only the task that ended up counting.Default:
true. - Created after
from_datedate and time - Only return tasks created at or after this time.
- Created before
to_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 ID
robot_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 ID
robot_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
input_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 video
record_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 ID
robot_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 ID
monitor_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).
- Status
statustext - 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. - Name
nametext - A new name for the monitor. Leave blank to keep the current one.
- Check
frequencytext - Choose a frequency to change the monitor's schedule. Leave blank to keep the current one.One of:
hourly,daily,weekly. - Every
intervalnumber - 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 days
weekdayslist - 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 hours
hourslist - 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 parameters
input_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 changes
notify_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 changes
notify_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 ID
robot_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').
- Cookies
cookieslistRequired - 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
}