↑ ↓ to move ↵ to open
Website scraper API · Tool

Website Scraper API Extract Page API

Capture one public webpage or supported content URL and return data shaped by a caller-provided JSON Schema or fields shorthand. internal AI resolves remaining fields per the ai mode.

  • 1 credit per call
  • Failed calls are free
  • Updated
  • web.page.extract
Response completed
{  "extractor_version": "web-extractor-2026-08-25-universal-v7",  "schema_valid": true,  "semantic_valid": true,  "validation_errors": null,  "data": {},  "fields": {    "title": {      "confidence": 0.9,      "source": "metadata"    },    "heading": {      "confidence": 0.99,      "source": "dom_heading"    }  },  "stats": {    "ai_attempts": 0,    "ai_completion_tokens": 0,    "ai_enabled": false,    "ai_mode": "never",    "ai_prompt_tokens": 0,    "ai_used": false,    "capture_backend": "http",    "deterministic_fields": 2,    "fetch_ms": 1704,    "html_bytes": 559,    "rendered": false,    "schema_field_count": 2,    "schema_valid": true,    "semantic_valid": true,    "source_blocked": false,    "text_chars": 142,    "unresolved_fields": 0,    "work_units": 1  },  "evidence": [    {      "field": "title",      "score": 0.9,      "source": "metadata"    },    {      "field": "heading",      "score": 0.99,      "source": "dom_heading"    }  ],  "semantic_validation_errors": [],  "unresolved_fields": [],  "warnings": []}
Try it live, free
Input

What you send

The input object of the request, with every field the endpoint accepts.

FieldTypeRequiredWhat it doesExample
url string yes Public http(s) webpage or supported content URL to extract from. https://example.com/
accept_statuses array<integer> no
ai string no Extraction mode. Defaults to auto when fields is used, otherwise never. Allowed values: never, auto, always. never
allow_browser_fallback boolean no Default: false.
allow_truncated boolean no Default: false.
document object no
fields object no 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. {…}
follow_links boolean no Follow the page's own same-site links and merge up to max_pages pages for list fields and unresolved scalars. Default: false.
instructions string no Optional extraction guidance. Do not include secrets.
max_body_bytes integer no From 1 to 104857600.
max_pages integer no Pages to visit including the first when follow_links is set. From 1 to 50.
max_total_bytes integer no From 1 to 104857600.
mode string no Specialized extraction instead of output_schema/fields. product returns a normalized product record; selectors uses the selectors rules; highlights returns passages answering question. Allowed values: , product, selectors, highlights. product · selectors · highlights
output_schema object no JSON Schema object describing the desired data shape. Property descriptions double as per-field extraction hints. Provide exactly one of output_schema or fields.
question string no For mode highlights: the question the returned passages should answer.
selectors object no For mode selectors: output field -> CSS selector. Append @attr to read an attribute, e.g. a@href. Supports tag, #id, .class, [attr=value], descendant and child combinators, and :first-child.
Response

Fields it returns

What each record in the response holds, with the values from the sample above.

FieldTypeExample
evidence[].field string title
evidence[].score number 0.9
evidence[].source string metadata
data object 0 fields
evidence array 2 records
extractor_version string web-extractor-2026-08-25-universal-v7
fields object 2 fields
fields.* object 2 fields
fields.*.confidence number 0.99
fields.*.source string dom_heading
schema_valid boolean true
semantic_valid boolean true
semantic_validation_errors array empty in this sample
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 2
stats.schema_valid boolean true
stats.semantic_valid boolean true
stats.source_blocked boolean false
stats.text_chars integer 142
stats.unresolved_fields integer 0
stats.work_units integer 1
unresolved_fields array empty in this sample
validation_errors null null
warnings array empty in this sample
REST API · MCP server

Call it from your code, or ask your agent

Set UPSCRAPE_API_KEY to your key and copy a working request.

curl --request POST \  --url https://data.upscrape.com/execute \  --header "Authorization: Bearer $UPSCRAPE_API_KEY" \  --header "Content-Type: application/json" \  --header "Prefer: wait=30" \  --data '{  "capability": "web.page.extract",  "input": {    "ai": "never",    "fields": {      "heading": "main heading",      "title": "page title"    },    "url": "https://example.com/"  }}'
In your AI agent Claude · Cursor · any MCP client
1Add the Upscrape MCP server
https://data.upscrape.com/mcp
2Ask for the data in plain words

With Upscrape, get the Website Scraper API extract page for ai "never" and https://example.com/. Tell me what it costs before you run it, then show the results as a table.

The agent finds the endpoint, shows you the price, and runs it with your credits.
Website Scraper API

The other website tools

Questions

Website Scraper API Extract Page API FAQ

The short answers. The docs have the long ones.

Still have a question? Talk to the people who build the endpoints.
How much does the Website Scraper API Extract Page API cost?

1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.

What do I send?

Send url. The input fields below list every option with its type and limits.

Which sites does it work on?

Any public page a visitor can open without logging in. A page that is blocked or gone fails with its reason.

Can my AI agent call it?

Yes, over MCP: the agent finds web.page.extract, checks its price and runs it with the same credits as the REST API.

Get started

Your first page is free.

Up to 100 free credits to start, no card needed.