Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions api-reference/endpoint/browser-create.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ openapi: '/api-reference/v2-openapi.json POST /interact'
| `profile.saveChanges` | boolean | No | `true` | When `true`, browser state is saved back to the profile on close. Set to `false` to load existing data without writing. Only one saver is allowed at a time. |
| `location` | object | No | — | Country the session browses from. Without it, sessions browse from the US. |
| `location.country` | string | Yes* | — | ISO 3166-1 alpha-2 country code, such as `GB` or `DE`. Other values, such as `us-generic`, are rejected with a `400`. |
| `zeroDataRetention` | boolean | No | `false` | Run the session with [Zero Data Retention](/features/interact#zero-data-retention-zdr). Requires ZDR to be enabled for your team (`403` otherwise). Cannot be combined with `profile` (`400`). |

## Response

Expand Down
6 changes: 4 additions & 2 deletions api-reference/endpoint/scrape-execute.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ When you are done, call `DELETE /v2/scrape/{jobId}/interact` to stop the session
| `language` | string | No | `"node"` | One of `"python"`, `"node"`, or `"bash"`. Only used with `code`. |
| `timeout` | number | No | `30` | Execution timeout in seconds (1–300). |
| `origin` | string | No | — | Optional origin label used for telemetry. |
| `zeroDataRetention` | boolean | No | `false` | Run the session with [Zero Data Retention](/features/interact#zero-data-retention-zdr). Requires ZDR to be enabled for your team. Applied automatically when the scrape itself used ZDR. |
| `url` | string | No | — | Page to open in a new session when the original scrape's context is unavailable, such as after a ZDR scrape. The scrape's actions are not replayed. |

## Response

Expand Down Expand Up @@ -109,9 +111,9 @@ curl -X POST "https://api.firecrawl.dev/v2/scrape/550e8400-e29b-41d4-a716-446655
| Status | Description |
|--------|-------------|
| `402` | Insufficient credits for a browser session |
| `403` | Scrape job belongs to a different team |
| `403` | Scrape job belongs to a different team, or `zeroDataRetention` was requested but ZDR is not enabled for your team |
| `404` | Scrape job not found |
| `409` | Replay context unavailable — rerun the scrape and try again |
| `409` | Replay context unavailable — rerun the scrape and try again, or pass `url`. Also returned when `zeroDataRetention` is requested on an existing session that was started without ZDR |
| `410` | Browser session has already been destroyed |
| `429` | Maximum concurrent browser sessions reached |
| `502` | Browser service or AI agent execution failed |
Expand Down
2 changes: 1 addition & 1 deletion billing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Credits are the unit of usage in Firecrawl. Each plan includes a monthly credit
| **Crawl** | 1 credit / page | Scrape an entire website by following links from a starting URL. The same per-page scrape option costs apply to each page crawled. |
| **Map** | 1 credit / call | Discover all URLs on a website without scraping their content. |
| **Search** | 2 credits / 10 results | Search the web and optionally scrape the results. Rounded up per 10 results (e.g., 11 results = 4 credits). Additional per-page scrape costs apply to each result that is scraped. See [here](/features/search#zero-data-retention-zdr) for enterprise ZDR search pricing. |
| **Interact** | 2–7 credits / browser minute | Interactive browser sandbox session, billed per browser minute with a one-minute minimum. Sessions that use a `prompt` bill at 7 credits / browser minute; sessions without a prompt (Playwright `code` only) bill at 2 credits / browser minute. |
| **Interact** | 2–7 credits / browser minute | Interactive browser sandbox session, billed per browser minute with a one-minute minimum. Sessions that use a `prompt` bill at 7 credits / browser minute; sessions without a prompt (Playwright `code` only) bill at 2 credits / browser minute. [Zero Data Retention](/features/interact#zero-data-retention-zdr) sessions add 2 credits / browser minute (9 with a prompt, 4 code-only). |
| **Agent** | Dynamic | Autonomous web research agent. 5 daily runs free; usage-based pricing beyond that. |

### Additional credit costs for scrape options
Expand Down
2 changes: 1 addition & 1 deletion enterprise.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Enterprise features are provisioned by our team. To enable them or discuss a cus
## Security & compliance

- **SOC 2 Type II**: Independently audited security controls covering data protection and operational security.
- **Zero Data Retention (ZDR)**: Page content and extracted data are processed in-memory and never persisted beyond the lifetime of the request. Available for both scraping ([Scrape ZDR](/features/scrape#zero-data-retention-zdr)) and search ([Search ZDR](/features/search#zero-data-retention-zdr)), including an end-to-end mode where our upstream search provider also enforces ZDR.
- **Zero Data Retention (ZDR)**: Page content and extracted data are processed in-memory and never persisted beyond the lifetime of the request. Available for scraping ([Scrape ZDR](/features/scrape#zero-data-retention-zdr)), browser sessions ([Interact ZDR](/features/interact#zero-data-retention-zdr)) and search ([Search ZDR](/features/search#zero-data-retention-zdr)), including an end-to-end mode where our upstream search provider also enforces ZDR.
- **PII redaction**: Automatically redact personally identifiable information from scrape and parse output. See [PII redaction](/features/scrape#pii-redaction).
- **DPA & custom contracts**: Data Processing Agreements, custom MSAs, and security reviews to meet your procurement requirements.

Expand Down
6 changes: 6 additions & 0 deletions features/browser.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,10 @@ curl -X POST "https://api.firecrawl.dev/v2/interact" \

Sessions only accept a country code: `languages` and scrape's special values such as `us-generic` are rejected with a `400`. Sessions started from a scrape with interact use that scrape's `location.country`.

### Zero Data Retention

Pass `"zeroDataRetention": true` when creating a session to run it with Zero Data Retention (ZDR). Firecrawl will not persist any page content or execution output beyond the lifetime of the session, and every later call to the session stays in ZDR mode. ZDR must be enabled for your team; otherwise the request returns a `403`. Session recordings and persistent profiles are not available in ZDR mode (`400`), and an existing non-ZDR session cannot be switched to ZDR (`409`). See [Interact ZDR](/features/interact#zero-data-retention-zdr) for details.


### Close a Session

Expand Down Expand Up @@ -388,6 +392,8 @@ agent-browser snapshot --cdp "$CDP_URL"

Pricing depends on how you drive the session: 7 credits per browser minute if the session uses a `prompt`, or 2 credits per browser minute if it does not (Playwright `code` only). Billing is per browser minute with a one-minute minimum.

Zero Data Retention sessions add 2 credits per browser minute: 9 credits per browser minute if the session uses a `prompt`, or 4 if it does not, with the same one-minute minimum.


## Rate limits

Expand Down
31 changes: 31 additions & 0 deletions features/interact.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,34 @@ The second interact response should show `localStorage` as `"saved"` and `cookie
Profiles created through the API may not appear in Dashboard > Interact > Profiles yet. The dashboard currently does not provide a complete inventory of API-created persistent profiles.
</Info>

## Zero Data Retention (ZDR)

Interact supports Zero Data Retention (ZDR) for teams with strict data handling requirements. When enabled, Firecrawl will not persist any page content or execution output beyond the lifetime of the session.

To enable ZDR, set `zeroDataRetention: true` on your first interact call:

```bash cURL
curl -X POST https://api.firecrawl.dev/v2/scrape/YOUR_SCRAPE_ID/interact \
-H "Content-Type: application/json" \
-H "Authorization: Bearer fc-YOUR_API_KEY" \
-d '{
"prompt": "Click the pricing tab and summarize the plans",
"zeroDataRetention": true
}'
```

You can also pass `zeroDataRetention: true` when creating a standalone session with [`POST /v2/interact`](/api-reference/endpoint/browser-create). Interacting with a scrape that was itself made with `zeroDataRetention: true` starts a ZDR session automatically. The retention policy is stored on the session, so later calls to the same session stay in ZDR mode even if they omit the option.

ZDR is available on Enterprise plans and must be enabled for your team. Requests that set `zeroDataRetention: true` from a team without ZDR enabled return a `403`. Visit [firecrawl.dev/enterprise](https://www.firecrawl.dev/enterprise) to get started.

<Note>
- Session recordings and persistent profiles are not available in ZDR mode. Requests that combine `zeroDataRetention: true` with `recordSession` or `profile` return a `400`.
- An existing session that was started without ZDR cannot be switched to ZDR. Requesting ZDR on it returns a `409`: stop the session and start a new one with `zeroDataRetention: true`.
- ZDR scrapes do not retain the scraped URL, so Firecrawl may not be able to rebuild the browser from the original scrape. If interact returns a `409` saying the replay context is unavailable, pass `url` in the request to open that page in a new ZDR session. The original scrape's actions are not replayed.
</Note>

See [Pricing](#pricing) for ZDR session costs.

## When to Use What

| Use Case | Recommended | Why |
Expand All @@ -417,6 +445,7 @@ Profiles created through the API may not appear in Dashboard > Interact > Profil
- **Code-only** (no `prompt`): 2 credits per session minute
- **With AI prompts**: 7 credits per session minute
- **Scrape**: billed separately (1 credit per scrape, plus any format-specific costs)
- **Zero Data Retention**: ZDR sessions add 2 credits per session minute, so code-only sessions bill at 4 credits per minute and sessions with AI prompts at 9, with the same one-minute minimum. A ZDR scrape still carries its own [ZDR cost](/features/scrape#zero-data-retention-zdr) of 1 additional credit per page.

## API Reference

Expand All @@ -432,6 +461,8 @@ Profiles created through the API may not appear in Dashboard > Interact > Profil
| `language` | `string` | `"node"` | `"node"`, `"python"`, or `"bash"`. Only used with `code`. |
| `timeout` | `number` | `30` | Timeout in seconds (1–300). |
| `origin` | `string` | None | Caller identifier for activity tracking. |
| `zeroDataRetention` | `boolean` | `false` | Run the session with [Zero Data Retention](#zero-data-retention-zdr). Requires ZDR to be enabled for your team. |
| `url` | `string` | None | Page to open in a new session when the original scrape's context is unavailable, such as after a ZDR scrape. |

### Response

Expand Down
Loading