What is a scraping browser?
A scraping browser is a real web browser used to collect data, instead of a plain HTTP client. You need one when a site builds its content with JavaScript after the page loads, when you have to click, scroll or log in to reach the data, or when the site checks that it is talking to a real browser. For static pages and JSON APIs, a plain HTTP request is much cheaper and faster.
The term is used in two ways. Most often it means a hosted scraping browser: a remote Chromium that a provider runs for you. You connect your existing Puppeteer or Playwright code to it over a WebSocket (the Chrome DevTools Protocol), and the provider handles scaling, proxies and fingerprints. These are usually billed by bandwidth or session time. It can also simply mean a browser you run yourself, set up for scraping.
Hosted is quick to start and removes infrastructure work. The trade-offs are cost at volume, since browser traffic is heavy and billed per gigabyte or hour, less control over the browser's configuration, and your data passing through a third party. Running your own browser is cheaper at scale and fully under your control, but you manage the machines, the proxies and the browser's fingerprint yourself.
The fingerprint is the part that is easy to overlook. A stock Chrome in a server container reports a software GPU, a Linux font set and a headless user agent, so it looks like exactly what it is. Whatever you choose, the browser should present one consistent, ordinary device, and the proxy's location should match the browser's timezone and language.
Clearcote is the self-hosted option: an open-source Chromium with the fingerprint handled in the engine, which you can run as a standing CDP endpoint with one Docker command. Your Playwright or Puppeteer code connects to it the same way it would connect to a hosted browser, with connect_over_cdp or puppeteer.connect. See deployment and Docker.
