status first, then read data (success) or error (failure).
Features
SmartScraper
Structured JSON from any URL.
Scrape
Raw HTML, cleaned markdown, or PDF, with optional stealth.
SmartBrowse
Replay clicks, typing, and pagination on real Chrome.
Base URL
All endpoints are served from a single base URL:Authentication
Every request needs your API key in theX-API-Key header. Generate one from the dashboard — keys look like wsg_live_<32 base62 chars>.
Response envelope
Every response has a top-levelstatus field. Check it first, then read data (success or queued) or error (failure).
completed
Synchronous success. Read
data, credits_used, credits_remaining.queued
Async dispatch (SmartBrowse). Read
data.run_id and poll.error
Branch on
error.code (stable). Log error.message, which can change.request_id as the X-Request-ID response header. Include it when you contact support.
Status codes
See Errors for the full retry policy. Failed requests cost 0 credits.
Conventions
- Headers:
Content-Type: application/jsonon every request with a body.X-API-Key: wsg_live_...for auth. - Timestamps: ISO 8601 UTC, e.g.
2026-05-21T17:42:01Z. - IDs: SmartBrowse runs and recipes use opaque string IDs (~11 base62 chars, e.g.
k7Xb9dRmQ2p). Treat them as opaque — don’t parse them, sort them, or assume a fixed length. - Async results: dispatch with
POST, poll the matchingGET, or subscribe via webhooks. - Stealth mode: a per-request flag (
"stealth": true) on the endpoints that support it. See Stealth mode.
OpenAPI spec
The full spec lives at/openapi.yaml. Drop it into Postman, OpenAPI Generator, or anything else that speaks OpenAPI 3.1.