
Start JSON extraction from URLs by prompt or schema.
Extract structured data from pages using LLMs
Job web.extract.structured
telipot run firecrawl.web.extract.structured \
--input-json '{"urls":["https://example.com"],"prompt":"Extract the page title"}' \
--quotePrice
Price unknownPriced· before it runs
firecrawl.web.extract.structured
Price unknownYour plan
Whose account it uses
1The person asking
not needed2Your company’s Firecrawl plan
Selected identity for this example3Our account
not usedWhat 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
| source | docs · docs.firecrawl.dev/features/extract · checked 2026-10-05 |
| confidence | unknown |
| 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. |
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.

