# firecrawl.web.page.batch.start

Start a batch scrape of many URLs; returns the job id

> Scrape multiple URLs and optionally extract information using an LLM

Page: https://telipot.com/catalog/tasks/firecrawl.web.page.batch.start · Markdown: https://telipot.com/catalog/tasks/firecrawl.web.page.batch.start/md · JSON: https://telipot.com/catalog/tasks/firecrawl.web.page.batch.start/json

| Field | Value |
| --- | --- |
| provider | [Firecrawl](https://telipot.com/catalog/providers/firecrawl) `firecrawl` |
| capability | [`web.page.batch.start`](https://telipot.com/catalog/capabilities/web.page.batch.start) |
| kind | data |
| tier | core |
| price | $0.0038 / page (1 credit · docs) |
| price note | 1 credit per page, billed as each page finishes, not when the job is submitted; the status route reports creditsUsed. A PDF costs 1 credit per PDF page. The JSON and other formats that add credits are not offered by this task. |
| identity | Your plan |
| auth | `bearer · Authorization: Bearer` |
| scope | any_account |
| principal | organization |
| required_scopes | none |
| retention | standard |
| route | `POST https://api.firecrawl.dev/v2/batch/scrape` |
| verification | Not verified yet. Not checked yet. We test with a real request before we mark it. |
| status | live |
| docs | https://docs.firecrawl.dev/api-reference/endpoint/batch-scrape |

## Preview the price · nothing runs

```bash
telipot run firecrawl.web.page.batch.start \
  --input-json '{"urls":["https://example.com"]}' \
  --quote
```

## Run it

```bash
telipot run firecrawl.web.page.batch.start \
  --input-json '{"urls":["https://example.com"]}'
```

```bash
curl https://api.telipot.com/v1/tasks/firecrawl.web.page.batch.start/run \
  -H "Authorization: Bearer $TELIPOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"urls":["https://example.com"]}'
```

## Input

| Field | In | Type | Required | Constraints | Note |
| --- | --- | --- | --- | --- | --- |
| `urls` | body | array | yes |  | The URLs to scrape |
| `ignoreInvalidURLs` | body | boolean | no | default true | Skip invalid URLs and list them in invalidURLs instead of failing the request |
| `maxConcurrency` | body | integer | no |  | Maximum number of concurrent scrapes; defaults to the team's concurrency limit |
| `onlyMainContent` | body | boolean | no | default true | Only return the main content of each page, excluding headers, navs and footers |
| `waitFor` | body | integer | no | default 0 | Delay in milliseconds before fetching each page |
| `maxAge` | body | integer | no | default 172800000 | Accept a cached copy younger than this many milliseconds (default 2 days) |
| `timeout` | body | integer | no | 1000 to 300000; default 60000 | Timeout in milliseconds |
| `mobile` | body | boolean | no | default false | Emulate scraping from a mobile device |
| `proxy` | body | string | no | one of "basic", "enhanced", "auto"; default "auto" | auto retries with enhanced proxies when basic fails; enhanced is billed like basic |

## Input schema

```json
{
  "type": "object",
  "properties": {
    "urls": {
      "type": "array",
      "description": "The URLs to scrape",
      "examples": [
        [
          "https://example.com"
        ]
      ]
    },
    "ignoreInvalidURLs": {
      "type": "boolean",
      "description": "Skip invalid URLs and list them in invalidURLs instead of failing the request",
      "default": true
    },
    "maxConcurrency": {
      "type": "integer",
      "description": "Maximum number of concurrent scrapes; defaults to the team's concurrency limit"
    },
    "onlyMainContent": {
      "type": "boolean",
      "description": "Only return the main content of each page, excluding headers, navs and footers",
      "default": true
    },
    "waitFor": {
      "type": "integer",
      "description": "Delay in milliseconds before fetching each page",
      "default": 0
    },
    "maxAge": {
      "type": "integer",
      "description": "Accept a cached copy younger than this many milliseconds (default 2 days)",
      "default": 172800000
    },
    "timeout": {
      "type": "integer",
      "description": "Timeout in milliseconds",
      "default": 60000,
      "minimum": 1000,
      "maximum": 300000
    },
    "mobile": {
      "type": "boolean",
      "description": "Emulate scraping from a mobile device",
      "default": false
    },
    "proxy": {
      "type": "string",
      "description": "auto retries with enhanced proxies when basic fails; enhanced is billed like basic",
      "enum": [
        "basic",
        "enhanced",
        "auto"
      ],
      "default": "auto"
    }
  },
  "required": [
    "urls"
  ],
  "additionalProperties": false
}
```

## Output schema

```json
{
  "type": "object",
  "required": [
    "success",
    "id",
    "url"
  ],
  "properties": {
    "success": {
      "type": "boolean"
    },
    "id": {
      "type": "string",
      "description": "The batch job id to pass to the status task"
    },
    "url": {
      "type": "string",
      "description": "The status URL of the job"
    },
    "invalidURLs": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      }
    }
  }
}
```
