Extract Page
Capture one public webpage or supported content URL and return data shaped by a caller-provided JSON Schema or fields shorthand. Deterministic extraction uses page metadata, the evidence graph, parsed files, and filtered URL enumeration first; internal AI resolves remaining fields per the ai mode.
web.page.extract
/execute
Shared execution endpoint
Input parameters
accept_statuses
array<integer>
optional
Accept statuses supplied for this request.
ai
string
optional
Extraction mode. never: deterministic only. auto: deterministic first, internal AI only for unresolved fields (degrades gracefully when AI is unavailable). always: deterministic plus AI. Defaults to auto when fields is used, otherwise never.
never
ai_enabled
boolean
optional
Deprecated alias for ai: always. Prefer the ai parameter.
allow_browser_fallback
boolean
optional
Allow browser fallback supplied for this request.
allow_truncated
boolean
optional
Allow truncated supplied for this request.
document
object
optional
Optional document processing controls used before deterministic or AI field extraction.
document.chunk_chars
integer
optional
Chunk chars supplied for this request.
document.continuation_token
string
optional
Continuation token supplied for this request.
document.ocr
string
optional
Ocr supplied for this request. Allowed values: `auto`, `never`, `always`.
document.outputs
array<string>
optional
Requested document outputs. source returns the originally captured bytes: inline through 5.5 MB, otherwise through a hash-verified durable store, and fails if neither path can deliver them. When source is omitted, remote_source is provenance only and contains no bytes.
document.page_end
integer
optional
Page end supplied for this request.
document.page_start
integer
optional
Page start supplied for this request.
fields
object
optional
Shorthand alternative to output_schema: field name mapped to a natural-language description of what to extract. Compiled into a schema internally. Provide exactly one of output_schema or fields.
{"canonical_url":"canonical url of the page","description":"short page description","title":"page title"}
instructions
string
optional
Optional extraction guidance. Do not include secrets.
max_body_bytes
integer
optional
Max body bytes supplied for this request.
max_total_bytes
integer
optional
Max total bytes supplied for this request.
output_schema
object
optional
JSON Schema object describing the desired data shape. Property descriptions double as per-field extraction hints. Constraints such as items.pattern filter deterministic URL enumeration. Provide exactly one of output_schema or fields.
url
string
required
Public http(s) webpage or supported content URL to extract from.
https://example.com/
Response
Successful output is returned in results[0].data. Raw platform output is
intentionally open-ended and may evolve with the upstream source.
Illustrative output fields
Derived from the sample above for orientation only. These observed fields are not a fixed response schema.
| Path | Observed type | Example |
|---|---|---|
data |
object |
3 fields |
data.canonical_url |
string |
https://example.com/ |
data.description |
null |
null |
data.title |
string |
Example Domain |
evidence |
array |
2 items |
evidence |
array |
2 items |
extractor_version |
string |
web-extractor-2026-08-23-universal-v4 |
fields |
object |
2 fields |
fields.canonical_url |
object |
4 fields |
fields.title |
object |
4 fields |
schema_valid |
boolean |
true |
semantic_valid |
boolean |
true |
semantic_validation_errors |
array |
0 items |
stats |
object |
18 fields |
stats.ai_attempts |
integer |
0 |
stats.ai_completion_tokens |
integer |
0 |
stats.ai_enabled |
boolean |
false |
stats.ai_mode |
string |
never |
stats.ai_prompt_tokens |
integer |
0 |
stats.ai_used |
boolean |
false |
stats.capture_backend |
string |
http |
stats.deterministic_fields |
integer |
2 |
stats.fetch_ms |
integer |
1704 |
stats.html_bytes |
integer |
559 |
stats.rendered |
boolean |
false |
stats.schema_field_count |
integer |
3 |
stats.schema_valid |
boolean |
true |
stats.semantic_valid |
boolean |
true |
stats.source_blocked |
boolean |
false |
stats.text_chars |
integer |
142 |
stats.unresolved_fields |
integer |
1 |
stats.work_units |
integer |
1 |
unresolved_fields |
array |
1 items |
unresolved_fields |
array |
1 items |
validation_errors |
null |
null |
warnings |
array |
0 items |
Execution behavior
A 200 response completed inline. A 202 response was queued; poll
GET /jobs/:id until the job reaches completed or
failed.