extract=auto to a Fetch request and Zenrows returns the page’s data as JSON: names, prices, availability, images, breadcrumbs and more, with no selectors to write or maintain. Reach for it whenever you want fields, not HTML.
Uses: Extract (extract=auto, extract_fields), the Extract endpoints and Adaptive Stealth Mode (mode=auto)
Ask your AI agent
With the Zenrows MCP server connected to Claude, Cursor or any MCP client, paste this prompt. Your agent picks the right Zenrows tools and settings on its own.Extract a page as JSON
Setextract=auto and pair it with mode=auto, so Zenrows renders JavaScript and switches to premium proxies when the page needs them. The response is JSON with two fields: parsed holds the structured data, html holds the raw page for validation.
parsed directly. Its zenrows extract command sends extract=auto with mode=auto by default, and when a domain isn’t prepared yet it retries the page with autoparse, so you always get JSON back. See the CLI guide.
Example output
Theparsed field for the catalog page, trimmed to two products:
null. Field names follow what each website exposes and stay stable for that website. New fields arrive as extraction grows, so read the fields you use and let the rest pass through.
Keep just the fields you need
Addextract_fields with a comma-separated list. A bare name (products) keeps a whole group, and a dot path (products.price) keeps one field inside a group, on every element of a list. Run one request without it first to read the field names the page offers.
Output (trimmed)
Extract a page from a major store
The same request works on the hundreds of domains Zenrows has prepared, including Amazon, Walmart, eBay, Best Buy, Zillow and Booking.com. This Walmart product page returns pricing, fulfillment, features and media:cURL
Output (parsed, trimmed)
Check a domain before you send traffic
GET /v1/extract/domains lists every domain Extract serves right now. It’s free, so check it before you send traffic to a new site:
Python (Requests)
Output
Prepare a new domain
For a domain that isn’t on the list yet, ask Zenrows to prepare it. Send one example URL per kind of page you care about, such as a product page and a search page, then poll untilstatus is ready. Preparation usually takes minutes, and every Zenrows API key can use the domain once it’s ready.
Python (Requests)
status: preparing, ready or failed. A failed preparation carries failure.code, and the endpoint reference maps each code to the next step.
Use the Zenrows SDKs
Both SDKs have anextract() method that sends extract=auto plus mode=auto for you. Pass extract_fields like any other parameter. When a domain isn’t prepared yet, extract() retries with autoparse; turn that off with fallback_to_autoparse=False (Python) or fallbackToAutoparse: false (Node.js) to get the REQS007 response instead.
Output (trimmed)
Customize it
Troubleshooting
403withREQS007: the domain, or that kind of page on it, isn’t prepared yet. The request isn’t charged. Prepare the domain with that URL inexample_urls, then retry once it readsready.400withREQS004namingextract_fields: none of the names you asked for exist on this page. The error lists the fields the page offers; copy names from there, or omitextract_fields.422withno_data_extracted: Extract knows the page type, and the fields came back empty, usually because the page hadn’t finished loading. The request isn’t charged. Retry withjs_render=true&wait=3000(andpremium_proxy=truefor protected sites), or dropextract_fieldsto see every field.- A preparation ends
failedwithunpreparable: the example URLs returned no usable HTML. Send other example URLs from the same site. - The request takes long to return: set your HTTP client timeout to 180 seconds or more so
mode=autohas time to escalate.
Related recipes
Extract real estate listings and property data
One schema for Zillow, Redfin and Idealista, from search to every listing.
Extract data with CSS selectors
Pick exact elements with css_extractor, or parse the HTML yourself.
Scrape a list of URLs
Run Extract on thousands of pages as one Batch job.
Turn any web page into LLM-ready markdown
Get the whole page as clean markdown instead of fields.