Execute actions in the browser
Interact with the browser by executing a sequence of specific actions.
Google Chrome Action
Customization Options
Configurable fields you can adjust in your automation
Control Google Chrome from Botize by sending a recipe: a JSON list of steps that the extension will play in order on the connected tab.
This page documents the full recipe format: how to build one, every action available, and how elements are matched on the page.
Recipe format
A recipe is a JSON object with a single steps array:
{
"steps": [
{ "action": "navigate", "url": "https://example.com" },
{ "action": "click", "role": "button", "name": "Accept" }
]
}
Steps run sequentially. If any step fails, the recipe stops and reports the error back to Botize.
Recording a recipe
The fastest way to build a recipe is to record it:
- Open the Botize extension popup on the tab you want to automate.
- Click ● REC and perform the actions (click, type, navigate…).
- Click â– STOP to finish.
- Click ↓ Export to download the recipe as JSON.
You can then tweak the JSON manually or import it again with ↑ Import.
How elements are matched
Actions that interact with the page (click, type, paste) locate elements using the ARIA accessibility tree, not CSS selectors. This makes recipes resilient to cosmetic HTML changes.
Each interactive step uses these fields to find its target:
| Field | Description |
|---|---|
role | The ARIA role of the element (button, link, textbox, checkbox…). |
name | The accessible name — usually the visible label or aria-label. |
nameStartsWith | (optional) Prefix match on the name. Useful when the name contains dynamic data (user names, counters, timestamps). When set, name is ignored. |
parentRole | (optional) Narrows the search to elements inside a specific parent role. |
parentName | (optional) Combined with parentRole, requires the parent to also match. |
When several elements match, the first one in document order wins — so on a list of followers, a click step with nameStartsWith: "Follow" will always target the first follower.
Navigation actions
navigate
Load a URL in the current tab and wait for it to finish loading.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | yes | The URL to open. |
{ "action": "navigate", "url": "https://example.com" }
wait
Pause the recipe for a fixed amount of time.
| Parameter | Type | Required | Description |
|---|---|---|---|
ms | number | no | Milliseconds to wait. Default: 1000. |
{ "action": "wait", "ms": 2500 }
Interaction actions
click
Click on an element located via ARIA.
| Parameter | Type | Required | Description |
|---|---|---|---|
role | string | yes | ARIA role of the target. |
name | string | yes* | Accessible name. *Optional when using nameStartsWith. |
nameStartsWith | string | no | Prefix match for the name. |
parentRole | string | no | Restrict to a parent role. |
parentName | string | no | Restrict to a parent name. |
wait_for_navigation | boolean | no | If true, waits for the page to reload after the click. |
delay | number | no | Delay before executing the step, in ms. |
{ "action": "click", "role": "button", "name": "Add to cart" }
type
Type text into an input or textbox. The field must already have focus — usually preceded by a click step on the input.
| Parameter | Type | Required | Description |
|---|---|---|---|
role | string | yes | ARIA role of the input (textbox, searchbox, combobox…). |
name | string | yes | Accessible name of the input. |
text | string | yes | Text to type. |
parentRole, parentName, nameStartsWith | no | Same matching fields as click. |
{ "action": "type", "role": "searchbox", "name": "Search", "text": "botize" }
paste
Paste a file (image, document…) into a file-drop area or editor that accepts paste events.
| Parameter | Type | Required | Description |
|---|---|---|---|
role, name, … | Same matching fields as click. | ||
file_url | string | yes | Public URL of the file to paste. |
{
"action": "paste",
"role": "textbox",
"name": "Message",
"file_url": "https://cdn.example.com/photo.jpg"
}
Data extraction actions
Extraction actions populate the Data from Browser output returned to Botize. You can combine several in the same recipe.
get_aria_tree
Return the accessibility tree of the current page. Ideal for letting an AI understand the page structure.
| Parameter | Type | Default | Description |
|---|---|---|---|
filter | string | interactive | interactive keeps only actionable nodes (buttons, links, inputs…). all keeps everything. |
include_headings | boolean | false | Include heading nodes even in interactive mode. |
max_nodes | number | 500 | Hard cap to prevent huge payloads. |
{ "action": "get_aria_tree", "filter": "interactive", "include_headings": true }
get_landmark_text
Extract the visible text of the page grouped by ARIA landmark (main, navigation, banner, contentinfo, complementary, search, region). Best suited for product pages, articles and content-heavy pages.
| Parameter | Type | Default | Description |
|---|---|---|---|
sections | string[] | all | Limit the output to specific landmarks. |
include_links | boolean | false | Include the list of links inside each landmark. |
include_images | boolean | false | Include the list of images inside each landmark. |
{
"action": "get_landmark_text",
"sections": ["main"],
"include_links": true,
"include_images": true
}
get_page_elements
Extract repeating items (search results, product cards, posts…) grouped by their semantic section and parent.
| Parameter | Type | Default | Description |
|---|---|---|---|
item_role | string | listitem | ARIA role of the items to extract. |
sections | string[] | all | Limit to specific landmarks. |
paths | string[] | — | Narrow the output to specific branches, e.g. "main > list_results". |
{ "action": "get_page_elements", "item_role": "listitem", "sections": ["main"] }
Each extracted item includes its text, outbound links and images.
screenshot
Capture a JPEG screenshot of the current tab.
| Parameter | Type | Default | Description |
|---|---|---|---|
full_page | boolean | false | If true, captures the full scrollable page instead of just the viewport. |
{ "action": "screenshot", "full_page": true }
The screenshot is returned in the Screenshot URL output.
extract
Extract a single value (text or image) from the page. Typically generated by clicking Extract on the recorder; manual use is uncommon.
| Parameter | Type | Description |
|---|---|---|
name | string | Name of the variable to store the value under. |
xpaths | string[] | XPath candidates. The extension picks the value confirmed by most paths. |
isImage | boolean | If true, extracts src instead of text. |
{ "action": "extract", "name": "price", "xpaths": ["//span[@data-price]"] }
Example: product page scrape
{
"steps": [
{ "action": "navigate", "url": "https://example-shop.com/product/123" },
{
"action": "get_landmark_text",
"sections": ["main"],
"include_images": true
},
{ "action": "screenshot" }
]
}
Example: click the first follow-back button on X
{
"steps": [
{ "action": "navigate", "url": "https://x.com/your-handle/followers" },
{
"action": "click",
"role": "button",
"nameStartsWith": "Follow back",
"parentRole": "generic",
"parentName": "Follow back"
}
]
}
Information provided
When executed, this operation delivers the following data, which can be used in the same automatic task.
Tags
-
URL
{{url}}
URL
-
Data from Browser
{{browser_data}}
Data from Browser
-
Screenshot URL
{{screenshot_url}}
Public URL of the screenshot taken by the browser (if a screenshot action was included in the recipe)
-
Status Code
{{status_code}}
Status Code
Let's talk
Choose day and time.
We share the screen and answer all your questions.