Reference · Tools
Airtop
Automate cloud browser sessions, perform AI-powered page extraction, run agents, and manage browser files via the Airtop API.
The Airtop node connects BusyBot to Airtop's cloud browser platform, letting you spin up browser sessions, navigate pages, and extract structured data using plain-language AI prompts — no CSS selectors required. You could, for example, build a workflow that opens a product page, runs a smartScrape to pull pricing, and saves a screenshot as a binary file — all in one automated flow.
- Node type
- Action (binary)
- Parameters
- 35
- Outputs
- Output, Error
- Credentials
- Airtop API
Airtop
Automate cloud browser sessions, AI-powered extractions, agents, and files with Airtop.
Overview
Airtop provides a cloud browser automation platform with AI-native features. Resources: session (create/terminate cloud browsers), window (create/close/loadUrl/takeScreenshot), extraction (queryPage with AI prompt, smartScrape), interaction (click/type/hover via natural language element targeting), agent (invoke and poll autonomous agents), file (get/getMany/delete session files). Screenshot output can be returned as binary data on the output item.
Category: Productivity
Tool Name: airtop
Version: 1
Appearance: Icon: lucide-Globe | Color: #6366F1
Node Type
Action (Binary) — handles file/binary data operations
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Airtop API credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Agent | agent |
| Extraction | extraction |
| File | file |
| Interaction | interaction |
| Session | session |
| Window | window |
Operations
| Resource | Operation | Value | Description |
|---|---|---|---|
| Session | Create | create | Create a new browser session. |
| Session | Terminate | terminate | Terminate an existing session. |
| Window | Close | close | Close a browser window. |
| Window | Create | create | Open a new browser window in a session. |
| Window | Load URL | loadUrl | Navigate the window to a URL. |
| Window | Take Screenshot | takeScreenshot | Capture a screenshot of the window. |
| Extraction | Query Page | queryPage | Ask an AI prompt about the current page. |
| Extraction | Smart Scrape | smartScrape | AI-powered structured scrape of the full page. |
| Interaction | Click | click | Click on a page element identified by description. |
| Interaction | Hover | hover | Hover over a page element identified by description. |
| Interaction | Type | type | Type text into a page element identified by description. |
| Agent | Run | run | Invoke an agent and poll for its result. |
| File | Delete | delete | Delete a file by ID. |
| File | Get | get | Retrieve metadata for a single file. |
| File | Get Many | getMany | List session files. |
Parameters
Session: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Session ID (sessionId) | string | No | — | The Airtop session ID. |
| Timeout Minutes | number | No | 30 | Number of minutes before the session automatically times out (1 to 10080). |
| Proxy | string | No | — | Optional proxy URL to route browser traffic through (e.g. http://proxy.example.com:8080). |
| Persist Profile | boolean | No | false | Whether to persist the browser profile (cookies, localStorage) between sessions. |
Session: Terminate
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Session ID (sessionId) | string | No | — | The Airtop session ID. |
Window: Close
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Session ID (sessionId) | string | No | — | The Airtop session ID. |
Window ID (windowId) | string | No | — | The Airtop window ID within the session. |
Window: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Session ID (sessionId) | string | No | — | The Airtop session ID. |
Window ID (windowId) | string | No | — | The Airtop window ID within the session. |
URL (url) | string | No | — | The URL to load in the new window (create) or navigate to (loadUrl). Leave empty on create to open a blank window. |
| Wait Until | options | No | load | When to consider navigation complete. |
Options: load (wait until the load event fires), domContentLoaded (wait until DOMContentLoaded fires), complete (wait until the page is fully loaded) |
Window: Load URL
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Session ID (sessionId) | string | No | — | The Airtop session ID. |
Window ID (windowId) | string | No | — | The Airtop window ID within the session. |
URL (url) | string | No | — | The URL to load in the new window (create) or navigate to (loadUrl). Leave empty on create to open a blank window. |
| Wait Until | options | No | load | When to consider navigation complete. |
Options: load (wait until the load event fires), domContentLoaded (wait until DOMContentLoaded fires), complete (wait until the page is fully loaded) |
Window: Take Screenshot
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Session ID (sessionId) | string | No | — | The Airtop session ID. |
Window ID (windowId) | string | No | — | The Airtop window ID within the session. |
| Output Image As Binary | boolean | No | true | Whether to decode the screenshot base64 data URI and store it as binary data on the output item. When false, the raw data URI string is returned in the JSON. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. |
| Binary Property Name | string | No | screenshot | Name of the binary property on the output item that will hold the screenshot image. (shown when Output Image As Binary is true) |
Extraction: Query Page
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Session ID (sessionId) | string | No | — | The Airtop session ID. If left empty along with Window ID, a temporary session and window will be created automatically for the extraction (auto-create mode). |
Window ID (windowId) | string | No | — | The Airtop window ID. If left empty along with Session ID, a temporary session and window will be created automatically. |
URL (url) | string | No | — | URL to load before extracting (used only in auto-create session mode when sessionId and windowId are empty). |
| Prompt | string | No | — | The AI prompt to send to the page. For example: “What is the price of the first product?” |
| Output Schema (JSON) | string | No | — | Optional JSON Schema string defining the expected output structure. The AI will attempt to return data conforming to this schema. |
| Parse JSON Output | boolean | No | false | Whether to attempt JSON.parse on the extraction result. When true, if the response is valid JSON it will be placed as a parsed object in the output. |
Extraction: Smart Scrape
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Session ID (sessionId) | string | No | — | The Airtop session ID. If left empty along with Window ID, a temporary session and window will be created automatically for the extraction (auto-create mode). |
Window ID (windowId) | string | No | — | The Airtop window ID. If left empty along with Session ID, a temporary session and window will be created automatically. |
URL (url) | string | No | — | URL to load before extracting (used only in auto-create session mode when sessionId and windowId are empty). |
| Output Schema (JSON) | string | No | — | Optional JSON Schema string defining the expected output structure. The AI will attempt to return data conforming to this schema. |
| Parse JSON Output | boolean | No | false | Whether to attempt JSON.parse on the extraction result. When true, if the response is valid JSON it will be placed as a parsed object in the output. |
Interaction: Click
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Session ID (sessionId) | string | No | — | The Airtop session ID. |
Window ID (windowId) | string | No | — | The Airtop window ID within the session. |
| Element Description | string | No | — | Natural language description of the element to target. For example: “the blue Submit button” or “the email input field”. |
| Click Type | options | No | click | Type of click to perform. |
Options: click (standard single click), doubleClick, rightClick (right-click, opening the context menu) |
Interaction: Hover
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Session ID (sessionId) | string | No | — | The Airtop session ID. |
Window ID (windowId) | string | No | — | The Airtop window ID within the session. |
| Element Description | string | No | — | Natural language description of the element to target. For example: “the blue Submit button” or “the email input field”. |
Interaction: Type
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Session ID (sessionId) | string | No | — | The Airtop session ID. |
Window ID (windowId) | string | No | — | The Airtop window ID within the session. |
| Element Description | string | No | — | Natural language description of the element to target. For example: “the blue Submit button” or “the email input field”. |
| Text | string | No | — | The text to type into the element. |
| Press Enter After Typing | boolean | No | false | Whether to press the Enter key after typing the text. |
Agent: Run
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Agent ID | string | No | — | The Airtop agent ID to invoke. |
| Config Variables | string | No | {} | JSON object of configuration variables to pass to the agent (e.g. { “url”: “https://example.com” }). |
| Max Poll Time (ms) | number | No | 120000 | Maximum time in milliseconds to poll for the agent run result before timing out. |
File: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| File ID | string | No | — | The Airtop file ID. |
File: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| File ID | string | No | — | The Airtop file ID. |
File: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Session ID Filter (sessionId) | string | No | — | Filter files by session ID. Leave empty to return files from all sessions. |
| Return All | boolean | No | false | Whether to return all files or limit to a maximum number. |
| Limit | number | No | 20 | Maximum number of files to return. (shown when Return All is false) |
| Offset | number | No | 0 | Number of files to skip before returning results (for pagination). |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Max Concurrency | number | No | 5 | Maximum number of items to process concurrently. |
Output Data
The Airtop response is merged into the output item’s JSON at the top level — there is no wrapper property. The incoming item JSON passes through and the response fields are written over it, so reference results directly, e.g. {{ $json.sessionId }}. Binary data already on the input item is forwarded.
Every operation produces one output item per input item, except File: Get Many, which fans out — one output item per file returned. When that listing is empty it emits a single item carrying only the incoming JSON.
| Resource / Operation | What lands on the output item |
|---|---|
| Session: Create | The created session as returned by Airtop. |
| Session: Terminate | terminated: true and the sessionId you terminated. |
| Window: Create | The created window as returned by Airtop. |
| Window: Close | closed: true, plus sessionId and windowId. |
| Window: Load URL | The navigation response. |
| Window: Take Screenshot | With Output Image As Binary on, the image is stored under the binary property you name and the JSON carries sessionId and windowId. With it off, the API response is merged instead, including data — the base64 data URI. |
| Extraction: Query Page | The extraction response, whose data holds the model’s answer. With Parse JSON Output on, data becomes the parsed object whenever it contains valid JSON. |
| Extraction: Smart Scrape | The scrape response, with the same data and Parse JSON Output behavior as Query Page. |
| Interaction: Click / Hover / Type | The interaction response from Airtop. |
| Agent: Run | The polled run result. If the invoke call returns no run identifier, the invoke response is returned instead and no polling happens. |
| File: Get | The file’s metadata. |
| File: Get Many | One item per file, each carrying that file’s fields. |
| File: Delete | deleted: true and the fileId you deleted. |
In extraction auto-create mode — Session ID and Window ID both empty — a temporary session and window are opened for the URL you supply and torn down once the extraction finishes, so no session or window ID is left for a later node to reuse.
Usage Examples
- Create an Airtop browser session
- Open a browser window and navigate to a URL
- Take a screenshot of a browser window
- Extract data from a page using an AI prompt
- Click on an element described in natural language
- Run an Airtop autonomous agent and wait for results
- List all files for a session
Example Configuration
Create a browser session that persists cookies between runs:
{
"type": "airtop",
"parameters": {
"resource": "session",
"operation": "create",
"timeoutMinutes": 60,
"persistProfile": true
}
}
Open a window in that session and wait for the page to finish loading:
{
"type": "airtop",
"parameters": {
"resource": "window",
"operation": "create",
"sessionId": "{{ $json.sessionId }}",
"url": "{{ $json.pageUrl }}",
"waitUntil": "complete"
}
}
Capture the window as a PNG on a named binary property:
{
"type": "airtop",
"parameters": {
"resource": "window",
"operation": "takeScreenshot",
"sessionId": "{{ $json.sessionId }}",
"windowId": "{{ $json.windowId }}",
"outputImageAsBinary": true,
"binaryPropertyName": "screenshot"
}
}
Ask an AI question about a page without managing a session yourself — leaving Session ID and Window ID empty opens a temporary browser for the URL:
{
"type": "airtop",
"parameters": {
"resource": "extraction",
"operation": "queryPage",
"url": "{{ $json.productUrl }}",
"prompt": "What is the price of the first product?",
"outputSchema": "{\"type\":\"object\",\"properties\":{\"price\":{\"type\":\"string\"},\"currency\":{\"type\":\"string\"}}}",
"parseJsonOutput": true
}
}
Fill a field and submit it in one step:
{
"type": "airtop",
"parameters": {
"resource": "interaction",
"operation": "type",
"sessionId": "{{ $json.sessionId }}",
"windowId": "{{ $json.windowId }}",
"elementDescription": "the email input field",
"text": "{{ $json.email }}",
"pressEnterAfterTyping": true
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Automate cloud browser sessions, AI extractions, agents, and file management via the Airtop API.
Frequently asked questions
What credentials do I need to use the Airtop node?
You need an Airtop API credential, configured in BusyBot as 'airtopApi'. You'll get this API key from your Airtop account. Without it, none of the node's operations — sessions, extractions, agents, or file management — will authenticate.
What resources and actions does this node actually cover?
The node covers six resource types: session (create and terminate cloud browsers), window (create, close, load a URL, or take a screenshot), extraction (queryPage with an AI prompt, or smartScrape), interaction (click, type, or hover using natural language element targeting), agent (invoke and poll autonomous agents), and file (get, list, or delete session files). Together that's 35 configurable parameters across those operations.
How does screenshot output work — do I get an image file back?
Yes. The Airtop node handles binary files, so when you use the takeScreenshot window action, the screenshot can be returned as binary data on the output item. You can then pass that binary directly to a file-write node, an email attachment, or any other node that accepts binary input in your BusyBot workflow.
What's the difference between queryPage and smartScrape for extraction?
Both are AI-driven extraction operations under the extraction resource. queryPage lets you supply a free-form natural language prompt to ask a specific question about the page's content. smartScrape is designed to automatically identify and pull structured data from a page without you having to define the exact schema. Use queryPage when you know what you're looking for; smartScrape when you want the AI to infer the relevant structure.
Does the node have separate error handling, or do failures just stop the workflow?
The Airtop node exposes two distinct outputs: Output and Error. This means you can wire up a separate branch in your workflow to handle failures — for instance, logging an error or sending an alert — without the whole flow halting. Any operation that fails will route through the Error output rather than silently dropping.
Build with the Airtop node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Airtop API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.