<!-- BusyBot node reference — https://busybot.net/tools/airtop/ -->

> Node: Airtop (`airtop`) · Action (binary) · v1
> Category: Productivity · Credentials: Airtop API (`airtopApi`)
> Updated: 2026-08-16

# 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](https://busybot.net/credentials/airtop-api/) 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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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.