> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Bright Data

The Bright Data connector lets your AI agent act in each user's Bright Data account. Each user connects their own Bright Data access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 43 tools.

**Authentication:** Bearer Token
**Categories:** Search, Developer Tools, AI, Analytics
**Tools:** 43: 34 read, 9 write, 0 destructive
**Users sign in with:** Access token
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=BRIGHTDATA)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Bright Data connection

   In **AgentKit > Connections**, create a Bright Data connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'brightdata'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Bright Data:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'brightdata_get_account_bandwidth',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "brightdata"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Bright Data:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="brightdata_get_account_bandwidth",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their Bright Data credentials there. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'brightdata_download_marketplace_snapshot',
  toolInput: {
    snapshot_id: '<snapshot_id>',
  },
  connector: 'brightdata',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="brightdata_download_marketplace_snapshot",
    tool_input={
        "snapshot_id": "<snapshot_id>",
    },
    connection_name="brightdata",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `brightdata_download_marketplace_snapshot`

Download Marketplace Snapshot · Read-only

Download the records of a ready Bright Data Marketplace dataset snapshot.
Returns the records (a JSON array, wrapped as array in JSON output, by default) or the data in the chosen format.
Use this after brightdata_get_marketplace_snapshot reports ready. Use brightdata_download_snapshot for scraper job snapshots.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `snapshot_id` (`string`, required): Marketplace snapshot ID returned by brightdata_filter_marketplace_dataset (starts with snap_). Example: snap_m2bxug4e2o352v1jv1
- `batch_size` (`integer`, optional): Split a large snapshot into batches of this many records (minimum 1000) and download one per call with part. Example: 1000
- `format` (`string`, optional): Data format. json (the tool default) returns a JSON array; the server default jsonl and ndjson return one record per line; csv returns a CSV table. One of: `json`, `ndjson`, `jsonl`, `csv`. Default: `json`.
- `part` (`integer`, optional): Which batch to download when batch_size is set, starting at 1. Example: 2

Example input: `{"snapshot_id":"<snapshot_id>"}`

### `brightdata_download_snapshot`

Download Snapshot · Read-only

Download the records of a finished Bright Data scraper job (snapshot).
Returns the collected records (a JSON array, wrapped as array in JSON output, by default) or the data in the chosen format; a not-ready snapshot returns a status message instead.
Use this after brightdata_get_snapshot_progress reports ready. Use brightdata_download_marketplace_snapshot for Marketplace dataset snapshots (IDs starting with snap_).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `snapshot_id` (`string`, required): Snapshot ID returned by brightdata_trigger_scrape, brightdata_scrape_sync (when it times out into async mode) or brightdata_list_snapshots. Starts with s_ or sd_. Example: s_m4x7enmven8djfqak
- `batch_size` (`integer`, optional): Split a large snapshot into batches of this many records (minimum 1000) and download one batch per call with part. Example: 1000
- `format` (`string`, optional): Data format. json (the tool default) returns a JSON array; the server default ndjson and jsonl return one record per line; csv returns a CSV table. One of: `json`, `ndjson`, `jsonl`, `csv`. Default: `json`.
- `part` (`integer`, optional): Which batch to download when batch_size is set, starting at 1. Example: 2

Example input: `{"snapshot_id":"<snapshot_id>"}`

### `brightdata_get_account_bandwidth`

Get Account Bandwidth · Read-only

Get bandwidth statistics for every zone on the Bright Data account over a time range.
Returns per-zone bandwidth data with sums and last-update timestamps.
Use this for an account-wide traffic view. Use brightdata_get_zone_bandwidth for a single zone.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `from` (`string`, optional): Start of the range, YYYY-MM-DDTHH:MM:SS. Example: 2026-07-01T00:00:00
- `to` (`string`, optional): End of the range, YYYY-MM-DDTHH:MM:SS. Example: 2026-07-31T00:00:00

Example input: `{}`

### `brightdata_get_account_status`

Get Account Status · Read-only

Check whether the Bright Data account is active and can make requests.
Returns status, customer (account ID), can_make_requests, auth_fail_reason and the caller's ip.
Use this to diagnose authentication or account problems. Use brightdata_get_balance for funds.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `brightdata_get_balance`

Get Balance · Read-only

Get the Bright Data account balance.
Returns balance, credit, prepayment and pending_costs, all in USD.
Use this before large jobs to confirm funds. Use brightdata_get_zone_cost for spend per zone.
Requires an API key with Admin or Finance permission.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `brightdata_get_browser_session`

Get Browser Session · Read-only

Get the details of one Bright Data Browser API session.
Returns session with session_id, api_name, status, URLs, timing and bandwidth.
Use this for one session. Use brightdata_list_browser_sessions to find session IDs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `session_id` (`string`, required): Browser API session ID, from brightdata_list_browser_sessions or the Browser.getSessionId CDP command. Example: 2c3f1a7e9b0d4e6f

Example input: `{"session_id":"<session_id>"}`

### `brightdata_get_dataset_metadata`

Get Dataset Metadata · Read-only

Get the field definitions of a Bright Data Marketplace dataset.
Returns id and a fields object describing each field's type, description and whether it is active or required.
Use this to learn field names before building a filter for brightdata_search_marketplace_dataset or brightdata_filter_marketplace_dataset.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, required): Marketplace dataset ID (starts with gd_). Find it with brightdata_list_marketplace_datasets. Example: gd_l1viktl72bvl7bjuj0

