Skip to content

Start JSON extraction from URLs by prompt or schema.

Extract structured data from pages using LLMs

Job web.extract.structured

Your AI asks

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

Price

Price unknown
Priced· before it runs

firecrawl.web.extract.structured

Price unknownYour plan

Whose account it uses

1The person asking
not needed
2Your company’s Firecrawl plan
Selected identity for this example
3Our account
not used

What it sends

{
  "urls": ["https://example.com"],
  "prompt": "Extract the page title"
}

Your Firecrawl login is added for you. Your AI never sees it.

What it costs

Unknown

not listed, never free

sourcedocs · docs.firecrawl.dev/features/extract · checked 2026-10-05
confidenceunknown
noteExtract 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.

Preview the price first. --quote runs nothing.

For developers · run it

Shell · runs the task on the named account

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

urls

array · required

The URLs to extract data from, in glob format; a trailing /* crawls the whole domain (experimental)

prompt

string

Guides the extraction; required when there is no schema

schema

object

JSON Schema of the data to return; required when there is no prompt

enableWebSearch

boolean · default false

Let the extraction use web search to find additional data

showSources

boolean · default false

Include the sources used in the response as sources

includeSubdomains

boolean · default true

Also scan subdomains of the provided URLs

success

boolean

id

string

The extract job id to pass to the status task

invalidURLs

array | null

Full output schema · JSONNested fields and constraints

Output JSON Schema

{
  "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"
      }
    }
  }
}

A real answer

No example captured yet: one is recorded when telipot catalog verify passes.