The five primitives
Fetch is the foundation. Extract is a Fetch parameter, and Crawl and Batch run Fetch requests for you at scale. Browser is the interactive counterpart: instead of one request per page, your code or agent keeps a real browser open and acts in it.
Read, or act?
The first question is whether the job is about reading a page or acting on it.- Reading: getting text, prices, listings, links or a screenshot from pages a URL leads to. Fetch handles reading, including JavaScript rendering, scripted clicks and scrolls with
js_instructions, and anti-bot protection with Adaptive Stealth Mode. Every request is independent, so reading scales with your list. - Acting: logging in, filling a multi-step form, adding to a cart, following whatever the page shows next. Browser handles acting. Your code or agent holds the session and decides each next step from what it sees.
How many pages?
Once you know you’re reading, the number of pages picks the primitive:Page, or fields?
Fetch returns the page. Choose the shape that matches what you do next:- For an LLM or a RAG index:
response_type=markdownorplaintext. - For your database:
extract=autoreturns ready-made fields for products, real estate, jobs, travel and more.css_extractorreturns exactly the selectors you name. - For a human or an audit trail:
screenshotorresponse_type=pdf.
Combine primitives
The primitives are built to chain. The most common combinations:Pick your surface
Every primitive is available from the surface you already work in:
Each surface keeps its own native shape: the API speaks parameters, the CLI speaks commands (
zenrows fetch, extract, crawl, batch, browser), MCP speaks tools (scrape, extract, crawl_*, batch_*, browser_*), and the SDKs mirror the API. The recipes show each one in its own terms.
The name Extract appears on more than one surface. On the API, Extract is the extract=auto parameter on Fetch. The CLI’s zenrows extract command and the MCP extract tool cover extract=auto and CSS selectors (css_extractor), and you pick the mechanism with a flag or a tool argument.
Start building
Lesson 1: Make your first request
Start the six-lesson course that uses all five primitives on one project.
Scrape pages protected by anti-bot systems
The Fetch recipe most projects start with.
Get structured JSON from any page
Fields from any page with
extract=auto.Connect Playwright or Puppeteer to Zenrows Browser
Drive Zenrows Browser from your code or agent.