Skip to main content
By the end of this page you’ll have scraped a real page with the self-hosted Reader library and seen clean markdown come back.

Install

Make sure you’re on Node 22.12.0+ and have Chrome’s system dependencies if you’re on Linux. See Installation for details.

Your first scrape

Create a file and paste this:
Run it:
You’ll see Reader initialize, render the page in a headless browser, extract the main content, convert it to markdown, and print the result.

What just happened

  1. new ReaderClient(...) - creates a client. No browser yet.
  2. reader.scrape(...) - on the first call, Reader spins up a browser pool behind the scenes and runs the scrape. The pool stays alive for subsequent calls.
  3. Playwright engine - Reader renders the page in headless Chrome with JavaScript execution and proxy routing. Use proxyTier: "premium" to route through residential proxies for hostile sites.
  4. Content cleaning - by default, Reader extracts only the main content, strips ads and navigation, and converts to clean markdown.
  5. reader.close() - shuts down browsers. Optional - Reader also auto-cleans on SIGTERM / SIGINT.

Try something more interesting

Scrape multiple URLs in parallel with progress tracking:

Where to go next

Examples

Crawling, proxy rotation, dynamic content, and more.

Concepts: Scraping Engine

How the Playwright engine and proxy tiers work.

Guides: Batch Scraping

Tune concurrency, handle errors, track progress.

API Reference

Full type reference for every option.