# firecrawl.web.extract.structured

Start JSON extraction from URLs by prompt or schema

> Extract structured data from pages using LLMs

Page: https://telipot.com/catalog/tasks/firecrawl.web.extract.structured · Markdown: https://telipot.com/catalog/tasks/firecrawl.web.extract.structured/md · JSON: https://telipot.com/catalog/tasks/firecrawl.web.extract.structured/json

| Field | Value |
| --- | --- |
| provider | [Firecrawl](https://telipot.com/catalog/providers/firecrawl) `firecrawl` |
| capability | [`web.extract.structured`](https://telipot.com/catalog/capabilities/web.extract.structured) |
| kind | data |
| tier | core |
| price | Price unknown (Not listed, not free) |
| price note | Extract bills credits by tokens used, each credit worth 15 tokens, and the docs publish no per-call or per-URL price. The status route reports tokensUsed. |
| identity | Your plan |
| auth | `bearer · Authorization: Bearer` |
| scope | any_account |
| principal | organization |
| required_scopes | none |
| retention | standard |
| route | `POST https://api.firecrawl.dev/v2/extract` |
| 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/extract |

## Preview the price · nothing runs

```bash
telipot run firecrawl.web.extract.structured \
  --input-json '{"urls":["https://example.com"],"prompt":"Extract the page title"}' \
  --quote
```

## Run it

```bash
telipot run firecrawl.web.extract.structured \
  --input-json '{"urls":["https://example.com"],"prompt":"Extract the page title"}'
```

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

## Input

| Field | In | Type | Required | Constraints | Note |
| --- | --- | --- | --- | --- | --- |
| `urls` | body | array | yes |  | The URLs to extract data from, in glob format; a trailing /* crawls the whole domain (experimental) |
| `prompt` | body | string | no |  | Guides the extraction; required when there is no schema |
| `schema` | body | object | no |  | JSON Schema of the data to return; required when there is no prompt |
| `enableWebSearch` | body | boolean | no | default false | Let the extraction use web search to find additional data |
| `showSources` | body | boolean | no | default false | Include the sources used in the response as sources |
| `includeSubdomains` | body | boolean | no | default true | Also scan subdomains of the provided URLs |

## Input schema

```json
{
  "type": "object",
  "properties": {
    "urls": {
      "type": "array",
      "description": "The URLs to extract data from, in glob format; a trailing /* crawls the whole domain (experimental)",
      "examples": [
        [
          "https://example.com"
        ]
      ]
    },
    "prompt": {
      "type": "string",
      "description": "Guides the extraction; required when there is no schema",
      "examples": [
        "Extract the page title"
      ]
    },
    "schema": {
      "type": "object",
      "description": "JSON Schema of the data to return; required when there is no prompt"
    },
    "enableWebSearch": {
      "type": "boolean",
      "description": "Let the extraction use web search to find additional data",
      "default": false
    },
    "showSources": {
      "type": "boolean",
      "description": "Include the sources used in the response as sources",
      "default": false
    },
    "includeSubdomains": {
      "type": "boolean",
      "description": "Also scan subdomains of the provided URLs",
      "default": true
    }
  },
  "required": [
    "urls"
  ],
  "additionalProperties": false
}
```

## Output schema

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