JSON Schema enforced on the extracted output. When supplied,
the result is validated against the schema and one repair
attempt is made before returning validation_failed.
Providing both user_prompt and output_schema gives the
best results.
URL-cache opt-in — same three-state semantics as /scrape
(omitted = no cache, 0 = bypass read but write on miss,
>0 = return entries fresher than N seconds).
Stealth requests, custom-headered requests, and URLs with
query strings or fragments are never cached.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"webscrape.ai","description":"Fetch pages and return structured JSON, HTML, markdown, or replayed browser output.","colors":{"primary":"#f27b2c","light":"#f27b2c","dark":"#f27b2c"},"logo":{"light":"https://mintcdn.com/webscrapeai/ePoN8H5CXXUgyfoK/logo/light.svg?fit=max\u0026auto=format\u0026n=ePoN8H5CXXUgyfoK\u0026q=85\u0026s=d2a150ff3a0eab538f70815685c3129b","dark":"https://mintcdn.com/webscrapeai/OItnfylQRhpmKYVI/logo/dark.svg?fit=max\u0026auto=format\u0026n=OItnfylQRhpmKYVI\u0026q=85\u0026s=d17c859281cdbddbe3852aa8aed3ba0e","href":"https://webscrape.ai"},"favicon":"https://mintcdn.com/webscrapeai/J4HnX7V9B1a7VXr9/favicon.ico?fit=max\u0026auto=format\u0026n=J4HnX7V9B1a7VXr9\u0026q=85\u0026s=1039f6096d1386872339b2c9604640fe","api":{"mdx":{"auth":{"method":"key","name":"X-API-Key"},"server":"https://api.webscrape.ai/v1"}},"appearance":{"default":"dark","strict":true},"background":{"decoration":"grid","color":{"dark":"#0a0a0a"}},"navbar":{"links":[{"icon":"github","href":"https://github.com/webscrape-ai","label":"github.com/webscrape-ai"}],"primary":{"type":"button","label":"Dashboard","href":"https://webscrape.ai/app"}},"footer":{"socials":{"github":"https://github.com/webscrape-ai"},"links":[{"header":"Product","items":[{"label":"Pricing","href":"https://webscrape.ai/pricing"},{"label":"Playground","href":"https://webscrape.ai/playground"},{"label":"Dashboard","href":"https://webscrape.ai/app"}]},{"header":"Resources","items":[{"label":"GitHub","href":"https://github.com/webscrape-ai"},{"label":"Hugging Face","href":"https://huggingface.co/Webscrape-AI"},{"label":"Email support","href":"mailto:hello@webscrape.ai"}]}]},"seo":{"indexing":"all"},"fonts":{"family":"Geist","weight":500,"format":"woff2"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"interaction":{"drilldown":false},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"webscrapeai","hasAudioNarration":false,"actualSubdomain":"webscrapeai","customDomains":["webscrape.ai"],"gitSource":{"type":"github","owner":"webscrape-ai","repo":"docs","deployBranch":"main","isPrivate":false,"contentDirectory":"","mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21dde71f92707db5b702d0","collectionId":"c2a6df67-dbce-4309-a5e4-b88c4baeb90d","schemaVersion":"v2"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae956caa79c9948d24b79fa:success","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"Documentation","count":13},{"language":"default","tag":"API Reference","count":10},{"language":"default","tag":"Concepts","count":7},{"language":"default","tag":"SmartBrowse","count":5},{"language":"default","tag":"Scrape","count":4},{"language":"default","tag":"Get started","count":3},{"language":"default","tag":"Features","count":3},{"language":"default","tag":"Overview","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","href":"/docs/_mintlify/custom/webscrapeai/3acb135554eb193e/style.css"}],"page":{"pagePath":"api-reference/scrape/structured-extraction-with-json-schema-validation","slug":"/api-reference/scrape/structured-extraction-with-json-schema-validation","pageMetadata":{"title":"Structured extraction with JSON-schema validation","description":"Give a URL and a `user_prompt` (and optionally an `output_schema`),\nget JSON back. Handles long content, noisy pages, and complex\nschemas.\n\n**Cost:** 5 credits (+5 with `stealth: true`).\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /smartscraper","href":"/api-reference/scrape/structured-extraction-with-json-schema-validation","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Give a URL and a \", _jsx(_components.code, {\n children: \"user_prompt\"\n }), \" (and optionally an \", _jsx(_components.code, {\n children: \"output_schema\"\n }), \"),\\nget JSON back. Handles long content, noisy pages, and complex\\nschemas.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Cost:\"\n }), \" 5 credits (+5 with \", _jsx(_components.code, {\n children: \"stealth: true\"\n }), \").\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Structured extraction with JSON-schema validation","description":"Give a URL and a `user_prompt` (and optionally an `output_schema`),\nget JSON back. Handles long content, noisy pages, and complex\nschemas.\n\n**Cost:** 5 credits (+5 with `stealth: true`).\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /smartscraper","href":"/api-reference/scrape/structured-extraction-with-json-schema-validation","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Scrape"],"operationId":"smartscraper","summary":"Structured extraction with JSON-schema validation","description":"Give a URL and a `user_prompt` (and optionally an `output_schema`),\nget JSON back. Handles long content, noisy pages, and complex\nschemas.\n\n**Cost:** 5 credits (+5 with `stealth: true`).\n","requestBody":"0216f8d9-9665-42e8-84f4-7ca555008f3f","responses":{"200":"49728f59-5283-4066-a8d7-46e0e5a9fa1a","400":"3d2a2618-7f08-4d58-b06a-c2967299695c","401":"1eb17af6-5389-4629-8b1b-680a6ccff6cc","402":"c4427d12-96a7-4657-8549-4f10384d36f1","403":"db34c4d5-5319-4843-9935-83bea4c3af2a","409":"1e2b8f3f-efca-4aa9-9fb6-441ea4f60594","422":"537d78a8-9e05-4ced-b5ba-7f8976fd0094","429":"5689ae29-c0b9-4792-b13f-03ec92931b52","500":"5916086a-014e-41ad-9aa3-c5b2670df2c6","502":"d252ccd4-deab-480c-96ff-70ec74b0fbda"},"method":"post","type":"path","servers":["38dce4f4-7b54-429e-b95e-8cd91fea7b8d"],"security":["a065ee87-99d0-4701-a385-8e14eaf28edf"],"path":"/smartscraper","baseUrlOptions":["https://api.webscrape.ai/v1"],"title":"Structured extraction with JSON-schema validation","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["website_url","user_prompt"],"properties":{"website_url":{"type":"string","format":"uri","example":"https://news.ycombinator.com","isRequired":true,"uniqueKey":"website_url","typeLabel":"string\u003curi>"},"user_prompt":{"type":"string","description":"Plain-English description of what to extract.","example":"Extract the front-page stories with title, url, and score.","isRequired":true,"uniqueKey":"user_prompt","typeLabel":"string"},"output_schema":{"type":"object","additionalProperties":true,"description":"JSON Schema enforced on the extracted output. When supplied,\nthe result is validated against the schema and one repair\nattempt is made before returning `validation_failed`.\nProviding both `user_prompt` and `output_schema` gives the\nbest results.\n","example":{"type":"object","properties":{"stories":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string"},"score":{"type":"integer"}}}}}},"uniqueKey":"output_schema","typeLabel":"object"},"page_complexity":{"type":"string","enum":["low","high"],"default":"low","description":"`low` (default) is faster and cheaper. Bump to `high` for\nvisually busy pages or schemas with many nested fields.\n","uniqueKey":"page_complexity","typeLabel":"enum\u003cstring>"},"detail_level":{"type":"string","enum":["low","medium","high"],"default":"medium","description":"How exhaustively to populate the result.","uniqueKey":"detail_level","typeLabel":"enum\u003cstring>"},"parse_mode":{"type":"string","enum":["accurate","speed"],"default":"accurate","description":"Cleaner mode. `accurate` is more forgiving on malformed pages;\n`speed` is faster.\n","uniqueKey":"parse_mode","typeLabel":"enum\u003cstring>"},"plain_text":{"type":"boolean","default":false,"description":"Return the raw extracted text under `result` instead of a\nparsed JSON object. Bypasses `output_schema` validation.\n","uniqueKey":"plain_text","typeLabel":"boolean"},"include_tags":{"type":"array","items":{"type":"string","uniqueKey":"include_tags.items.[INDEX]","typeLabel":"string"},"description":"Whitelist of HTML tags to keep before extraction.","uniqueKey":"include_tags","typeLabel":"string[]"},"exclude_tags":{"type":"array","items":{"type":"string","uniqueKey":"exclude_tags.items.[INDEX]","typeLabel":"string"},"description":"Blacklist of HTML tags to drop before extraction.","uniqueKey":"exclude_tags","typeLabel":"string[]"},"reduce_content":{"type":"boolean","description":"Trim long content before extraction. Helps on pages with lots\nof repetitive boilerplate. Uses a sensible default when omitted.\n","uniqueKey":"reduce_content","typeLabel":"boolean"},"experimental":{"type":"boolean","default":false,"description":"Opt in to an alternate extraction path that can do better on\nhard-to-parse pages. Behavior may change without notice.\n","uniqueKey":"experimental","typeLabel":"boolean"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"headers.additionalProperties","typeLabel":"string"},"description":"Custom request headers forwarded to the fetcher. Providing\nany headers disables URL caching for this request.\n","uniqueKey":"headers","typeLabel":"object"},"max_age":{"type":"integer","minimum":0,"description":"URL-cache opt-in — same three-state semantics as `/scrape`\n(omitted = no cache, 0 = bypass read but write on miss,\n`>0` = return entries fresher than N seconds).\n\nStealth requests, custom-headered requests, and URLs with\nquery strings or fragments are never cached.\n","uniqueKey":"max_age","typeLabel":"integer"},"stealth":{"type":"boolean","default":false,"description":"Use stealth mode. +5 credits.","uniqueKey":"stealth","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"website_url":"https://news.ycombinator.com","user_prompt":"Extract the front-page stories with title, url, and score.","output_schema":{"type":"object","properties":{"stories":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string"},"score":{"type":"integer"}}}}}},"page_complexity":"low","detail_level":"medium","parse_mode":"accurate","plain_text":false,"include_tags":["\u003cstring>"],"exclude_tags":["\u003cstring>"],"reduce_content":true,"experimental":false,"headers":{},"max_age":1,"stealth":false}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"49728f59-5283-4066-a8d7-46e0e5a9fa1a":{"description":"Successfully extracted.","content":{"application/json":{"schema":{"type":"object","required":["data","credits_used","credits_remaining","status","request_id"],"properties":{"status":{"type":"string","description":"Discriminator for the envelope variant.","enum":["completed"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"request_id":{"type":"string","example":"req_aB3xY9Kp","description":"Per-request id. Also returned as the `X-Request-ID` response\nheader. Include it when reporting issues.\n","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"data":{"type":"object","required":["request_id"],"properties":{"request_id":{"type":"string","description":"Extraction id. Distinct from the envelope's `request_id`.","isRequired":true,"uniqueKey":"data.request_id","typeLabel":"string"},"result":{"oneOf":[{"type":"object","description":"The extracted output.\n\n * When `output_schema` is supplied → a JSON object that\n matches the schema.\n * When `plain_text: true` → a string.\n * Otherwise → a free-shape JSON object inferred from\n `user_prompt`.\n","additionalProperties":true,"uniqueKey":"data.result.oneOf.0","typeLabel":"object"},{"type":"array","items":{"oneOf":[{}],"uniqueKey":"data.result.oneOf.1.items.[INDEX]","typeLabel":"any"},"description":"The extracted output.\n\n * When `output_schema` is supplied → a JSON object that\n matches the schema.\n * When `plain_text: true` → a string.\n * Otherwise → a free-shape JSON object inferred from\n `user_prompt`.\n","uniqueKey":"data.result.oneOf.1","typeLabel":"any[]"},{"type":"string","description":"The extracted output.\n\n * When `output_schema` is supplied → a JSON object that\n matches the schema.\n * When `plain_text: true` → a string.\n * Otherwise → a free-shape JSON object inferred from\n `user_prompt`.\n","uniqueKey":"data.result.oneOf.2","typeLabel":"string"}],"uniqueKey":"data.result","typeLabel":"object | any[] | string"},"latency_ms":{"type":"integer","description":"Total extraction time in milliseconds.","uniqueKey":"data.latency_ms","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"},"credits_used":{"type":"integer","example":5,"isRequired":true,"uniqueKey":"credits_used","typeLabel":"integer"},"credits_remaining":{"type":"integer","example":495,"isRequired":true,"uniqueKey":"credits_remaining","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":"completed","request_id":"req_aB3xY9Kp","data":{"request_id":"\u003cstring>","result":{},"latency_ms":123},"credits_used":5,"credits_remaining":495}}},"exampleType":"generated"}},"exampleType":"generated"},"3d2a2618-7f08-4d58-b06a-c2967299695c":{"description":"Malformed request: missing field, invalid JSON, invalid URL.","content":{"application/json":{"schema":{"type":"object","required":["error","status","request_id"],"properties":{"status":{"type":"string","description":"Discriminator for the envelope variant.","enum":["error"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"request_id":{"type":"string","example":"req_aB3xY9Kp","description":"Per-request id. Also returned as the `X-Request-ID` response\nheader. Include it when reporting issues.\n","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable error code. SDKs branch on this.","enum":["invalid_request","unauthorized","insufficient_credits","email_verification_required","forbidden","not_found","conflict","account_deletion_pending","validation_failed","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable. May change between releases. Log it; don't pattern-match.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"description":"Optional structured context (e.g. `{balance, required}` for `insufficient_credits`).","uniqueKey":"error.details","typeLabel":"any"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"status":"error","error":{"code":"invalid_request","message":"url is required"},"request_id":"req_aB3xY9Kp"},"examples":{"Example":{"title":"Example","value":{"status":"error","error":{"code":"invalid_request","message":"url is required"},"request_id":"req_aB3xY9Kp"}}},"exampleType":"examples"}},"exampleType":"examples"},"1eb17af6-5389-4629-8b1b-680a6ccff6cc":{"description":"Missing, invalid, or revoked API key.","content":{"application/json":{"schema":{"type":"object","required":["error","status","request_id"],"properties":{"status":{"type":"string","description":"Discriminator for the envelope variant.","enum":["error"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"request_id":{"type":"string","example":"req_aB3xY9Kp","description":"Per-request id. Also returned as the `X-Request-ID` response\nheader. Include it when reporting issues.\n","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable error code. SDKs branch on this.","enum":["invalid_request","unauthorized","insufficient_credits","email_verification_required","forbidden","not_found","conflict","account_deletion_pending","validation_failed","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable. May change between releases. Log it; don't pattern-match.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"description":"Optional structured context (e.g. `{balance, required}` for `insufficient_credits`).","uniqueKey":"error.details","typeLabel":"any"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"status":"error","error":{"code":"unauthorized","message":"missing or invalid credentials"},"request_id":"req_aB3xY9Kp"},"examples":{"Example":{"title":"Example","value":{"status":"error","error":{"code":"unauthorized","message":"missing or invalid credentials"},"request_id":"req_aB3xY9Kp"}}},"exampleType":"examples"}},"exampleType":"examples"},"c4427d12-96a7-4657-8549-4f10384d36f1":{"description":"Out of credits OR email not verified. Branch on `error.code`:\n`insufficient_credits` (with `details: {balance, required}`) vs\n`email_verification_required`.\n","content":{"application/json":{"schema":{"type":"object","required":["error","status","request_id"],"properties":{"status":{"type":"string","description":"Discriminator for the envelope variant.","enum":["error"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"request_id":{"type":"string","example":"req_aB3xY9Kp","description":"Per-request id. Also returned as the `X-Request-ID` response\nheader. Include it when reporting issues.\n","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable error code. SDKs branch on this.","enum":["invalid_request","unauthorized","insufficient_credits","email_verification_required","forbidden","not_found","conflict","account_deletion_pending","validation_failed","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable. May change between releases. Log it; don't pattern-match.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"description":"Optional structured context (e.g. `{balance, required}` for `insufficient_credits`).","uniqueKey":"error.details","typeLabel":"any"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"insufficient":{"title":"insufficient","value":{"status":"error","error":{"code":"insufficient_credits","message":"not enough credits to complete this request","details":{"balance":2,"required":5}},"request_id":"req_aB3xY9Kp"}},"unverified":{"title":"unverified","value":{"status":"error","error":{"code":"email_verification_required","message":"verify your email address before spending credits"},"request_id":"req_aB3xY9Kp"}}},"exampleType":"examples"}},"exampleType":"examples"},"db34c4d5-5319-4843-9935-83bea4c3af2a":{"description":"The caller is authenticated but not allowed to perform this\naction.\n","content":{"application/json":{"schema":{"type":"object","required":["error","status","request_id"],"properties":{"status":{"type":"string","description":"Discriminator for the envelope variant.","enum":["error"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"request_id":{"type":"string","example":"req_aB3xY9Kp","description":"Per-request id. Also returned as the `X-Request-ID` response\nheader. Include it when reporting issues.\n","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable error code. SDKs branch on this.","enum":["invalid_request","unauthorized","insufficient_credits","email_verification_required","forbidden","not_found","conflict","account_deletion_pending","validation_failed","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable. May change between releases. Log it; don't pattern-match.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"description":"Optional structured context (e.g. `{balance, required}` for `insufficient_credits`).","uniqueKey":"error.details","typeLabel":"any"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"status":"error","error":{"code":"forbidden","message":"forbidden"},"request_id":"req_aB3xY9Kp"},"examples":{"Example":{"title":"Example","value":{"status":"error","error":{"code":"forbidden","message":"forbidden"},"request_id":"req_aB3xY9Kp"}}},"exampleType":"examples"}},"exampleType":"examples"},"1e2b8f3f-efca-4aa9-9fb6-441ea4f60594":{"description":"Resource is in a state that disallows the action. The most\ncommon case is `account_deletion_pending`: the account is in\nthe 30-day deletion grace window and cannot spend credits until\ndeletion is cancelled.\n","content":{"application/json":{"schema":{"type":"object","required":["error","status","request_id"],"properties":{"status":{"type":"string","description":"Discriminator for the envelope variant.","enum":["error"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"request_id":{"type":"string","example":"req_aB3xY9Kp","description":"Per-request id. Also returned as the `X-Request-ID` response\nheader. Include it when reporting issues.\n","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable error code. SDKs branch on this.","enum":["invalid_request","unauthorized","insufficient_credits","email_verification_required","forbidden","not_found","conflict","account_deletion_pending","validation_failed","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable. May change between releases. Log it; don't pattern-match.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"description":"Optional structured context (e.g. `{balance, required}` for `insufficient_credits`).","uniqueKey":"error.details","typeLabel":"any"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"status":"error","error":{"code":"account_deletion_pending","message":"account is scheduled for deletion — cancel to restore access","details":{"deletion_scheduled_for":"2026-06-15T12:00:00Z"}},"request_id":"req_aB3xY9Kp"},"examples":{"Example":{"title":"Example","value":{"status":"error","error":{"code":"account_deletion_pending","message":"account is scheduled for deletion — cancel to restore access","details":{"deletion_scheduled_for":"2026-06-15T12:00:00Z"}},"request_id":"req_aB3xY9Kp"}}},"exampleType":"examples"}},"exampleType":"examples"},"537d78a8-9e05-4ced-b5ba-7f8976fd0094":{"description":"The request was accepted but extraction failed logically — the\noutput didn't match the requested schema after one repair\nattempt, or the extraction itself errored.\n","content":{"application/json":{"schema":{"type":"object","required":["error","status","request_id"],"properties":{"status":{"type":"string","description":"Discriminator for the envelope variant.","enum":["error"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"request_id":{"type":"string","example":"req_aB3xY9Kp","description":"Per-request id. Also returned as the `X-Request-ID` response\nheader. Include it when reporting issues.\n","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable error code. SDKs branch on this.","enum":["invalid_request","unauthorized","insufficient_credits","email_verification_required","forbidden","not_found","conflict","account_deletion_pending","validation_failed","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable. May change between releases. Log it; don't pattern-match.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"description":"Optional structured context (e.g. `{balance, required}` for `insufficient_credits`).","uniqueKey":"error.details","typeLabel":"any"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"status":"error","error":{"code":"validation_failed","message":"Output did not match the requested schema after one repair attempt."},"request_id":"req_aB3xY9Kp"},"examples":{"Example":{"title":"Example","value":{"status":"error","error":{"code":"validation_failed","message":"Output did not match the requested schema after one repair attempt."},"request_id":"req_aB3xY9Kp"}}},"exampleType":"examples"}},"exampleType":"examples"},"5689ae29-c0b9-4792-b13f-03ec92931b52":{"description":"Per-plan throttle exceeded. `error.details.reason` distinguishes\nthe cause:\n\n * `rate_limit_per_min` — too many requests per minute.\n * `max_concurrent_requests` — too many in-flight at once.\n * `sb_runs_per_month` — SmartBrowse run quota for the\n rolling 30-day window.\n","content":{"application/json":{"schema":{"type":"object","required":["error","status","request_id"],"properties":{"status":{"type":"string","description":"Discriminator for the envelope variant.","enum":["error"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"request_id":{"type":"string","example":"req_aB3xY9Kp","description":"Per-request id. Also returned as the `X-Request-ID` response\nheader. Include it when reporting issues.\n","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable error code. SDKs branch on this.","enum":["invalid_request","unauthorized","insufficient_credits","email_verification_required","forbidden","not_found","conflict","account_deletion_pending","validation_failed","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable. May change between releases. Log it; don't pattern-match.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"description":"Optional structured context (e.g. `{balance, required}` for `insufficient_credits`).","uniqueKey":"error.details","typeLabel":"any"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"rate_per_min":{"title":"rate_per_min","value":{"status":"error","error":{"code":"rate_limited","message":"request rate exceeds plan limit — upgrade plan or slow down","details":{"limit_per_min":60,"reason":"rate_limit_per_min"}},"request_id":"req_aB3xY9Kp"}},"max_concurrent":{"title":"max_concurrent","value":{"status":"error","error":{"code":"rate_limited","message":"too many in-flight requests for plan — upgrade plan or wait","details":{"max_concurrent":5,"reason":"max_concurrent_requests"}},"request_id":"req_aB3xY9Kp"}},"sb_runs":{"title":"sb_runs","value":{"status":"error","error":{"code":"rate_limited","message":"smartbrowse run quota exceeded for plan — upgrade for more runs","details":{"used":50,"limit":50,"window":"30d","reason":"sb_runs_per_month"}},"request_id":"req_aB3xY9Kp"}}},"exampleType":"examples"}},"exampleType":"examples"},"5916086a-014e-41ad-9aa3-c5b2670df2c6":{"description":"Internal server error. Safe to retry with backoff.","content":{"application/json":{"schema":{"type":"object","required":["error","status","request_id"],"properties":{"status":{"type":"string","description":"Discriminator for the envelope variant.","enum":["error"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"request_id":{"type":"string","example":"req_aB3xY9Kp","description":"Per-request id. Also returned as the `X-Request-ID` response\nheader. Include it when reporting issues.\n","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable error code. SDKs branch on this.","enum":["invalid_request","unauthorized","insufficient_credits","email_verification_required","forbidden","not_found","conflict","account_deletion_pending","validation_failed","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable. May change between releases. Log it; don't pattern-match.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"description":"Optional structured context (e.g. `{balance, required}` for `insufficient_credits`).","uniqueKey":"error.details","typeLabel":"any"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"status":"error","error":{"code":"internal_error","message":"internal error"},"request_id":"req_aB3xY9Kp"},"examples":{"Example":{"title":"Example","value":{"status":"error","error":{"code":"internal_error","message":"internal error"},"request_id":"req_aB3xY9Kp"}}},"exampleType":"examples"}},"exampleType":"examples"},"d252ccd4-deab-480c-96ff-70ec74b0fbda":{"description":"Extraction service is temporarily unreachable. Safe to retry\nwith backoff.\n","content":{"application/json":{"schema":{"type":"object","required":["error","status","request_id"],"properties":{"status":{"type":"string","description":"Discriminator for the envelope variant.","enum":["error"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"request_id":{"type":"string","example":"req_aB3xY9Kp","description":"Per-request id. Also returned as the `X-Request-ID` response\nheader. Include it when reporting issues.\n","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable error code. SDKs branch on this.","enum":["invalid_request","unauthorized","insufficient_credits","email_verification_required","forbidden","not_found","conflict","account_deletion_pending","validation_failed","rate_limited","internal_error","service_unavailable"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable. May change between releases. Log it; don't pattern-match.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"description":"Optional structured context (e.g. `{balance, required}` for `insufficient_credits`).","uniqueKey":"error.details","typeLabel":"any"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"status":"error","error":{"code":"service_unavailable","message":"extraction service is unreachable"},"request_id":"req_aB3xY9Kp"},"examples":{"Example":{"title":"Example","value":{"status":"error","error":{"code":"service_unavailable","message":"extraction service is unreachable"},"request_id":"req_aB3xY9Kp"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"a065ee87-99d0-4701-a385-8e14eaf28edf":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Generate from the [dashboard](https://webscrape.ai/app/api-keys).\nFormat: `wsg_live_\u003c32 base62 chars>`.\n","scopes":[]}}},"servers":{"38dce4f4-7b54-429e-b95e-8cd91fea7b8d":{"url":"https://api.webscrape.ai/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Generate from the [dashboard](https://webscrape.ai/app/api-keys).\nFormat: `wsg_live_\u003c32 base62 chars>`.\n","scopes":[]},"schema":{"title":"X-API-Key","type":"string","description":"Generate from the [dashboard](https://webscrape.ai/app/api-keys).\nFormat: `wsg_live_\u003c32 base62 chars>`.\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"X-API-Key"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"webscrapeai","siteName":"webscrape.ai","title":"Structured extraction with JSON-schema validation - webscrape.ai","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-21T19:36:54.786Z","originalFileLocation":"api-reference/scrape/structured-extraction-with-json-schema-validation.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"dark\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Give a URL and a user_prompt (and optionally an output_schema), get JSON back. Handles long content, noisy pages, and complex schemas. Cost: 5 credits (+5 with stealth: true).\">\u003cmeta data-mint-head name=\"application-name\" content=\"webscrape.ai\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/webscrapeai/LEHnMviy41jOheI7/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/webscrapeai/LEHnMviy41jOheI7/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/webscrapeai/LEHnMviy41jOheI7/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/webscrapeai/LEHnMviy41jOheI7/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/webscrapeai/LEHnMviy41jOheI7/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/webscrapeai/LEHnMviy41jOheI7/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/webscrapeai/LEHnMviy41jOheI7/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/webscrapeai/LEHnMviy41jOheI7/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/webscrapeai/LEHnMviy41jOheI7/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Structured extraction with JSON-schema validation - webscrape.ai\">\u003cmeta data-mint-head property=\"og:description\" content=\"Give a URL and a user_prompt (and optionally an output_schema), get JSON back. Handles long content, noisy pages, and complex schemas. Cost: 5 credits (+5 with stealth: true).\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"webscrape.ai\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://webscrape.ai/docs/api-reference/scrape/structured-extraction-with-json-schema-validation\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://webscrapeai.mintlify.site/docs/_mintlify/api/og/v2?division=Scrape\u0026amp;title=Structured+extraction+with+JSON-schema+validation\u0026amp;description=Give+a+URL+and+a+%60user_prompt%60+%28and+optionally+an+%60output_schema%60%29%2C%0Aget+JSON+back.+Handles+long+content%2C+noisy+pages%2C+and+complex%0Aschemas.%0A%0A**Cost%3A**+5+credits+\u0026amp;theme=ec75218842615f24e4c16d9a\u0026amp;signature=b76ed3e326629f75a0f98287c99469b210330fd52809950123b936e47d371354\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Structured extraction with JSON-schema validation - webscrape.ai\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Give a URL and a user_prompt (and optionally an output_schema), get JSON back. Handles long content, noisy pages, and complex schemas. Cost: 5 credits (+5 with stealth: true).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://webscrapeai.mintlify.site/docs/_mintlify/api/og/v2?division=Scrape\u0026amp;title=Structured+extraction+with+JSON-schema+validation\u0026amp;description=Give+a+URL+and+a+%60user_prompt%60+%28and+optionally+an+%60output_schema%60%29%2C%0Aget+JSON+back.+Handles+long+content%2C+noisy+pages%2C+and+complex%0Aschemas.%0A%0A**Cost%3A**+5+credits+\u0026amp;theme=ec75218842615f24e4c16d9a\u0026amp;signature=b76ed3e326629f75a0f98287c99469b210330fd52809950123b936e47d371354\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/webscrapeai/LEHnMviy41jOheI7/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"webscrape.ai\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#f27b2c\">\u003clink data-mint-head rel=\"canonical\" href=\"https://webscrape.ai/docs/api-reference/scrape/structured-extraction-with-json-schema-validation\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/scrape/structured-extraction-with-json-schema-validation.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://webscrape.ai/#organization\",\"name\":\"webscrape.ai\",\"url\":\"https://webscrape.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/webscrapeai/ePoN8H5CXXUgyfoK/logo/light.svg?fit=max\u0026auto=format\u0026n=ePoN8H5CXXUgyfoK\u0026q=85\u0026s=d2a150ff3a0eab538f70815685c3129b\"}},{\"@type\":\"WebSite\",\"@id\":\"https://webscrape.ai/docs#website\",\"name\":\"webscrape.ai\",\"url\":\"https://webscrape.ai/docs\",\"publisher\":{\"@id\":\"https://webscrape.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://webscrape.ai/docs/api-reference/scrape/structured-extraction-with-json-schema-validation#webpage\",\"url\":\"https://webscrape.ai/docs/api-reference/scrape/structured-extraction-with-json-schema-validation\",\"name\":\"Structured extraction with JSON-schema validation\",\"description\":\"Give a URL and a user_prompt (and optionally an output_schema), get JSON back. Handles long content, noisy pages, and complex schemas. Cost: 5 credits (+5 with stealth: true).\",\"dateModified\":\"2026-05-21T19:36:54.786Z\",\"isPartOf\":{\"@id\":\"https://webscrape.ai/docs#website\"},\"breadcrumb\":{\"@id\":\"https://webscrape.ai/docs/api-reference/scrape/structured-extraction-with-json-schema-validation#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://webscrape.ai/docs/api-reference/scrape/structured-extraction-with-json-schema-validation#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Scrape\",\"item\":\"https://webscrape.ai/docs/api-reference/scrape/fetch-a-url-as-html-markdown-or-links\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Structured extraction with JSON-schema validation\",\"item\":\"https://webscrape.ai/docs/api-reference/scrape/structured-extraction-with-json-schema-validation\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://webscrape.ai/docs/api-reference/scrape/structured-extraction-with-json-schema-validation#apireference\",\"headline\":\"Structured extraction with JSON-schema validation\",\"name\":\"Structured extraction with JSON-schema validation\",\"description\":\"Give a URL and a user_prompt (and optionally an output_schema), get JSON back. Handles long content, noisy pages, and complex schemas. Cost: 5 credits (+5 with stealth: true).\",\"url\":\"https://webscrape.ai/docs/api-reference/scrape/structured-extraction-with-json-schema-validation\",\"mainEntityOfPage\":{\"@id\":\"https://webscrape.ai/docs/api-reference/scrape/structured-extraction-with-json-schema-validation#webpage\"},\"dateModified\":\"2026-05-21T19:36:54.786Z\",\"publisher\":{\"@id\":\"https://webscrape.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://webscrape.ai/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"webscrape.ai\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"webscrape.ai","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"Introduction","sidebarTitle":"Introduction","href":"/api-reference/introduction"}]},{"group":"Scrape","pages":[{"title":"Scrape","openapi":"POST /scrape","href":"/api-reference/scrape"},{"title":"SmartScraper","openapi":"POST /smartscraper","href":"/api-reference/smartscraper"}]},{"group":"SmartBrowse","pages":[{"title":"Dispatch run","openapi":"POST /smartbrowse/recipes/{id}/run","href":"/api-reference/smartbrowse/dispatch"},{"title":"Get run","openapi":"GET /smartbrowse/runs/{id}","href":"/api-reference/smartbrowse/get-run"}]},{"group":"Scrape","pages":[{"title":"Fetch a URL as HTML, markdown, or links","description":"Fetch a URL with the standard fetcher or optional stealth. Returns\nHTML by default. Pass `clean: true` for cleaned markdown, or\n`extract_links: true` to receive a deduplicated list of outbound\nlinks. PDFs are auto-converted to markdown.\n\n**Cost:** 1 credit (+2 with `stealth: true`).\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /scrape","href":"/api-reference/scrape/fetch-a-url-as-html-markdown-or-links"},{"title":"Structured extraction with JSON-schema validation","deprecated":null,"version":null,"openapi":"/openapi.yaml post /smartscraper","href":"/api-reference/scrape/structured-extraction-with-json-schema-validation"}]},{"group":"SmartBrowse","pages":[{"title":"Dispatch a SmartBrowse run","description":"Returns immediately with a `run_id`. Poll `GET /v1/smartbrowse/runs/{id}`\nfor progress and final result.\n\n**Cost:** 2 credits per page extracted (initial load + each pagination\nhop). Charged on completion only. Failed and cancelled runs cost 0.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /smartbrowse/recipes/{id}/run","href":"/api-reference/smartbrowse/dispatch-a-smartbrowse-run"},{"title":"Poll a SmartBrowse run","deprecated":null,"version":null,"openapi":"/openapi.yaml get /smartbrowse/runs/{id}","href":"/api-reference/smartbrowse/poll-a-smartbrowse-run"},{"title":"Current SmartBrowse plan caps and 30-day usage","deprecated":null,"version":null,"openapi":"/openapi.yaml get /smartbrowse/usage","href":"/api-reference/smartbrowse/current-smartbrowse-plan-caps-and-30-day-usage"}]}]}]},"basePath":"","title":"Structured extraction with JSON-schema validation - webscrape.ai","buildId":"dpl_ATnXPMW25DMPUr9VBw6kL6MfBt6T","deploymentId":"dpl_ATnXPMW25DMPUr9VBw6kL6MfBt6T","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CNqlzjVB.js","utils-BqFiXZ79.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CnR4QBe6.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BY2ZM1OO.js","snippetPresets-x-8ACO8V.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ch-SJE05.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CqqG_0NE.js","shallow-BXrZ2b0C.js","getApiPlaygroundDisplay-n7J_wkjq.js","CodeSnippet-CQsp4vyQ.js","CodeSnippets-BfuHqvZx.js","Page-CTxrMSpo.js","getPastedJson-BjrGIK1i.js","icon-7iLZnVOC.js","MethodPill-TBS1m84e.js","DuplicateIcon-BNMrV4Vs.js","createIcon-C5kCqeU2.js","DynamicMarkdown-Bq09mRwR.js","SectionHeading-G4Bflf5Q.js","axios-vUo_bRtp.js","Markdown-BTUds0aX.js","clsx-6wHzaN2_.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BPypQKlo.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-o6bee4ro.js"]}