Example input: `{"dataset_id":"<dataset_id>"}`

### `brightdata_get_marketplace_snapshot`

Get Marketplace Snapshot · Read-only

Get the status and details of a Bright Data Marketplace dataset snapshot.
Returns id, created, status (scheduled, building, ready or failed), dataset_id, dataset_size, file_size, cost and any error.
Use this to poll a snapshot from brightdata_filter_marketplace_dataset. Use brightdata_get_snapshot_progress for scraper job snapshots (IDs starting with s_).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `snapshot_id` (`string`, required): Marketplace snapshot ID returned by brightdata_filter_marketplace_dataset (starts with snap_). Example: snap_m2bxug4e2o352v1jv1

Example input: `{"snapshot_id":"<snapshot_id>"}`

### `brightdata_get_serp_result`

Get SERP Result · Read-only

Collect the results of a background SERP API search.
Returns the search results (parsed JSON with general, organic and other blocks when requested as json) once ready; while running, returns HTTP 202 with a pending message.
Use this after brightdata_serp_search_async. Use brightdata_get_unlock_result for background page fetches.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `response_id` (`string`, required): Job ID returned by brightdata_serp_search_async. Example: s4t7w3619285042ra9dke1m8qx
- `zone` (`string`, optional): SERP API zone the job ran in. Example: serp_api1

Example input: `{"response_id":"<response_id>"}`

### `brightdata_get_snapshot_input`

Get Snapshot Input · Read-only

Get the inputs that were used to start a Bright Data scraper job (snapshot).
Returns the inputs as CSV text, one row per input.
Use this to see what a job collected. Use brightdata_get_snapshot_log for job statistics.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `snapshot_id` (`string`, required): Snapshot ID returned by brightdata_trigger_scrape, brightdata_scrape_sync (when it times out into async mode) or brightdata_list_snapshots. Starts with s_ or sd_. Example: s_m4x7enmven8djfqak

Example input: `{"snapshot_id":"<snapshot_id>"}`

### `brightdata_get_snapshot_log`

Get Snapshot Log · Read-only

Get the run log of a Bright Data scraper job (snapshot).
Returns id, status, dataset_name, scraper_name, dataset_size, inputs_count, file_size, trigger details, duration and success_rate.
Use this for job statistics. Use brightdata_get_snapshot_progress for a quick status check.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `snapshot_id` (`string`, required): Snapshot ID returned by brightdata_trigger_scrape, brightdata_scrape_sync (when it times out into async mode) or brightdata_list_snapshots. Starts with s_ or sd_. Example: s_m4x7enmven8djfqak

Example input: `{"snapshot_id":"<snapshot_id>"}`

### `brightdata_get_snapshot_progress`

Get Snapshot Progress · Read-only

Check the status of a Bright Data scraper job (snapshot).
Returns snapshot_id, dataset_id and status (starting, running, ready, failed or canceled), with error_message when it failed.
Use this to poll a job started by brightdata_trigger_scrape or brightdata_scrape_sync. Use brightdata_get_snapshot_log for record counts, timing and success rate.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `snapshot_id` (`string`, required): Snapshot ID returned by brightdata_trigger_scrape, brightdata_scrape_sync (when it times out into async mode) or brightdata_list_snapshots. Starts with s_ or sd_. Example: s_m4x7enmven8djfqak

Example input: `{"snapshot_id":"<snapshot_id>"}`

### `brightdata_get_studio_batch_result`

Get Studio Batch Result · Read-only

Get the results of a Scraper Studio batch collection.
Returns an array of records when ready; while the batch runs, returns HTTP 202 with status building and a retry message.
Use this after brightdata_trigger_studio_batch. Use brightdata_get_studio_realtime_result for real-time runs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): Collection ID returned by brightdata_trigger_studio_batch (starts with j_). Example: j_abc123def456

Example input: `{"id":"<id>"}`

### `brightdata_get_studio_job`

Get Studio Job · Read-only

Get the details of one Scraper Studio job.
Returns id, status, collector, template, inputs, lines, fails, pages, success_rate, timing (created, started, finished, job_time) and trigger.
Use this for one job's statistics. Use brightdata_list_studio_jobs to find job IDs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `job_id` (`string`, required): Scraper Studio job ID (starts with j_). Example: j_ma13y9ay1piehrso8r

Example input: `{"job_id":"<job_id>"}`

### `brightdata_get_studio_realtime_result`

Get Studio Realtime Result · Read-only

Get the result of a real-time Scraper Studio run.
Returns the collected records once ready; otherwise HTTP 202 while the run continues.
Use this after brightdata_trigger_studio_realtime or a timed-out brightdata_run_studio_realtime. Use brightdata_get_studio_batch_result for batch runs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `response_id` (`string`, required): Run ID returned by brightdata_trigger_studio_realtime or brightdata_run_studio_realtime. Example: d2t1786372370082rjv3f11k9v18
- `timeout` (`string`, optional): Long-poll for up to this long (25s to 50s) instead of returning 202 at once. Example: 30s

Example input: `{"response_id":"<response_id>"}`

### `brightdata_get_unlock_result`

Get Unlock Result · Read-only

