Skip to main content

Response Object

Every successful call returns a JSON object with four top-level keys: success, data, metadata, and billing.

{
"success": true,
"data": {
"content": "<html>...</html>",
"extracted_data": { "title": "Example Domain", "links": ["..."] },
"css_extracted": { "price": "$99.99" },
"template_extracted": { "links": ["..."], "images": ["..."] },
"screenshot": "iVBORw0KGgo...",
"status_code": 200,
"final_url": "https://example.com",
"headers": { "content-type": "text/html" },
"cookies": { "session": "abc123" }
},
"metadata": {
"method_used": "js_rendering",
"output_format": "html",
"elapsed_time": 5.23,
"solver_used": true,
"challenge_solved": true,
"timestamp": "2026-06-23T10:30:00Z"
},
"billing": {
"charged": 0.0035,
"cost_per_request": 0.0035,
"balance_after": 49.91
}
}

data

FieldTypePresent whenDescription
contentstringalways (unless extractor-only)The page body in the requested output_format.
extracted_dataobjectoutput_format: autoparseAuto-detected structured data.
css_extractedobjectcss_selectors providedYour mapped selector results.
template_extractedobjecttemplates providedBuilt-in extractor results.
screenshotstringscreenshot: trueBase64-encoded PNG.
status_codeintegeralwaysHTTP status from the target.
final_urlstringalwaysURL after redirects.
headersobjectalwaysResponse headers from the target.
cookiesobjectalwaysCookies set by the target.

metadata

FieldTypeDescription
method_usedstringWhich lane actually ran (fast / js_rendering).
output_formatstringFormat applied to content.
elapsed_timefloatTotal processing time in seconds.
solver_usedbooleanWhether the anti-bot solver ran.
challenge_solvedbooleanWhether a challenge was successfully solved.
timestampstringISO 8601 completion time.

billing

FieldTypeDescription
chargedfloatAmount billed for this request (USD). 0 for failed unlocks.
cost_per_requestfloatStandard Web Unlocker price — 0.0035.
balance_afterfloatRemaining account balance after the charge.

Web Unlocker is a flat $0.0035 per successful request, regardless of whether fast or js_rendering ran. See Pricing.

:::tip Only pay for success Core unlock requests that fail to return usable data are not charged. Inspect billing.charged to confirm. :::

Checking success in code

data = resp.json()
if data["success"] and data["data"]["status_code"] == 200:
html = data["data"]["content"]
else:
print("Failed:", data.get("error"))

See Errors for what success: false looks like.