extract=standard and Zillow, Redfin and Idealista return the same field names, so their listings land in one table without mapping. Then go from a search results page to every listing on it with Batch.
Uses: Extract with extract=standard and extract_fields, Batch 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 one property page
Send the listing URL withextract=standard. Add extract_fields to keep the groups and fields you need: price and location keep whole groups, property.bedrooms keeps one field.
Example output
Pick standard or native fields
extract=standard returns the canonical real estate schema. extract=auto returns the site’s own extraction, which carries everything that site shows, such as Redfin’s climate risks, schools, tax history and payment estimate.
Use
standard when you merge several sites into one dataset. Use auto when you work with one site and want every detail it publishes.
Collect listing URLs from a search page
Search and city pages list many properties. For search pages, useextract=auto, and keep the listing links with extract_fields:
Python (Requests)
Output
urljoin turns them into full URLs. Field names on search pages follow each site: send one request without extract_fields to read them.
Extract every listing with Batch
Send the listing URLs to Batch as one job, withextract=standard in zenrows_params. Batch runs them in parallel and retries transient failures, and each result is the same JSON a single request returns.
Python (SDK)
Output (trimmed)
parsed object with pandas.json_normalize and call to_csv. For Node.js, the REST API and the CLI, see Scrape a list of URLs.
Customize it
Troubleshooting
400withREQS004namingextract_fields: a field name doesn’t exist on this page. The error lists the available fields; copy names from it, or omitextract_fields.403withREQS007: this kind of page on the domain isn’t prepared yet. Prepare it with the URL inexample_urls.- A listing returns
404or410: the property was sold or removed. Collect fresh URLs from the search page before each run. 422withno_data_extracted: the page loaded without its data. Retry withjs_render=true&premium_proxy=true&wait=3000instead ofmode=auto.
Related recipes
Get structured JSON from any page
How Extract works on any prepared domain, and how to add a new one.
Scrape a list of URLs
Batch from Python, Node.js, cURL, the CLI and MCP.
Run a Batch job on a schedule
Re-extract listings daily or weekly with no server to run.
Crawl a website from a start URL
Discover every listing URL across a site’s pages.