Zillow Search Scraper avatar

Zillow Search Scraper

Pricing

from $1.60 / 1,000 results

Go to Apify Store
Zillow Search Scraper

Zillow Search Scraper

Scrape Zillow real-estate listings by location or search URL. Extracts zpid, address, price, beds/baths, photos, status, broker, lat/lon, and 40+ more fields from Zillow Search Results Pages.

Pricing

from $1.60 / 1,000 results

Rating

0.0

(0)

Developer

Crikit

Crikit

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

What this Zillow Search Scraper does

This Zillow Search Scraper extracts real estate listing data from Zillow Search Results Pages at scale. Give it a Zillow search URL (or a location string like austin-tx, 90210, Seattle, WA) and the actor walks every page in the search, parses Zillow's server-rendered JSON payload, and emits one structured record per listing. No login, no cookies, no API key. The actor works entirely from public search pages on zillow.com.

The Zillow Search Scraper is built for analytics, lead generation, and market intelligence use cases that need clean Zillow data without writing a scraper from scratch.

What you get per listing

The actor extracts all 60+ fields Zillow embeds in each search result, including:

  • Identity: zpid, id, palsId, detailUrl (link to the property's HDP page on Zillow)
  • Address: address, addressStreet, addressCity, addressState, addressZipcode, isUndisclosedAddress
  • Pricing: price, unformattedPrice (numeric), countryCurrency, shouldShowZestimateAsPrice, shouldShowRequestOnPrice
  • Physical: beds, baths, area (sqft), latLong (latitude/longitude)
  • Status: statusType (FOR_SALE / RECENTLY_SOLD / FOR_RENT / COMING_SOON / PENDING), statusText, rawHomeStatusCd, marketingStatusSimplifiedCd, availabilityDate
  • Media: imgSrc (hero photo), hasImage, has3DModel, hasVideo, carouselPhotosComposable (responsive photo srcset)
  • Open house: hasOpenHouse, openHouseStartDate, openHouseEndDate, openHouseDescription
  • Broker / attribution: brokerName, isFeaturedListing, isShowcaseListing, isZillowOwned, isPaidBuilderNewConstruction
  • Provenance (added by the actor): foundOnSearchPage, foundFromSearchUrl

Every field that Zillow returns flows through to your dataset, so when Zillow adds a new attribute, your dataset gets it on the next run with no schema changes.

Why use this Zillow Scraper

  • 30% cheaper than the leading competitor on Apify Store ($0.0016 per listing on FREE tier vs the leader's $0.0023). Tier discounts apply automatically.
  • 100% field match with the leading competitor on the same input (820 / 820 listings on a full Austin scrape, validated against ground truth).
  • No cookies, no logins. You never paste credentials. The scraper works from a clean Apify residential proxy session.
  • Crawlee + Cheerio + Apify residential proxy, so it survives Zillow's PerimeterX anti-bot stack without spinning up a browser. Costs less than browser-based scrapers and runs about 5x faster.
  • Stable schema. The output mirrors Zillow's own listResults shape; downstream pipelines that already parse Zillow data work without modification.

Input

FieldTypeDescription
searchUrlsarray of {url}Zillow search URLs. Anything that resolves to a Search Results Page works (e.g. https://www.zillow.com/austin-tx/, https://www.zillow.com/homes/for_sale/?searchQueryState=...).
locationQueriesarray of stringsConvenience input. Strings like austin-tx, 90210, Seattle, WA are auto-converted to Zillow URL slugs.
extractionMethodstringCurrently only PAGINATION is supported (walks _p/ pages, up to ~820 listings per search slice). MAP_MARKERS and zoom-tiling modes are planned for v2.
maxItemsintegerHard cap on listings returned. 0 = unlimited (still bounded by maxPagesPerSearch and Zillow's own 820 cap per slice).
maxPagesPerSearchintegerCap on pages walked per search URL. Zillow itself only paginates up to 20 pages (~820 listings) per region+filter combination.
proxyConfigurationobjectApify proxy settings. Residential US strongly recommended; datacenter IPs get flagged within a handful of requests by PerimeterX.

You must supply at least one of searchUrls or locationQueries.

Sample input

{
"searchUrls": [
{ "url": "https://www.zillow.com/austin-tx/" },
{ "url": "https://www.zillow.com/seattle-wa/condos/" }
],
"locationQueries": ["90210"],
"extractionMethod": "PAGINATION",
"maxItems": 200,
"maxPagesPerSearch": 20,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Sample output

{
"zpid": "338246448",
"id": "338246448",
"palsId": "222004_40830219",
"address": "2500 Longview St #518, Austin, TX 78705",
"addressCity": "Austin",
"addressState": "TX",
"addressZipcode": "78705",
"price": "$500,000",
"unformattedPrice": 500000,
"beds": 2,
"baths": 2,
"area": 1010,
"latLong": { "latitude": 30.289932, "longitude": -97.75102 },
"statusType": "FOR_SALE",
"statusText": "For Sale",
"imgSrc": "https://photos.zillowstatic.com/fp/example-cc_ft_960.jpg",
"brokerName": "Compass RE Texas, LLC",
"detailUrl": "https://www.zillow.com/homedetails/2500-Longview-St-518-Austin-TX-78705/338246448_zpid/",
"foundOnSearchPage": 1,
"foundFromSearchUrl": "https://www.zillow.com/austin-tx/"
}

Measured coverage

Validated by running the same input as the leading competitor (Austin TX, full 820-result pull) and comparing:

MetricValue
Listings overlap with competitor820 / 820 (100.0%)
Field-name match61 / 61 fields
Critical fields (zpid, address, price, beds/baths, lat/lon, statusType, brokerName, imgSrc, detailUrl)97.6% to 100% coverage, 100% value match on overlapping records

Fields that are present on a subset of listings (rentals only, land only, providerListing only) flow through automatically when Zillow includes them in the source data.

Pricing

Pay-per-result, $0.0016 per listing on the FREE tier. Apify's tier discounts apply automatically (BRONZE/SILVER/GOLD/PLATINUM/DIAMOND).

Worked examples (FREE tier):

  • 100 listings: $0.16
  • 1,000 listings: $1.60
  • 10,000 listings: $16.00
  • One full Austin TX scrape (~820 listings): about $1.31

Compare to the leading Zillow search scraper on Apify Store at $0.0023 per listing on FREE tier (about 30% more).

Limits and edge cases

  • 820 listings per (region, filter) slice. Zillow caps /page_p/ pagination at 20 pages of 41 listings = 820. To exceed this for a region with more inventory, either (a) split your search by neighborhood / ZIP / price range and run the actor on each slice, or (b) wait for the v2 zoom-tiling mode.
  • Geo gating. Run on a US Apify proxy. Zillow auto-redirects non-US IPs to localized pages (Canadian IPs get Canadian listings).
  • Restricted listings. Some states (e.g. NY, parts of CA) hide certain listings from unauthenticated viewers. They appear in restrictedListingCount totals on Zillow but are not in the returned listResults. This affects approximately 1-3% of listings in affected markets.
  • PerimeterX retries. Zillow runs PerimeterX bot detection. Expect 1-2 retries per 20-request batch; the actor handles this transparently with session rotation. If your concurrency is very high you may see your request count exceed your listing count by 10-15%.
  • Live data. Zillow listings change continuously (new postings, price changes, sold transitions). Running the same input twice will return slightly different listings if the underlying market moved.

Technical details

  • Stack: Node.js 20 + Crawlee CheerioCrawler + got-scraping with Chrome header generator. No browser, no JavaScript execution.
  • Memory footprint: 512 MB recommended.
  • Throughput: about 50,000 listings per hour at default concurrency on Apify residential proxy.
  • TLS: got-scraping uses Chrome's HTTP/2 SETTINGS frame and realistic headers to bypass Zillow's JA3 fingerprinting.

FAQ

Does this Zillow Search Scraper need an API key? No. Zillow's web search is publicly accessible; the actor reads the same data anyone can see in a browser.

Does it need my Zillow login or cookies? No. This scraper never asks for user credentials.

What's the difference between this and maxcopell/zillow-detail-scraper? This actor extracts the search-page listing card (60+ fields). For deeper details on a single property (RESO facts, price history, tax history, schools, full photo set), use a detail page scraper that takes a zpid or detail URL as input.

Can I run it via the Apify API or schedule it? Yes, like any Apify actor. Use the standard Run actor API or attach a schedule in the Apify Console.

Changelog

  • 0.1 (2026-05-14): initial release. PAGINATION mode (up to 820 listings per search slice). 61-field output matches competitor schema 1:1.