Collect the page from a background Web Unlocker fetch.
Returns status_code, headers and body of the fetched page once ready; while the job runs, returns HTTP 202 with a pending message.
Use this after brightdata_unlock_url_async. Use brightdata_get_serp_result for background SERP searches.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `response_id` (`string`, required): Job ID returned by brightdata_unlock_url_async. Example: s4t7w3619285042ra9dke1m8qx
- `zone` (`string`, optional): Web Unlocker zone the job ran in. Example: web_unlocker1

Example input: `{"response_id":"<response_id>"}`

### `brightdata_get_unlocker_success_rate`

Get Unlocker Success Rate · Read-only

Get Web Unlocker success rates for a domain over a time window (the past 7 days by default).
Returns an object mapping each domain to a success rate between 0 and 1.
Use this to check how reliably Web Unlocker reaches a site before fetching it with brightdata_unlock_url.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `domain` (`string`, required): Domain to report on, such as example.com, or a wildcard such as example.* for one figure per top-level domain.
- `from_datetime` (`string`, optional): Start of the window in ISO 8601 UTC, as a date or date-time. Example: 2026-09-20T00:00:00Z
- `to_datetime` (`string`, optional): End of the window in ISO 8601 UTC, as a date or date-time. Example: 2026-09-24
- `url_pattern` (`string`, optional): Only count requests whose URL contains this text (case-insensitive). Example: /product/

Example input: `{"domain":"<domain>"}`

### `brightdata_get_zone`

Get Zone · Read-only

Get the configuration of one Bright Data zone.
Returns created, plan (product, type, IP and bandwidth settings), ips, permissions and the zone password list.
Use this to inspect a zone's plan. Use brightdata_get_zone_cost for its spend and brightdata_list_active_zones to find zone names.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zone` (`string`, required): Zone name to report on, exactly as shown in the control panel or returned by brightdata_list_all_zones. Example: web_unlocker1

Example input: `{"zone":"<zone>"}`

### `brightdata_get_zone_bandwidth`

Get Zone Bandwidth · Read-only

