Dismiss a cookie banner or overlay, then take the page
A fixed sequence of clicks and waits before the content is readable.
Zyte APIHeadless Browser
Zyte manages the stealth browser infrastructure, proxy routing, TLS fingerprinting, and CAPTCHA management, so you write scraping logic, not browser operations.
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(ZYTE_CDP_URL)
page = browser.new_page()
page.goto("https://books.toscrape.com")
page.fill("#search", "history")
page.press("#search", "Enter")
page.click("article.product_pod:nth-child(1) h3 a")
page.go_back()
page.click("article.product_pod:nth-child(2) h3 a")
print(page.title())How it works
One browser infrastructure, two ways in
Drive the browser yourself
Connect your existing Playwright or Puppeteer script to a Zyte-hosted browser.
Paid plan and a one-minute business verification done in your dashboard
Fetch a rendered page
Send a URL, get the rendered HTML back. One request, one response.
$5 free credit - 30 day trial - no subscription required
What people build with it
If your task needs the page after it renders, the REST API covers it. If it needs the browser to keep going after that, you want CDP.
Code snippets
Both paths use the same API key. Pick your access path, then your language.
Comparison
If you only need the page content after it renders, use the REST API. If you need to control the browser, use CDP. Either way, Zyte runs the browsers, proxies and ban handling for you.
| Feature | CDP APIStart with CDP | REST APIStart with REST | Self-hosted headless | Other hosted browsers | |
|---|---|---|---|---|---|
| Controlling the browserHow much of the browser you can drive, and how far a single run can go. | Rendered page in a single request | No | Yes | ||
| Interactive browser operations during your session: click, scroll, wait, fill | Yes | Yes | Yes | ||
| Multi-step flows | Yes | No | Yes | Yes | |
| Your own logic, loops and branching | Yes | No | Yes | Yes | |
| Network request interception | Yes | Yes | Yes | ||
| Session state kept across steps | Yes | Yes | Yes | ||
| Fitting your stackWhat you have to write, and what you can bring with you. | Bring existing Playwright or Puppeteer scripts | Yes | No | Yes | Yes |
| Call it from any language over HTTP | No | Yes | No | ||
| Scrapy integration | No | ||||
| Usage and spend in one dashboard | Yes | Yes | Yes | ||
| Getting past blocksWho deals with proxies, fingerprints and retries when a site pushes back. | Ban handling and retries built in | Yes | Yes | ||
| Proxy type chosen per site | Yes | Yes | |||
| Residential proxies included | Yes | Yes | |||
| Unique human-like browser fingerprint (stealth functionality) | Yes | Yes | |||
| Running the browsersWho owns the machines, the patching and the bill when nothing is running. | No browser fleet to run or patch | Yes | Yes | No | Yes |
| Scales without capacity planning | Yes | Yes | No | ||
| No idle cost between runs | Yes | Yes | No |
Loved by developers
FAQ
A paid subscription and a verified business account. CDP API is only available to businesses. Browser CDP is not available on pay as you go, and we verify your business once per organisation before access is granted. The REST API has neither requirement, so you can start there on pay as you go and add CDP later.
Playwright and Puppeteer both work, connecting over CDP. Playwright works in Python and JavaScript, Puppeteer is JavaScript only. Scrapy works too, through scrapy-playwright, and there is a Scrapy example in the code snippets on this page. Selenium is not currently supported, as the connection uses CDP over WebSockets, which Playwright and Puppeteer support but Selenium does not.
Yes, 60 seconds. Each REST call is a single request and response, so everything has to finish inside it. If you need longer, or need to keep a session open across steps, use CDP.
In the US. Sessions currently run from a single US region, so requests reach the target site from there, and scripts running close to US infrastructure will see lower latency.