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.Quickstart
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.
Scrape a Google SERP
Force a country
proxyCountry works on every method.
Capture cookies and the proxy used
Fetch an image
eBay search
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 ofScrapeUnblockerError. 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.Raw HTTP (without the package)
The API is plain HTTP, so Node’s built-infetch (Node 18+) is enough - no SDK required.
getPageSource, serpApi, and getImage; every parameter shown above maps to a query parameter of the same name.
