Skip to main content
The official Node.js / TypeScript client wraps the ScrapeUnblocker API in a small, fully typed package - typed errors, automatic retries, ESM + CommonJS, zero runtime dependencies.
Requires Node.js 18+.
Prefer no dependencies? The API is plain HTTP, so you can skip the package and use Node’s built-in fetch directly - see Raw HTTP at the bottom.
Store your API key in an environment variable so the client picks it up automatically:

Quickstart

CommonJS works too: const { ScrapeUnblockerClient } = require("scrapeunblocker");

Get parsed JSON instead of HTML

getParsed() returns structured data extracted using Schema.org, __NEXT_DATA__, or AI-generated rules - no per-site parsers to maintain.
If a parse ever comes back wrong, force a fresh set of rules:
See the parsed data guide for response shapes.

Scrape a Google SERP

Force a country

proxyCountry works on every method.

Capture cookies and the proxy used

Fetch an image

Listings from any of the 19 regional eBay marketplaces as JSON:
exactMatches is false when eBay found nothing for the keyword and answered with its own loosely-related suggestions instead. Full field list on the eBay Search plugin page.

Skyscanner plugins

Flights, hotels and car hire as JSON:

Concurrency

Every method returns a promise, so cap concurrency with a semaphore for high-throughput crawls:

Error handling

Non-2xx responses reject with typed errors, all subclasses of ScrapeUnblockerError. Transient failures (429, 502, 503, 504 and network errors) are retried automatically with exponential backoff; a 401 or 402 is never retried, because it clears when the key or the billing state changes.
The 402 and 404-422 errors were added in 0.1.6; before that they arrived as a bare APIError. Nothing was removed, so instanceof APIError checks written against earlier versions keep working. See all status codes in Errors.
Tune the retry count and timeout on the client:
See handling failures for what each status code means.

Raw HTTP (without the package)

The API is plain HTTP, so Node’s built-in fetch (Node 18+) is enough - no SDK required.
The endpoints are getPageSource, serpApi, and getImage; every parameter shown above maps to a query parameter of the same name.