Scrape a Browser-Rendered Web Page
/v1/browser/scrapeRuns one product-safe browser-backed scrape for one URL. Optional structured extraction runs over the rendered HTML through the safe Crawl4AI extraction contract.
On this page
Request example
Replace placeholders with your values. Use your Team API key for authenticated requests.
https://kieapi.comcurl -X POST "https://kieapi.com/v1/browser/scrape" \
-H "Authorization: Bearer $SPIDER_API_KEY" \
-H 'Idempotency-Key: docs-example-01' \
-H "Content-Type: application/json" \
-d '{
"url": "<value>"
}'Authentication
BearerAuth
Parameters
Idempotency-Keyheader ยท string- Caller-generated key for replay-safe creation. Reusing the key with the same request body returns the stored response; reusing it with a different body or while the original request is in progress returns 409.
Request body required
application/json
Responses
200 Browser scrape completed.
400 Request validation failed.
401 Missing or invalid API key.
403 Authenticated principal cannot access this resource.
408 Work timed out.
409 The idempotency key is already in progress or belongs to a different request body. In-progress Browser Session creation returns Retry-After.
429 Monthly quota was exhausted.
502 Browser render failed.
503 Required runtime service is unavailable.
Schemas
Field definitions and complete validation rules for this API. Follow a type link to its definition.
BrowserScrapeRequest
FetchRequest and object
Complete schema
{
"allOf": [
{
"$ref": "#/components/schemas/FetchRequest"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"output": {
"$ref": "#/components/schemas/OutputOptions"
},
"browser": {
"$ref": "#/components/schemas/BrowserOptions"
},
"extraction": {
"$ref": "#/components/schemas/StructuredExtractionRequest"
}
}
}
]
}FetchRequest
object
urlstring (uri) required
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
}
}
}OutputOptions
object
screenshotScreenshotOptionsrecordingRecordingOptions
Complete schema
{
"type": "object",
"additionalProperties": false,
"properties": {
"screenshot": {
"$ref": "#/components/schemas/ScreenshotOptions"
},
"recording": {
"$ref": "#/components/schemas/RecordingOptions"
}
}
}ScreenshotOptions
object
enabledbooleanDefault:
falseformatstringAllowed:
"png"Default:
"png"full_pagebooleanDefault:
false
Complete schema
{
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"type": "boolean",
"default": false
},
"format": {
"type": "string",
"enum": [
"png"
],
"default": "png"
},
"full_page": {
"type": "boolean",
"default": false
}
}
}RecordingOptions
object
Requests recording artifact capture when supported by the configured browser runtime. Recording downloads are exposed only as run artifacts; clients should download only recording artifact keys returned on the run. This does not imply full Browserless protocol compatibility or provider-native recording capture.
enabledbooleanDefault:
falseformatstringAllowed:
"mp4", "webm"Default:
"mp4"
Complete schema
{
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"type": "boolean",
"default": false
},
"format": {
"type": "string",
"enum": [
"mp4",
"webm"
],
"default": "mp4"
}
},
"description": "Requests recording artifact capture when supported by the configured browser runtime. Recording downloads are exposed only as run artifacts; clients should download only recording artifact keys returned on the run. This does not imply full Browserless protocol compatibility or provider-native recording capture.\n"
}BrowserOptions
object
Safe browser-render controls. These map to Spider human_behavior policy and do not expose arbitrary JavaScript, cookies, storage state, proxy URLs, user agents, or DICloak profile IDs.
wait_for_selectorstring | null- CSS selector that must appear before returning the rendered page.
wait_for_timeout_msinteger | null- Maximum wait for `wait_for_selector`, in milliseconds.
process_iframesboolean- Include same-origin iframe content where the renderer can safely access it.
Default:
false flatten_shadow_domboolean- Flatten open shadow DOM content into the rendered document output.
Default:
false virtual_scrollVirtualScrollOptions
Complete schema
{
"type": "object",
"additionalProperties": false,
"description": "Safe browser-render controls. These map to Spider human_behavior policy and do not expose arbitrary JavaScript, cookies, storage state, proxy URLs, user agents, or DICloak profile IDs.\n",
"properties": {
"wait_for_selector": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 1024,
"description": "CSS selector that must appear before returning the rendered page."
},
"wait_for_timeout_ms": {
"type": [
"integer",
"null"
],
"minimum": 1,
"maximum": 15000,
"description": "Maximum wait for `wait_for_selector`, in milliseconds."
},
"process_iframes": {
"type": "boolean",
"default": false,
"description": "Include same-origin iframe content where the renderer can safely access it."
},
"flatten_shadow_dom": {
"type": "boolean",
"default": false,
"description": "Flatten open shadow DOM content into the rendered document output."
},
"virtual_scroll": {
"$ref": "#/components/schemas/VirtualScrollOptions"
}
}
}VirtualScrollOptions
object
container_selectorstring required- CSS selector for the scrollable container.
scroll_countintegerDefault:
10scroll_bystring or integerDefault:
"container_height"wait_after_scrollnumberDefault:
0.5
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"container_selector"
],
"properties": {
"container_selector": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"description": "CSS selector for the scrollable container."
},
"scroll_count": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10
},
"scroll_by": {
"anyOf": [
{
"type": "string",
"enum": [
"container_height",
"page_height"
]
},
{
"type": "integer",
"minimum": 1,
"maximum": 20000
}
],
"default": "container_height"
},
"wait_after_scroll": {
"type": "number",
"minimum": 0,
"maximum": 5,
"default": 0.5
}
}
}StructuredExtractionRequest
object
typestring requiredAllowed:
"json_css", "llm"schemaJsonCssExtractionSchemaraw_crawl4ai_schemaobject | null- Allowlisted raw Crawl4AI JsonCssExtractionStrategy schema. Only JSON schema keys for name, baseSelector, baseFields, fields, selector, source, default, scalar/list/nested field types, regex, and safe transforms are accepted. function/expression hooks are rejected.
computed_fieldsarray of StructuredComputedFieldDefault:
[]llmStructuredLLMExtractionOptions or null
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"json_css",
"llm"
]
},
"schema": {
"$ref": "#/components/schemas/JsonCssExtractionSchema"
},
"raw_crawl4ai_schema": {
"type": [
"object",
"null"
],
"additionalProperties": true,
"description": "Allowlisted raw Crawl4AI JsonCssExtractionStrategy schema. Only JSON schema keys for name, baseSelector, baseFields, fields, selector, source, default, scalar/list/nested field types, regex, and safe transforms are accepted. function/expression hooks are rejected.\n"
},
"computed_fields": {
"type": "array",
"maxItems": 100,
"default": [],
"items": {
"$ref": "#/components/schemas/StructuredComputedField"
}
},
"llm": {
"anyOf": [
{
"$ref": "#/components/schemas/StructuredLLMExtractionOptions"
},
{
"type": "null"
}
]
}
}
}JsonCssExtractionSchema
object
namestring | nullbase_selectorstring requiredfieldsarray of StructuredExtractionField required
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"base_selector",
"fields"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 128
},
"base_selector": {
"type": "string",
"minLength": 1,
"maxLength": 1024
},
"fields": {
"type": "array",
"minItems": 1,
"maxItems": 100,
"items": {
"$ref": "#/components/schemas/StructuredExtractionField"
}
}
}
}StructuredExtractionField
object
namestring requiredselectorstring | nulltypestring requiredAllowed:
"text", "html", "attribute", "regex", "nested", "list", "nested_list"attributestring | nullpatternstring | nullgroupinteger | nulltransformstring | nullAllowed:
"strip", "lowercase", "uppercase"fieldsarray of StructuredExtractionField or null
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"name",
"type"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"selector": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 1024
},
"type": {
"type": "string",
"enum": [
"text",
"html",
"attribute",
"regex",
"nested",
"list",
"nested_list"
]
},
"attribute": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 128
},
"pattern": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 1024
},
"group": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"transform": {
"type": [
"string",
"null"
],
"enum": [
"strip",
"lowercase",
"uppercase"
]
},
"fields": {
"anyOf": [
{
"type": "array",
"minItems": 1,
"maxItems": 100,
"items": {
"$ref": "#/components/schemas/StructuredExtractionField"
}
},
{
"type": "null"
}
]
}
}
}StructuredComputedField
object
namestring requiredoperationstring requiredAllowed:
"template", "join", "first_non_empty"Default:
"template"sourcesarray of stringDefault:
[]templatestring | nullseparatorstringDefault:
""defaultstring | nulltransformstring | nullAllowed:
"strip", "lowercase", "uppercase"
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"name",
"operation"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"operation": {
"type": "string",
"enum": [
"template",
"join",
"first_non_empty"
],
"default": "template"
},
"sources": {
"type": "array",
"maxItems": 20,
"default": [],
"items": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_]*(?:\\.[A-Za-z_][A-Za-z0-9_]*|\\[[0-9]{1,4}\\])*$"
}
},
"template": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 2048
},
"separator": {
"type": "string",
"maxLength": 128,
"default": ""
},
"default": {
"type": [
"string",
"null"
],
"maxLength": 2048
},
"transform": {
"type": [
"string",
"null"
],
"enum": [
"strip",
"lowercase",
"uppercase"
]
}
}
}StructuredLLMExtractionOptions
object
namestring | nullinstructionstringschemaobject | null- JSON Schema-style target shape sent to the server-configured LLM.
extraction_typestringAllowed:
"schema", "block"Default:
"schema"input_formatstringAllowed:
"html", "markdown", "text", "fit_html"Default:
"html"chunk_token_thresholdintegerDefault:
4096overlap_ratenumberDefault:
0.1apply_chunkingbooleanDefault:
trueforce_json_responsebooleanDefault:
truetemperaturenumber | nullmax_tokensinteger | null
Complete schema
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 128
},
"instruction": {
"type": "string",
"minLength": 1,
"maxLength": 4096
},
"schema": {
"type": [
"object",
"null"
],
"additionalProperties": true,
"description": "JSON Schema-style target shape sent to the server-configured LLM."
},
"extraction_type": {
"type": "string",
"enum": [
"schema",
"block"
],
"default": "schema"
},
"input_format": {
"type": "string",
"enum": [
"html",
"markdown",
"text",
"fit_html"
],
"default": "html"
},
"chunk_token_threshold": {
"type": "integer",
"minimum": 128,
"maximum": 200000,
"default": 4096
},
"overlap_rate": {
"type": "number",
"minimum": 0,
"maximum": 0.5,
"default": 0.1
},
"apply_chunking": {
"type": "boolean",
"default": true
},
"force_json_response": {
"type": "boolean",
"default": true
},
"temperature": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 2
},
"max_tokens": {
"type": [
"integer",
"null"
],
"minimum": 1,
"maximum": 128000
}
}
}PageRunResponse
object
runPublicRun requiredresultPublicPageResult required
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"run",
"result"
],
"properties": {
"run": {
"$ref": "#/components/schemas/PublicRun"
},
"result": {
"$ref": "#/components/schemas/PublicPageResult"
}
}
}PublicRun
object
idstring requiredtypePublicRunType requiredstatusPublicStatus requiredcreated_atstring | null (date-time)completed_atstring | null (date-time)cost_unitsinteger | nullquotaPublicQuotaReservation required
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"id",
"type",
"status",
"quota"
],
"properties": {
"id": {
"type": "string"
},
"type": {
"$ref": "#/components/schemas/PublicRunType"
},
"status": {
"$ref": "#/components/schemas/PublicStatus"
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"completed_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"cost_units": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"quota": {
"$ref": "#/components/schemas/PublicQuotaReservation"
}
}
}PublicRunType
string
Complete schema
{
"type": "string",
"enum": [
"fetch",
"browser_scrape",
"crawl"
]
}PublicStatus
string
Complete schema
{
"type": "string",
"enum": [
"queued",
"running",
"paused",
"completed",
"failed",
"low_quality",
"budget_exhausted",
"expired"
]
}PublicQuotaReservation
object
resourcestring requiredAllowed:
"scrape", "crawl"quantity_reservedinteger required
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"resource",
"quantity_reserved"
],
"properties": {
"resource": {
"type": "string",
"enum": [
"scrape",
"crawl"
]
},
"quantity_reserved": {
"type": "integer",
"minimum": 1
}
}
}PublicPageResult
object
urlstring (uri) requiredfinal_urlstring | null (uri)statusPublicStatus requiredtitlestring | nullcontentPublicContent requiredstructuredStructuredExtractionResult or nullartifactsarray of PublicArtifactLink requiredauditPublicAudit requiredusagePublicUsage requireddiagnosticsPublicPageDiagnostics
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"url",
"status",
"content",
"artifacts",
"audit",
"usage"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"final_url": {
"type": [
"string",
"null"
],
"format": "uri"
},
"status": {
"$ref": "#/components/schemas/PublicStatus"
},
"title": {
"type": [
"string",
"null"
]
},
"content": {
"$ref": "#/components/schemas/PublicContent"
},
"structured": {
"anyOf": [
{
"$ref": "#/components/schemas/StructuredExtractionResult"
},
{
"type": "null"
}
]
},
"artifacts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PublicArtifactLink"
}
},
"audit": {
"$ref": "#/components/schemas/PublicAudit"
},
"usage": {
"$ref": "#/components/schemas/PublicUsage"
},
"diagnostics": {
"$ref": "#/components/schemas/PublicPageDiagnostics"
}
}
}PublicContent
object
markdownstring | nullhtmlstring | nullmetadataobjectlinksarray of string (uri)
Complete schema
{
"type": "object",
"additionalProperties": false,
"properties": {
"markdown": {
"type": [
"string",
"null"
]
},
"html": {
"type": [
"string",
"null"
]
},
"metadata": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"links": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
}
}
}
}StructuredExtractionResult
object
typestring requiredAllowed:
"json_css"sourcestring requiredAllowed:
"crawl4ai"schema_namestring | nullitemsarray of object requireditem_countinteger requiredusageStructuredExtractionUsage or nullerrorStructuredExtractionError or null
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"source",
"items",
"item_count"
],
"properties": {
"type": {
"type": "string",
"enum": [
"json_css"
]
},
"source": {
"type": "string",
"enum": [
"crawl4ai"
]
},
"schema_name": {
"type": [
"string",
"null"
]
},
"items": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
},
"item_count": {
"type": "integer",
"minimum": 0
},
"usage": {
"anyOf": [
{
"$ref": "#/components/schemas/StructuredExtractionUsage"
},
{
"type": "null"
}
]
},
"error": {
"anyOf": [
{
"$ref": "#/components/schemas/StructuredExtractionError"
},
{
"type": "null"
}
]
}
}
}StructuredExtractionUsage
object
providerstring requiredAllowed:
"server_configured"prompt_tokensinteger | nullcompletion_tokensinteger | nulltotal_tokensinteger | null
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"provider"
],
"properties": {
"provider": {
"type": "string",
"enum": [
"server_configured"
]
},
"prompt_tokens": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"completion_tokens": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"total_tokens": {
"type": [
"integer",
"null"
],
"minimum": 0
}
}
}StructuredExtractionError
object
codestring requiredAllowed:
"structured_extraction_failed"messagestring required
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string",
"enum": [
"structured_extraction_failed"
]
},
"message": {
"type": "string"
}
}
}PublicArtifactLink
object
keyArtifactKey requiredurlstring requiredcontent_typestring requiredexpires_atstring | null (date-time)
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"key",
"url",
"content_type"
],
"properties": {
"key": {
"$ref": "#/components/schemas/ArtifactKey"
},
"url": {
"type": "string"
},
"content_type": {
"type": "string"
},
"expires_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
}
}ArtifactKey
string
Complete schema
{
"type": "string",
"enum": [
"markdown",
"html",
"raw_html",
"screenshot_png",
"recording_mp4",
"recording_webm",
"structured_json"
]
}PublicAudit
object
engine_winnerstring | nullengines_attemptedarray of stringfallback_reasonsarray of stringfallback_eventsarray of stringretry_statsobjectquality_scorenumber | nullblock_reasonstring | null- Sanitized execution stop category. Known response guard outcomes include body_size_limit, redirect_limit, and blocked_target; all are non-retryable. blocked_target prevents Browser fallback. body_size_limit uses the current server runtime default of 10 MiB (10485760 bytes), which is not caller-configurable in public v1. The response body and internal transport error text are never exposed by this field.
Complete schema
{
"type": "object",
"additionalProperties": false,
"properties": {
"engine_winner": {
"type": [
"string",
"null"
]
},
"engines_attempted": {
"type": "array",
"items": {
"type": "string"
}
},
"fallback_reasons": {
"type": "array",
"items": {
"type": "string"
}
},
"fallback_events": {
"type": "array",
"items": {
"type": "string"
}
},
"retry_stats": {
"type": "object",
"additionalProperties": true
},
"quality_score": {
"type": [
"number",
"null"
]
},
"block_reason": {
"type": [
"string",
"null"
],
"description": "Sanitized execution stop category. Known response guard outcomes include body_size_limit, redirect_limit, and blocked_target; all are non-retryable. blocked_target prevents Browser fallback. body_size_limit uses the current server runtime default of 10 MiB (10485760 bytes), which is not caller-configurable in public v1. The response body and internal transport error text are never exposed by this field."
}
}
}PublicUsage
object
cost_unitsinteger | nullbudget_exhaustedboolean
Complete schema
{
"type": "object",
"additionalProperties": false,
"properties": {
"cost_units": {
"type": [
"integer",
"null"
],
"minimum": 0
},
"budget_exhausted": {
"type": "boolean"
}
}
}PublicPageDiagnostics
object
Public page diagnostics are sanitized aggregate fields for page-level extraction, browser debug, browser failure, and quality explainability. They do not expose raw selectors, raw debug events, profile data, proxy data, CDP URLs, DICloak/provider internals, or raw audit attempt rows.
adaptive_extractionPublicAdaptiveExtractionDiagnosticsbrowser_debugPublicBrowserDebugDiagnosticsbrowser_failurePublicBrowserFailureDiagnosticscontent_qualityPublicContentQualityDiagnostics
Complete schema
{
"type": "object",
"additionalProperties": false,
"description": "Public page diagnostics are sanitized aggregate fields for page-level extraction, browser debug, browser failure, and quality explainability. They do not expose raw selectors, raw debug events, profile data, proxy data, CDP URLs, DICloak/provider internals, or raw audit attempt rows.\n",
"properties": {
"adaptive_extraction": {
"$ref": "#/components/schemas/PublicAdaptiveExtractionDiagnostics"
},
"browser_debug": {
"$ref": "#/components/schemas/PublicBrowserDebugDiagnostics"
},
"browser_failure": {
"$ref": "#/components/schemas/PublicBrowserFailureDiagnostics"
},
"content_quality": {
"$ref": "#/components/schemas/PublicContentQualityDiagnostics"
}
}
}PublicAdaptiveExtractionDiagnostics
object
Public sanitized aggregate for adaptive extraction diagnostics. This summarizes selector-memory behavior without exposing raw selectors, selector memory records, or provider internals.
enabledbooleanDefault:
falseusedbooleanDefault:
falseactionstringAllowed:
"disabled", "none", "saved", "reused", "relocated", "skipped_low_quality", "no_candidate"Default:
"disabled"confidencenumber | null
Complete schema
{
"type": "object",
"additionalProperties": false,
"description": "Public sanitized aggregate for adaptive extraction diagnostics. This summarizes selector-memory behavior without exposing raw selectors, selector memory records, or provider internals.\n",
"properties": {
"enabled": {
"type": "boolean",
"default": false
},
"used": {
"type": "boolean",
"default": false
},
"action": {
"type": "string",
"enum": [
"disabled",
"none",
"saved",
"reused",
"relocated",
"skipped_low_quality",
"no_candidate"
],
"default": "disabled"
},
"confidence": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 1
}
}
}PublicBrowserDebugDiagnostics
object
Public sanitized browser debug capture summary. It exposes only whether browser debug capture produced a summary plus aggregate network and console counts. Raw URLs, headers, cookies, bearer tokens, proxy credentials, CDP URLs, response bodies, status/resource/console-level buckets, and raw debug events are not public fields.
enabledbooleanDefault:
falsenetwork_event_countintegerDefault:
0console_message_countintegerDefault:
0
Complete schema
{
"type": "object",
"additionalProperties": false,
"description": "Public sanitized browser debug capture summary. It exposes only whether browser debug capture produced a summary plus aggregate network and console counts. Raw URLs, headers, cookies, bearer tokens, proxy credentials, CDP URLs, response bodies, status/resource/console-level buckets, and raw debug events are not public fields.\n",
"properties": {
"enabled": {
"type": "boolean",
"default": false
},
"network_event_count": {
"type": "integer",
"minimum": 0,
"default": 0
},
"console_message_count": {
"type": "integer",
"minimum": 0,
"default": 0
}
}
}PublicBrowserFailureDiagnostics
object
Public sanitized browser failure summary. It exposes only stable failure category, stage, attempt count, lease-acquired state, and an allowlisted error code. Raw URLs, proxy credentials, profile ids, identity ids, CDP URLs, provider payloads, and raw audit rows are not public fields.
presentbooleanDefault:
falsecategorystringAllowed:
"none", "capacity", "network_tunnel_failed", "network_error", "timeout", "anti_bot_challenge", "content_quality", "budget_exhausted", "render_error", "other"Default:
"none"stagestringAllowed:
"none", "capacity", "browser_open", "navigation", "render", "quality", "unknown"Default:
"none"attempt_countintegerDefault:
0browser_lease_acquiredboolean | nullDefault:
nullerror_codestring | nullDefault:
null
Complete schema
{
"type": "object",
"additionalProperties": false,
"description": "Public sanitized browser failure summary. It exposes only stable failure category, stage, attempt count, lease-acquired state, and an allowlisted error code. Raw URLs, proxy credentials, profile ids, identity ids, CDP URLs, provider payloads, and raw audit rows are not public fields.\n",
"properties": {
"present": {
"type": "boolean",
"default": false
},
"category": {
"type": "string",
"enum": [
"none",
"capacity",
"network_tunnel_failed",
"network_error",
"timeout",
"anti_bot_challenge",
"content_quality",
"budget_exhausted",
"render_error",
"other"
],
"default": "none"
},
"stage": {
"type": "string",
"enum": [
"none",
"capacity",
"browser_open",
"navigation",
"render",
"quality",
"unknown"
],
"default": "none"
},
"attempt_count": {
"type": "integer",
"minimum": 0,
"default": 0
},
"browser_lease_acquired": {
"type": [
"boolean",
"null"
],
"default": null
},
"error_code": {
"type": [
"string",
"null"
],
"maxLength": 96,
"default": null
}
}
}PublicContentQualityDiagnostics
object
Public sanitized aggregate for content quality diagnostics. The score is normalized to 0..1 and does not expose raw extractor internals, provider internals, or audit rows.
scorenumber | nullconfidencestringAllowed:
"unknown", "low", "medium", "high"Default:
"unknown"
Complete schema
{
"type": "object",
"additionalProperties": false,
"description": "Public sanitized aggregate for content quality diagnostics. The score is normalized to 0..1 and does not expose raw extractor internals, provider internals, or audit rows.\n",
"properties": {
"score": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 1
},
"confidence": {
"type": "string",
"enum": [
"unknown",
"low",
"medium",
"high"
],
"default": "unknown"
}
}
}PublicErrorResponse
object
errorPublicError required
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"error"
],
"properties": {
"error": {
"$ref": "#/components/schemas/PublicError"
}
}
}PublicError
object
codestring requiredAllowed:
"seoapi_price_pending", "seoapi_unavailable", "seoapi_busy", "seoapi_not_found", "seoapi_rate_limited", "seoapi_budget_exceeded", "seoapi_idempotency_conflict", "seoapi_insufficient_credits", "seoapi_admission_failed", "seoapi_execution_interrupted", "seoapi_delivery_unknown", "seoapi_response_invalid", "seoapi_model_unsupported", "seoapi_model_options_invalid", "seoapi_provider_rejected", "seo_price_pending", "seo_provider_blocked", "seo_local_rate_limited", "seo_fallback_unavailable", "seo_fallback_budget_exceeded", "seo_pagination_expired", "seo_delivery_uncertain", "seo_auth_required", "seo_initialization_required", "seo_permission_denied", "seo_verification_required", "seo_rate_limited", "seo_upstream_unavailable", "seo_transport_failed", "seo_invalid_response", "seo_rpc_error", "seo_period_unavailable", "seo_account_unavailable", "seo_session_busy", "seo_configuration_required", "validation_error", "invalid_request", "unsupported_feature", "authentication_required", "permission_denied", "not_found", "run_not_found", "crawl_not_found", "artifact_not_found", "session_not_found", "profile_not_found", "profile_in_use", "profile_not_ready", "profile_not_cloneable", "profile_limit_reached", "profile_proxy_conflict", "proxy_not_found", "proxy_unavailable", "invalid_session_options", "invalid_query_options", "invalid_cursor", "idempotency_key_required", "browser_session_limit_reached", "browser_capacity_exhausted", "browser_start_timeout", "browser_runtime_unavailable", "session_not_active", "controller_already_connected", "browser_relay_unavailable", "precondition_required", "precondition_failed", "timeout", "run_not_ready", "artifact_expired", "quota_exceeded", "insufficient_credits", "billing_reconciliation_required", "rate_limited", "fetch_failed", "render_failed", "maps_rate_limited", "maps_challenge", "maps_schema_changed", "maps_invalid_response", "maps_transport_failed", "maps_page_budget_exhausted", "google_trends_rate_limited", "google_trends_challenge", "google_trends_explore_failed", "google_trends_widget_missing", "google_trends_related_failed", "google_trends_invalid_response", "google_trends_transport_failed", "google_trends_collection_failed", "google_ads_account_context_missing", "google_ads_batch_failed", "google_ads_browser_context_missing", "google_ads_browser_unavailable", "google_ads_collection_failed", "google_ads_page_failed", "google_ads_protocol_drift", "google_ads_rate_limited", "google_ads_timeout", "twitter_provider_unavailable", "twitter_provider_rejected", "twitter_submission_unknown", "wechat_transport_failed", "wechat_rate_limited", "wechat_invalid_response", "wechat_redirect_rejected", "wechat_verification_required", "wechat_parse_failed", "blackhatworld_search_failed", "blackhatworld_no_results", "reddit_read_failed", "idempotency_conflict", "idempotency_in_progress", "service_unavailable", "internal_error"messagestring requiredtypestring requiredAllowed:
"auth", "validation", "quota", "rate_limit", "not_found", "execution", "conflict", "internal"retryableboolean requiredrequest_idstring | nulldetailsobject
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"code",
"message",
"type",
"retryable"
],
"properties": {
"code": {
"type": "string",
"enum": [
"seoapi_price_pending",
"seoapi_unavailable",
"seoapi_busy",
"seoapi_not_found",
"seoapi_rate_limited",
"seoapi_budget_exceeded",
"seoapi_idempotency_conflict",
"seoapi_insufficient_credits",
"seoapi_admission_failed",
"seoapi_execution_interrupted",
"seoapi_delivery_unknown",
"seoapi_response_invalid",
"seoapi_model_unsupported",
"seoapi_model_options_invalid",
"seoapi_provider_rejected",
"seo_price_pending",
"seo_provider_blocked",
"seo_local_rate_limited",
"seo_fallback_unavailable",
"seo_fallback_budget_exceeded",
"seo_pagination_expired",
"seo_delivery_uncertain",
"seo_auth_required",
"seo_initialization_required",
"seo_permission_denied",
"seo_verification_required",
"seo_rate_limited",
"seo_upstream_unavailable",
"seo_transport_failed",
"seo_invalid_response",
"seo_rpc_error",
"seo_period_unavailable",
"seo_account_unavailable",
"seo_session_busy",
"seo_configuration_required",
"validation_error",
"invalid_request",
"unsupported_feature",
"authentication_required",
"permission_denied",
"not_found",
"run_not_found",
"crawl_not_found",
"artifact_not_found",
"session_not_found",
"profile_not_found",
"profile_in_use",
"profile_not_ready",
"profile_not_cloneable",
"profile_limit_reached",
"profile_proxy_conflict",
"proxy_not_found",
"proxy_unavailable",
"invalid_session_options",
"invalid_query_options",
"invalid_cursor",
"idempotency_key_required",
"browser_session_limit_reached",
"browser_capacity_exhausted",
"browser_start_timeout",
"browser_runtime_unavailable",
"session_not_active",
"controller_already_connected",
"browser_relay_unavailable",
"precondition_required",
"precondition_failed",
"timeout",
"run_not_ready",
"artifact_expired",
"quota_exceeded",
"insufficient_credits",
"billing_reconciliation_required",
"rate_limited",
"fetch_failed",
"render_failed",
"maps_rate_limited",
"maps_challenge",
"maps_schema_changed",
"maps_invalid_response",
"maps_transport_failed",
"maps_page_budget_exhausted",
"google_trends_rate_limited",
"google_trends_challenge",
"google_trends_explore_failed",
"google_trends_widget_missing",
"google_trends_related_failed",
"google_trends_invalid_response",
"google_trends_transport_failed",
"google_trends_collection_failed",
"google_ads_account_context_missing",
"google_ads_batch_failed",
"google_ads_browser_context_missing",
"google_ads_browser_unavailable",
"google_ads_collection_failed",
"google_ads_page_failed",
"google_ads_protocol_drift",
"google_ads_rate_limited",
"google_ads_timeout",
"twitter_provider_unavailable",
"twitter_provider_rejected",
"twitter_submission_unknown",
"wechat_transport_failed",
"wechat_rate_limited",
"wechat_invalid_response",
"wechat_redirect_rejected",
"wechat_verification_required",
"wechat_parse_failed",
"blackhatworld_search_failed",
"blackhatworld_no_results",
"reddit_read_failed",
"idempotency_conflict",
"idempotency_in_progress",
"service_unavailable",
"internal_error"
]
},
"message": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"auth",
"validation",
"quota",
"rate_limit",
"not_found",
"execution",
"conflict",
"internal"
]
},
"retryable": {
"type": "boolean"
},
"request_id": {
"type": [
"string",
"null"
]
},
"details": {
"type": "object",
"additionalProperties": true
}
}
}