Skip to main content
The /getPageSource endpoint is the workhorse of the API. You pass a URL, ScrapeUnblocker picks the cheapest bypass route that works for that domain, and returns the prettified HTML.

Minimum request

How routing decisions are made

ScrapeUnblocker keeps a per-domain success history and picks the cheapest path that has worked recently:
1

Site plugin

If we have a dedicated plugin for the target site (Mobile.de, Zillow, Amazon, etc.), we use it. Plugins carry site-specific knowledge about how that site is protected.
2

Fast fetch

For unprotected pages, a lightweight fetch is tried first. Fastest response.
3

Real browser

For JavaScript-rendered pages or sites with bot checks, the page is rendered in a real browser behind rotating premium proxies, with challenges solved automatically.
You don’t pick the route. It’s chosen automatically per request based on what has worked for that domain.
Google search URLs are not accepted here. A getPageSource request whose URL is a Google search - a google.<tld>/search path, or a google.<tld> homepage carrying a q= query - returns HTTP 400 with a plain-text body directing you to the dedicated SERP endpoint: POST /serpApi?keyword=<term> (optionally &proxy_country=<ISO2>). Google search moved to its own endpoint, which returns structured JSON instead of raw HTML - see Google SERP scraping. Other Google URLs (Maps, etc.) still pass through getPageSource normally.

Useful parameters

proxy_country

Two-letter ISO country code forcing the request through that country’s proxy pool. See country targeting.

steps and list_elements

Some pages need interaction before the HTML you want exists - a search box to type into, a “load more” button to click, content that appears only after scrolling. Pass steps (a JSON array of browser actions - click, type, scroll, wait_for, press_key, …) and ScrapeUnblocker runs them in a real browser after the page loads, then returns the resulting HTML. The same goes for content that arrives late: a wait_for step (wait until a selector appears) or a wait step holds the HTML back until it is there. To discover the selectors those actions need, add list_elements=true: instead of HTML you get back the page’s interactive elements as JSON, each with a ready-to-use selector. List the elements, build your steps, run them.
Full action reference, limits and the 422 failure shape are in browser steps and element discovery.

Response

By default, the response body is the prettified HTML of the page. Content-Type is text/html. With markdown=true the body is the page as clean Markdown (text/markdown), ready for an LLM. See Markdown for LLMs. When you add parsed_data=true or get_cookies=true, the response becomes JSON. See parsed data and cookies and sessions.

Errors

Full reference in errors.