Get bandwidth statistics for one Bright Data zone over a time range.
Returns per-day bandwidth sums for the zone, keyed by customer and zone type.
Use this for traffic of one zone. Use brightdata_get_account_bandwidth for every zone and brightdata_get_zone_cost for spend.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zone` (`string`, required): Zone name to report on, exactly as shown in the control panel or returned by brightdata_list_all_zones. Example: web_unlocker1
- `from` (`string`, optional): Start of the range, YYYY-MM-DDTHH:MM:SS. Example: 2026-07-01T00:00:00
- `to` (`string`, optional): End of the range, YYYY-MM-DDTHH:MM:SS. Example: 2026-07-31T00:00:00

Example input: `{"zone":"<zone>"}`

### `brightdata_get_zone_cost`

Get Zone Cost · Read-only

Get billed cost and bandwidth for one Bright Data zone over a date range.
Returns cost and bandwidth figures for the zone, matching the control panel's Usage Overview.
Use this for spend per zone. Use brightdata_get_zone_bandwidth for daily traffic and brightdata_get_balance for the account balance.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `zone` (`string`, required): Zone name to report on, exactly as shown in the control panel or returned by brightdata_list_all_zones. Example: web_unlocker1
- `from` (`string`, optional): Inclusive start date, YYYY-MM-DD. Example: 2026-04-01
- `to` (`string`, optional): Exclusive end date, YYYY-MM-DD: the day given is not included. For a full month, use the first day of the next month. Example: 2026-05-01

Example input: `{"zone":"<zone>"}`

### `brightdata_list_active_zones`

List Active Zones · Read-only

List the active zones on the Bright Data account.
Returns an array of zones with name and type (for example unblocker, serp, browser_api, res, dc).
Use this to find the zone name that brightdata_unlock_url, brightdata_serp_search and their async variants require. Use brightdata_list_all_zones to include deleted zones.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `brightdata_list_all_zones`

List All Zones · Read-only

List every zone on the Bright Data account, including deleted ones.
Returns an array of zones with name, type and status (active or deleted).
Use this for a full zone inventory. Use brightdata_list_active_zones for zones you can send requests to.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `brightdata_list_browser_sessions`

List Browser Sessions · Read-only

List Bright Data Browser API sessions with filters and paging.
Returns sessions (session_id, api_name, status, target and end URLs, duration, bandwidth), count, total and pagination.
Use this to review remote browser usage. Use brightdata_get_browser_session for one session.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `api_name` (`string`, optional): Only sessions from this Browser API zone. Example: browser_api1
- `end_date` (`string`, optional): Only sessions before this date-time (ISO 8601). Example: 2026-07-31T23:59:59Z
- `end_url` (`string`, optional): Only sessions that ended on this URL. Example: https://www.example.com/checkout
- `limit` (`integer`, optional): Sessions to return, up to 100. Server default 50. Example: 20
- `offset` (`integer`, optional): Sessions to skip, for paging. Example: 20
- `order` (`string`, optional): Sort order. Server default desc. One of: `asc`, `desc`.
- `sort` (`string`, optional): Sort field. Server default timestamp. One of: `timestamp`, `duration`, `bandwidth`.
- `start_date` (`string`, optional): Only sessions after this date-time (ISO 8601). Example: 2026-07-01T00:00:00Z
- `status` (`string`, optional): Filter by session status. Server default all. One of: `running`, `finished`, `failed`, `all`.
- `target_url` (`string`, optional): Only sessions whose target URL matches. Example: example.com

Example input: `{}`

### `brightdata_list_marketplace_datasets`

List Marketplace Datasets · Read-only

List the ready-made datasets in the Bright Data Dataset Marketplace.
Returns an array of datasets with id, name and size (record count).
Use this to find a dataset_id for brightdata_get_dataset_metadata, brightdata_search_marketplace_dataset or brightdata_filter_marketplace_dataset. Use brightdata_list_scrapers for live scrapers.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `brightdata_list_scrapers`

List Scrapers · Read-only

List the pre-built Bright Data scrapers available to the account, with each scraper's collection methods and input schema.
Returns an array of scrapers with id (the dataset_id), name, domain, scraper_type and per-method input and output schemas.
Use this to find the dataset_id and input fields for brightdata_scrape_sync or brightdata_trigger_scrape. Use brightdata_list_studio_scrapers for custom Scraper Studio scrapers.
Filter by domain or dataset_id: the unfiltered response is several megabytes.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, optional): Return only the scraper with this dataset ID. Example: gd_l1viktl72bvl7bjuj0
- `domain` (`string`, optional): Return only scrapers for this site domain, exactly as Bright Data lists it. Example: linkedin.com

Example input: `{}`

### `brightdata_list_snapshots`

List Snapshots · Read-only

List the scraper jobs (snapshots) created for one Bright Data pre-built scraper.
Returns an array of snapshots with id, created, status, dataset_id, dataset_size and trigger type.
Use this to find earlier jobs for a dataset_id. Use brightdata_get_snapshot_progress to check one known snapshot.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, required): Scraper dataset ID whose snapshots to list. Example: gd_l1viktl72bvl7bjuj0
- `from_date` (`string`, optional): Return only snapshots created after this date (YYYY-MM-DD). Example: 2026-01-01
- `limit` (`integer`, optional): Maximum number of snapshots to return. Server default 1000, maximum 5000. Example: 50
- `skip` (`integer`, optional): Number of snapshots to skip, for paging. Server default 0. Example: 100
- `status` (`string`, optional): Return only snapshots with this status. One of: `starting`, `running`, `ready`, `failed`, `canceled`.
- `to_date` (`string`, optional): Return only snapshots created before this date (YYYY-MM-DD). Example: 2026-04-01
- `trigger_type` (`string`, optional): Filter by how the job was started: API, CP (control panel) or ALL. One of: `ALL`, `CP`, `API`.
- `with_total` (`boolean`, optional): Set to true to include the total number of matching snapshots.

Example input: `{"dataset_id":"<dataset_id>"}`

### `brightdata_list_studio_jobs`

List Studio Jobs · Read-only

List one Scraper Studio scraper's jobs within a date range.
Returns total, offset, limit and data: jobs with id, status, queued, started, finished, inputs, page and line counts and trigger.
Use this to review past runs. Use brightdata_get_studio_job for one job's details.
Requires a scraper ID from brightdata_list_studio_scrapers.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `collector` (`string`, required): Scraper Studio scraper ID whose jobs to list (starts with c_). Required by Bright Data. Example: c_m9im5n7v82p2y35la
- `from_date` (`string`, required): Start date, YYYY-MM-DD. Example: 2026-06-01
- `to_date` (`string`, required): End date, YYYY-MM-DD. Example: 2026-07-13
- `limit` (`integer`, optional): Maximum jobs to return, 0 to 500. Server default 50. Example: 100
- `offset` (`integer`, optional): Jobs to skip, for paging. Server default 0. Example: 50
- `sort_asc` (`integer`, optional): Sort direction: 1 for oldest first, -1 for newest first (server default). One of: `1`, `-1`.

Example input: `{"collector":"<collector>","from_date":"<from_date>","to_date":"<to_date>"}`

### `brightdata_list_studio_scrapers`

List Studio Scrapers · Read-only

List the custom Scraper Studio scrapers on the Bright Data account.
Returns total, offset, limit and data: scrapers with id, name, active, last_run, delivery type and output schema.
Use this to find a collector ID for the Scraper Studio tools. Use brightdata_list_scrapers for Bright Data's pre-built scrapers.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `search` (`string`, optional): Only return scrapers matching this search term. Example: amazon

Example input: `{}`

### `brightdata_scrape_sync`

Scrape Synchronously · Read-only

Run a Bright Data pre-built scraper on a few inputs and wait for the structured records in the same call.
Returns an array of records (wrapped as array in JSON output); if the job runs past about one minute, returns snapshot_id and a message instead.
Use this for a handful of URLs or queries on sites with a pre-built scraper (LinkedIn, Amazon, Instagram, TikTok and more). Use brightdata_trigger_scrape for large batches.
Get the dataset_id and input fields from brightdata_list_scrapers. On a snapshot_id response, poll brightdata_get_snapshot_progress, then call brightdata_download_snapshot.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `dataset_id` (`string`, required): Scraper dataset ID that selects the pre-built scraper to run. Look it up with brightdata_list_scrapers or at https://docs.brightdata.com/scrapers.json; never guess it. Example: gd_l1viktl72bvl7bjuj0 (LinkedIn people profiles).
- `input` (`array`, required): Array of input objects for the scraper. Each object's fields depend on the scraper and collection method: most collect-by-URL scrapers take a url, while discovery methods take fields such as keyword, location or user_name. Check the scraper's input schema with brightdata_list_scrapers. Example: [{"url": "https://www.linkedin.com/in/satyanadella"}]
- `custom_output_fields` (`string`, optional): Output columns to keep, separated by a pipe (|). Use dot notation for nested fields. Omit to return every field. Example: url|name|about.updated_on
- `format` (`string`, optional): Response format. json (the tool default) returns a JSON array the agent can read; the server default ndjson returns one record per line; csv returns a CSV table. One of: `json`, `ndjson`, `csv`. Default: `json`.
- `include_errors` (`boolean`, optional): Set to true to include a report of per-input errors (for example dead_page) with the results.
- `limit_per_input` (`integer`, optional): Maximum number of records to return for each input. Mostly useful for discovery requests, whose result count is otherwise open-ended. Minimum 1. Example: 10

Example input: `{"dataset_id":"<dataset_id>","input":[{"url":"https://www.linkedin.com/in/satyanadella"}]}`

### `brightdata_search_companies`

Search Companies · Read-only

Search Bright Data's Business Search index of company records with a plain-English query or structured field conditions.
Returns req_id, meta (matched count, coverage, offset, limit) and a documents array whose data fields depend on view or fields.
Use this to find companies without knowing their URLs; use brightdata_search_people for people, and brightdata_scrape_sync to collect a known profile URL.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `mode` (`string`, required): How the query is interpreted. instant: fast natural-language search, up to 100 results. smart: natural-language search reranked by relevance, up to 10 results. ludicrous: structured field conditions passed in structured_query, up to 100 results per page. One of: `instant`, `smart`, `ludicrous`.
- `fields` (`array`, optional): Exact list of field names to return in each result, instead of a preset view. Unknown field names are rejected with HTTP 400. Example: ["name", "website", "industry", "employees_in_linkedin", "url"]
- `limit` (`integer`, optional): Maximum number of results in this page. Server default 10; maximum 100 for ludicrous and instant, 10 for smart. Example: 25
- `offset` (`integer`, optional): Number of results to skip, for paging. ludicrous accepts up to 1,000; in instant and smart, offset plus limit cannot exceed 100. Example: 10
- `query` (`string`, optional): Plain-English description of the company to find, up to 200 characters. Required when mode is instant or smart; ignored for ludicrous. Example: US software companies with 50 to 500 employees
- `source` (`string`, optional): Dataset to search within the company category. Omit to use the default source, linkedin_company. Example: linkedin_company
- `structured_query` (`object`, optional): Structured search conditions, required when mode is ludicrous. Combine conditions with and, or and not; each condition uses one field operator: equals for exact matches, in for a list of values, range for numeric bounds (>=, <=) and text for keyword matches. See https://docs.brightdata.com/products/business-search/query-syntax for field names. Example: {"and": [{"text": {"industry": "software"}}, {"equals": {"headquarters_country_code": "US"}}]}
- `view` (`string`, optional): Which stored fields each result's data object carries: id_only (the default, identifiers only), summary or full. Ignored when fields is set. One of: `id_only`, `summary`, `full`.

Example input: `{"mode":"instant"}`

### `brightdata_search_marketplace_dataset`

Search Marketplace Dataset · Read-only

Query a Bright Data Marketplace dataset in real time and get matching records back in the same call (billed per record returned).
Returns hits (the records), total_hits, took (ms) and, when sort is set, a search_after cursor for the next page.
Use this for up to about 1,000 records. Use brightdata_filter_marketplace_dataset for bulk exports or datasets Search does not support.
Search currently supports the LinkedIn people profiles (gd_l1viktl72bvl7bjuj0), contact-enriched people (gd_me5ppxjr2ge6icjuh0) and company (gd_l1vikfnt1wgvvqz95w) datasets; others return 404.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `dataset_id` (`string`, required): Marketplace dataset ID (starts with gd_). Find it with brightdata_list_marketplace_datasets. Example: gd_l1viktl72bvl7bjuj0
- `filter` (`object`, required): Filter that selects records. A single condition has a field name, an operator and a value; operators are =, !=, >, <, >=, <=, in, not_in, includes, not_includes, array_includes, not_array_includes, plus is_null and is_not_null which take no value. Combine conditions in a group with operator and/or and a filters array, nested up to 3 levels. Get field names from brightdata_get_dataset_metadata. Example: {"operator": "and", "filters": [{"name": "country_code", "operator": "=", "value": "US"}, {"name": "followers", "operator": ">", "value": 1000}]}
- `search_after` (`array`, optional): Pagination cursor: pass the search_after array from the previous response to get the next page. Requires sort or sort_fields.
- `size` (`integer`, optional): Number of records to return. Server default 100; best for up to 1,000. Example: 10
- `sort` (`string`, optional): Ordering: default (needed to get a search_after cursor) or random (for sampling). Ignored when sort_fields is set. One of: `default`, `random`.
- `sort_fields` (`array`, optional): Custom sort as an array of field-to-direction objects. Example: [{"timestamp": "asc"}]

Example input: `{"dataset_id":"<dataset_id>","filter":{}}`

### `brightdata_search_people`

Search People · Read-only

Search Bright Data's Business Search index of people (professional profile) records with a plain-English query or structured field conditions.
Returns req_id, meta (matched count, coverage, offset, limit) and a documents array whose data fields depend on view or fields.
Use this to find people without knowing their URLs; use brightdata_search_companies for companies, and brightdata_scrape_sync to collect a known profile URL.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `mode` (`string`, required): How the query is interpreted. instant: fast natural-language search, up to 100 results. smart: natural-language search reranked by relevance, up to 10 results. ludicrous: structured field conditions passed in structured_query, up to 100 results per page. One of: `instant`, `smart`, `ludicrous`.
- `fields` (`array`, optional): Exact list of field names to return in each result, instead of a preset view. Unknown field names are rejected with HTTP 400. Example: ["name", "current_title", "current_company_name", "location", "url"]
- `limit` (`integer`, optional): Maximum number of results in this page. Server default 10; maximum 100 for ludicrous and instant, 10 for smart. Example: 25
- `offset` (`integer`, optional): Number of results to skip, for paging. ludicrous accepts up to 1,000; in instant and smart, offset plus limit cannot exceed 100. Example: 10
- `query` (`string`, optional): Plain-English description of the people to find, up to 200 characters. Required when mode is instant or smart; ignored for ludicrous. Example: Product managers in the United States with cybersecurity experience
- `source` (`string`, optional): Dataset to search within the people category. Omit to use the default source, linkedin_people. Example: linkedin_people
- `structured_query` (`object`, optional): Structured search conditions, required when mode is ludicrous. Combine conditions with and, or and not; each condition uses one field operator: equals for exact matches, in for a list of values, range for numeric bounds (>=, <=) and text for keyword matches. See https://docs.brightdata.com/products/business-search/query-syntax for field names. Example: {"and": [{"text": {"all_text": {"value": "product manager", "mode": "all"}}}, {"equals": {"country_code": "US"}}]}
- `view` (`string`, optional): Which stored fields each result's data object carries: id_only (the default, identifiers only), summary or full. Ignored when fields is set. One of: `id_only`, `summary`, `full`.

Example input: `{"mode":"instant"}`

### `brightdata_serp_search`

Search Engine Results · Read-only

Run a Google, Bing, Yandex or DuckDuckGo search through Bright Data SERP API and get the results page.
Returns parsed JSON (general, organic, knowledge and other result blocks) when the search URL contains brd_json=1; otherwise the results page as HTML or markdown.
Use this for live search engine results. Use brightdata_unlock_url to fetch a result page, and brightdata_serp_search_async for large batches.
Requires a SERP API zone; find its name with brightdata_list_active_zones.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `format` (`string`, required): Response shape. raw returns the results directly (parsed JSON when the URL has brd_json=1). json wraps them as an object with status_code, headers and body. One of: `raw`, `json`.
- `url` (`string`, required): Full search engine URL with the query in it. Add brd_json=1 to get parsed JSON results; add Google parameters such as hl (language), gl (country) and start (offset) as needed. URL-encode the query. Example: https://www.google.com/search?q=best+pizza+in+brooklyn&brd_json=1
- `zone` (`string`, required): Name of the SERP API zone to bill the request to, exactly as shown in the Bright Data control panel (Web Access > zones) or returned by brightdata_list_active_zones. Example: serp_api1
- `country` (`string`, optional): Two-letter ISO 3166-1 country code to run the search from. Example: us
- `data_format` (`string`, optional): Optional transformation of an HTML results page: markdown or screenshot. Leave empty when using brd_json=1. One of: `markdown`, `screenshot`.

Example input: `{"format":"raw","url":"<url>","zone":"<zone>"}`

### `brightdata_unlock_url`

Unlock URL · Read-only

Fetch any public web page through Bright Data Web Unlocker, which handles CAPTCHAs, blocks and JavaScript rendering.
Returns the page as raw HTML, markdown or a screenshot when format is raw; with format json, returns status_code, headers and body.
Use this for page content from any site. Use brightdata_serp_search for search engine results and brightdata_scrape_sync for structured records from a supported site.
Requires a Web Unlocker zone; find its name with brightdata_list_active_zones.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `format` (`string`, required): Response shape. raw returns the page body directly (HTML, or markdown/PNG when data_format is set). json wraps it as an object with status_code, headers and body. One of: `raw`, `json`.
- `url` (`string`, required): Full URL of the page to fetch, including http:// or https://. Example: https://example.com/products/123
- `zone` (`string`, required): Name of the Web Unlocker zone to bill the request to, exactly as shown in the Bright Data control panel (Web Access > zones) or returned by brightdata_list_active_zones. Example: web_unlocker1
- `country` (`string`, optional): Two-letter ISO 3166-1 country code to route the request through. Omit to let the zone pick. Example: us
- `data_format` (`string`, optional): Optional transformation of the page: markdown converts the HTML to clean markdown (best for LLMs); screenshot returns a PNG of the rendered page. Omit for unchanged HTML. One of: `markdown`, `screenshot`.
- `method` (`string`, optional): HTTP method used to request the page. Bright Data documents GET for page fetches; omit to use the server default (GET).
- `render` (`boolean`, optional): Set to true to force JavaScript rendering in a browser. This can make the request much slower, so use it only for pages that load their content with JavaScript.

Example input: `{"format":"raw","url":"<url>","zone":"<zone>"}`

### `brightdata_cancel_snapshot`

Cancel Snapshot · Write

Cancel a running Bright Data scraper job (snapshot).
Returns OK when the job is canceled.
Use this to stop a job started with brightdata_trigger_scrape. Use brightdata_rerun_snapshot to run a finished job again.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `snapshot_id` (`string`, required): Snapshot ID returned by brightdata_trigger_scrape, brightdata_scrape_sync (when it times out into async mode) or brightdata_list_snapshots. Starts with s_ or sd_. Example: s_m4x7enmven8djfqak

Example input: `{"snapshot_id":"<snapshot_id>"}`

### `brightdata_filter_marketplace_dataset`

Filter Marketplace Dataset · Write

Create a billable snapshot of the Bright Data Marketplace dataset records that match a filter.
Returns snapshot_id for the snapshot being built.
Use this for bulk exports or datasets that brightdata_search_marketplace_dataset does not cover.
Poll brightdata_get_marketplace_snapshot until status is ready, then call brightdata_download_marketplace_snapshot.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `dataset_id` (`string`, required): Marketplace dataset ID (starts with gd_). Find it with brightdata_list_marketplace_datasets. Example: gd_l1viktl72bvl7bjuj0
- `filter` (`object`, required): Filter that selects records. A single condition has a field name, an operator and a value; operators are =, !=, >, <, >=, <=, in, not_in, includes, not_includes, array_includes, not_array_includes, plus is_null and is_not_null which take no value. Combine conditions in a group with operator and/or and a filters array, nested up to 3 levels. Get field names from brightdata_get_dataset_metadata. Example: {"operator": "and", "filters": [{"name": "country_code", "operator": "=", "value": "US"}, {"name": "followers", "operator": ">", "value": 1000}]}
- `records_limit` (`integer`, optional): Maximum number of records to include in the snapshot. Example: 1000

Example input: `{"dataset_id":"<dataset_id>","filter":{}}`

### `brightdata_rerun_snapshot`

Rerun Snapshot · Write

Run an earlier Bright Data scraper job (snapshot) again with the same inputs.
Returns snapshot_id for the new job.
Use this to refresh data for a previous job. Use brightdata_trigger_scrape to start a job with new inputs.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `snapshot_id` (`string`, required): Snapshot ID returned by brightdata_trigger_scrape, brightdata_scrape_sync (when it times out into async mode) or brightdata_list_snapshots. Starts with s_ or sd_. Example: s_m4x7enmven8djfqak

Example input: `{"snapshot_id":"<snapshot_id>"}`

### `brightdata_run_studio_realtime`

Run Studio Scraper · Write

Run a Scraper Studio scraper on one input and wait for the result (25 to 50 seconds at most).
Returns the collected records; if the scraper is still running at the timeout, returns HTTP 202 with a response_id.
Use this for one input you need right away. Use brightdata_trigger_studio_batch for many inputs.
On a response_id, collect the result with brightdata_get_studio_realtime_result.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `collector` (`string`, required): Scraper Studio scraper (collector) ID, starting with c_. Find it with brightdata_list_studio_scrapers. Example: c_m9im5n7v82p2y35la
- `input` (`object`, required): One input object whose fields match the scraper's input schema, for example a url or a keyword. Example: {"url": "https://www.ebay.com/itm/326972541236"}
- `timeout` (`string`, required): How long to wait for the result, between 25s and 50s. Example: 50s
- `version` (`string`, optional): Set to dev to run the development version of the scraper instead of the published one. One of: `dev`.

Example input: `{"collector":"<collector>","input":{"url":"https://www.ebay.com/itm/326972541236"},"timeout":"<timeout>"}`

### `brightdata_serp_search_async`

Search Engine Results (Async) · Write

Submit a Google search through Bright Data SERP API to run in the background.
Returns response_id for the job.
Use this for many searches without holding a connection open. Use brightdata_serp_search to get results in the same call.
The zone must have Asynchronous requests turned on in its Advanced settings. Collect results with brightdata_get_serp_result.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `q` (`string`, required): Search keywords or phrase. Example: best pizza in brooklyn
- `zone` (`string`, required): Name of the SERP API zone to bill the request to, exactly as shown in the Bright Data control panel (Web Access > zones) or returned by brightdata_list_active_zones. Asynchronous requests must be enabled on the zone. Example: serp_api1
- `brd_json` (`string`, optional): Response format: json for parsed results, html for the raw results page. One of: `json`, `html`.
- `country` (`string`, optional): Two-letter country code to send the request from. Example: us
- `gl` (`string`, optional): Two-letter country code that sets the country of the search. Example: us
- `hl` (`string`, optional): Two-letter language code for the results page. Example: en
- `start` (`integer`, optional): Result offset for paging; 10 returns the second page. Example: 10

Example input: `{"q":"<q>","zone":"<zone>"}`

### `brightdata_trigger_scrape`

Trigger Scrape · Write

Start an asynchronous Bright Data pre-built scraper job (a snapshot) for many inputs, optionally with a discovery phase.
Returns snapshot_id for the new job.
Use this for large batches or discovery (by keyword, category URL, location and so on). Use brightdata_scrape_sync for a few inputs you need right away.
Get the dataset_id and input fields from brightdata_list_scrapers. Then poll brightdata_get_snapshot_progress until status is ready and fetch records with brightdata_download_snapshot.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `dataset_id` (`string`, required): Scraper dataset ID that selects the pre-built scraper to run. Look it up with brightdata_list_scrapers or at https://docs.brightdata.com/scrapers.json; never guess it. Example: gd_l1viktl72bvl7bjuj0 (LinkedIn people profiles).
- `input` (`array`, required): Array of input objects for the scraper. Each object's fields depend on the scraper and collection method: most collect-by-URL scrapers take a url, while discovery methods take fields such as keyword, location or user_name. Check the scraper's input schema with brightdata_list_scrapers. Example: [{"url": "https://www.linkedin.com/in/satyanadella"}]
- `custom_output_fields` (`string`, optional): Output columns to keep, separated by a pipe (|). Use dot notation for nested fields. Omit to return every field. Example: url|name|about.updated_on
- `discover_by` (`string`, optional): Discovery method, used with type discover_new. Valid values depend on the scraper; common ones are keyword, best_sellers_url, category_url, location, url and user_name. Example: keyword
- `include_errors` (`boolean`, optional): Set to true to include a report of per-input errors (for example dead_page) with the results.
- `limit_multiple_results` (`integer`, optional): Cap on the total number of records the job collects across all inputs. Minimum 1. Example: 500
- `limit_per_input` (`integer`, optional): Maximum number of records to return for each input. Mostly useful for discovery requests, whose result count is otherwise open-ended. Minimum 1. Example: 10
- `type` (`string`, optional): Set to discover_new to run a discovery collection that finds new records (by keyword, category URL, location and so on) instead of collecting the exact inputs. Pair it with discover_by. One of: `discover_new`.

Example input: `{"dataset_id":"<dataset_id>","input":[{"url":"https://www.linkedin.com/in/satyanadella"}]}`

### `brightdata_trigger_studio_batch`

Trigger Studio Batch · Write

Start a batch collection with a Scraper Studio scraper for one or more inputs.
Returns collection_id and start_eta.
Use this to run a custom scraper over many inputs. Use brightdata_run_studio_realtime for one input returned right away.
Fetch results with brightdata_get_studio_batch_result. By default a new batch cancels a running one for the same scraper.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `collector` (`string`, required): Scraper Studio scraper (collector) ID, starting with c_. Find it with brightdata_list_studio_scrapers. Example: c_m9im5n7v82p2y35la
- `inputs` (`array`, required): Array of input objects, each matching the scraper's input schema. For one input, send an array with one object. Example: [{"url": "https://example.com/product/1"}, {"url": "https://example.com/product/2"}]
- `deadline` (`string`, optional): Maximum run time, after which Bright Data stops the collection. Use h, m or s, for example 1h, 30m or 45s.
- `name` (`string`, optional): Human-readable name for this batch. Example: nightly-price-check
- `version` (`string`, optional): Set to dev to run the development version of the scraper instead of the published one. One of: `dev`.

Example input: `{"collector":"<collector>","inputs":[{"url":"https://example.com/product/1"},{"url":"https://example.com/product/2"}]}`

### `brightdata_trigger_studio_realtime`

Trigger Studio Scraper (Async) · Write

Start a real-time Scraper Studio run on one input without waiting for it.
Returns response_id for the run.
Use this to queue single-input runs. Use brightdata_run_studio_realtime to wait for the result in the same call.
Collect the result with brightdata_get_studio_realtime_result.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `collector` (`string`, required): Scraper Studio scraper (collector) ID, starting with c_. Find it with brightdata_list_studio_scrapers. Example: c_m9im5n7v82p2y35la
- `input` (`object`, required): One input object whose fields match the scraper's input schema, for example a url or a keyword. Example: {"url": "https://www.ebay.com/itm/326972541236"}
- `version` (`string`, optional): Set to dev to run the development version of the scraper instead of the published one. One of: `dev`.

Example input: `{"collector":"<collector>","input":{"url":"https://www.ebay.com/itm/326972541236"}}`

### `brightdata_unlock_url_async`

Unlock URL (Async) · Write

Submit a Web Unlocker page fetch to run in the background instead of waiting for it.
Returns response_id for the job.
Use this for slow pages or many fetches. Use brightdata_unlock_url to get the page in the same call.
The zone must have Asynchronous requests turned on in its Advanced settings. Collect the page with brightdata_get_unlock_result.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `url` (`string`, required): Full URL of the page to fetch, including https://. Example: https://example.com/products/123
- `zone` (`string`, required): Name of the Web Unlocker zone to bill the request to, exactly as shown in the Bright Data control panel (Web Access > zones) or returned by brightdata_list_active_zones. Asynchronous requests must be enabled on the zone. Example: web_unlocker1
- `body` (`string`, optional): Raw request body to send to the target page, for POST requests. Example: q=shoes&page=2
- `country` (`string`, optional): Two-letter ISO 3166-1 country code to route the request through. Example: us
- `headers` (`object`, optional): Extra HTTP headers to send with the page request, as an object of header names to values. Example: {"Accept-Language": "en-US"}
- `method` (`string`, optional): HTTP method for the page request, for example GET or POST. Omit for GET.

Example input: `{"url":"<url>","zone":"<zone>"}`

## Related

Other Search connectors ([all 43](/agentkit/connectors/?category=search)):

- [Supadata](/agentkit/connectors/supadata/): Scalekit connector, API key, 21 tools
- [Exa](/agentkit/connectors/exa/): Scalekit connector, API key, 21 tools
- [Brave Search](/agentkit/connectors/brave/): Scalekit connector, API key, 18 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
