Real estate · ZillowBeta

Zillow Listings Scraper API

The Zillow Listings Scraper API gets you live Zillow data the moment you ask, as clean, structured data – ready for your own app, a spreadsheet or an AI assistant. No scraping, nothing to maintain.

100 free requests every month · no credit card · one API key for all platforms

Key facts

Updated

Every listing search on Zillow – a city, a ZIP code, a drawn polygon, a radius around a point – can be reproduced as an API call, so you can scrape Zillow search results without running a browser. The everydata.io Zillow Listings Scraper API, currently in beta, returns the listing cards for a location with the same filters the site offers: for sale, for rent or recently sold, price and size ranges, home types, pools, garages, views, school filters and pet rules for rentals. Results come back paged as JSON, or as CSV when you would rather open them in a spreadsheet.

Main endpoint
/search
Quota per call
2 requests
Free plan
100 req / monththen from €30 / month
What you get

What the Zillow Listings Scraper API returns

Each entry in results is a listing card: zpid, streetAddress, city, state, zipcode, latitude and longitude, price and currency, bedrooms, bathrooms and livingArea, homeType and homeStatus, daysOnZillow and timeOnZillow, plus zestimate, rentZestimate and taxAssessedValue where Zillow has them. Flags such as isZillowOwned, isPremierBuilder, isShowcaseListing, isPreforeclosureAuction and listing_sub_type (is_FSBA, is_FSBO …) describe the listing type, and imgSrc gives the hero photo.

Paging metadata is explicit: resultsPerPage (41 in the example), totalPages and totalResultCount. Sorting follows Zillow's own options via sortSelection – priorityscore (Zillow's default relevance), days (newest), priced / pricea (price descending / ascending), beds, baths, size, lot, zest and zesta – and doz restricts to listings added in the last 1, 7, 14, 30, 90 days or 6 to 36 months. Five ways to define the search area are available: location text, lat/long radius, polygon, single address and MLS number.

  • Listing cards with zpid, address, coordinates, price, beds, baths, livingArea, homeType, homeStatus
  • zestimate, rentZestimate and taxAssessedValue on every card where available
  • status forSale (default), forRent or recentlySold; listing_type by_agent or by_owner_other
  • Range filters: price, beds, baths, sqft, lotSize, built year, HOA, monthly payment, parking spots, GreatSchools rating
  • Boolean filters: isSingleFamily, isCondo, isTownhouse, isMultiFamily, hasPool, hasGarage, isWaterfront, isNewConstruction, onlyPriceReduction …
  • Rental filters: onlyRentalPetsAllowed, onlyRentalCatsAllowed, onlyRentalLargeDogsAllowed, onlyRentalIncomeRestricted
  • output=json (default) or output=csv; paging via page with totalPages and totalResultCount
Use cases

What teams build with the Zillow Listings Scraper API

Market monitoring dashboards

Pull all for-sale and recently-sold listings per ZIP every night to track inventory, median asking price, days on market and price cuts (onlyPriceReduction=true).

Buyer and investor alerts

Save a filter set – price ceiling, beds, hasPool, isNewConstruction – and notify users about listings with doz=1 that match, including the hero photo and Zestimate gap.

Rental sourcing

Query status=forRent with pet and income filters to list available rentals around a workplace using search-by-coordinates, then rank by rent versus rentZestimate.

Territory analysis with polygons

Brokerages and proptech teams post custom polygons – a farm area, a school zone – to count active listings and estimate market share per agent via the MLS attribution on each property.

How it works

Zillow Listings Scraper API: example request and response

Call GET /zil/search with location – an address, neighbourhood, city or ZIP – and any filters you need. The example asks for single-family homes for sale in Houston, TX with at least three bedrooms under $300,000, sorted by newest. The response is shortened to one listing; a real page carries about 40.

GET /zil/search

curl "https://api.everydata.io/zil/search?location=Houston%2C+TX&status=forSale&price_max=300000&beds_min=3&isSingleFamily=true&sortSelection=days&page=1" \
  -H "x-api-key: YOUR_API_KEY"

Response (shortened)

200 OK · application/json
{
  "responseStatus": "PAGE_FOUND",
  "responseMessage": "Page successfully found!",
  "results": [
    {
      "zpid": 28253016,
      "streetAddress": "15626 Laurel Heights Dr",
      "city": "Houston",
      "state": "TX",
      "zipcode": "77084",
      "country": "USA",
      "latitude": 29.85,
      "longitude": -95.68,
      "price": 275000,
      "priceForHDP": 275000,
      "currency": "USD",
      "bedrooms": 3,
      "bathrooms": 2,
      "livingArea": 1850,
      "homeType": "SINGLE_FAMILY",
      "homeStatus": "FOR_SALE",
      "homeStatusForHDP": "FOR_SALE",
      "daysOnZillow": 5,
      "timeOnZillow": 432000000,
      "zestimate": 280100,
      "rentZestimate": 2100,
      "taxAssessedValue": 240000,
      "listing_sub_type": {
        "is_FSBA": true
      },
      "isZillowOwned": false,
      "isPremierBuilder": false,
      "isShowcaseListing": false,
      "imgSrc": "https://photos.zillowstatic.com/fp/1.jpg"
    }
  ],
  "resultsPerPage": 41,
  "totalPages": 20,
  "totalResultCount": 812
}
Zillow Listings Scraper API: fields of the example response from /zil/search
Zillow Listings Scraper API: fields of the example response from /zil/search

Geographic alternatives use the same filters and return the same shape. GET /zil/search-by-coordinates takes lat, long and d (the diameter in miles, e.g. 0.5) for a radius around a point. POST /zil/search-by-polygon-v2 accepts a JSON body with polygon as an array of [lat, lng] pairs – built for long boundaries such as school districts or drive-time isochrones. GET /zil/search-by-address returns the full property object for one street address, and GET /zil/search-by-mls resolves an MLS number to its Zillow record.

Paging is straightforward: repeat the call with page=2, 3 … until page equals totalPages. Zillow limits any single search to about 20 pages, so for dense markets narrow the area (ZIP instead of city, or a polygon) or split by price bands to see everything. Pass output=csv to receive the same results as a CSV file for analysts; xlsx is listed by Zillow's interface but is not supported here – convert the CSV instead.

Statuses map to Zillow's tabs: forSale is the default, forRent switches to rental listings (where the rental-only filters apply and price is the monthly rent), recentlySold returns closed sales with the sold price.

Related endpoints

GET/zil/search

Search properties. Search by neighbourhood, city or ZIP with dozens of filters.

GET/zil/search-by-coordinates

Search by coordinates. Radius search around a lat/long point.

POST/zil/search-by-polygon-v2

Search by polygon. Polygon search via JSON body.

GET/zil/search-by-address

Search by address. Property object for a street address.

GET/zil/search-by-mls

Search by MLS. Lookup by MLS number.

Full API reference
Pricing

Zillow Listings Scraper API pricing: pay per request

Each results page – about 40 listings – is one request (2 quota units), in JSON or CSV. Covering 100 ZIP codes with two pages each per day is roughly 6,000 requests or 12,000 units a month, which fits Production (50,000 units, €80); a Starter plan (5,000 units, €30) suits a handful of neighbourhoods. Polygon, coordinate and address searches cost the same as a location search, and Zillow-side 5xx errors are never billed.

Free
100 req / month
Starter
5,000 req · €30
Production
50,000 req · €80
Business
300,000 req · €300

Zillow Listings Scraper API: frequently asked questions

What can I pass as location?

A street address, a neighbourhood, a city such as "Houston, TX" or a ZIP code. For a radius use search-by-coordinates with lat, long and d; for an arbitrary shape use search-by-polygon-v2.

How many results are on a page and how deep can I page?

Around 40 listings per page (resultsPerPage tells you the exact number). totalPages caps at about 20, so narrow the area or add filters for large markets.

Can I export to Excel?

Set output=csv to receive the results as CSV, which Excel and Google Sheets open directly. Native xlsx output is not supported.

Can I search rentals and sold homes?

Yes – status=forRent returns rental listings with rental-specific filters, status=recentlySold returns closed sales. Both share the same result fields.

Is this API in beta?

Yes, the Zillow endpoints are currently in beta. They are included in every plan at the normal Zillow rate of 2 quota units per request; field names mirror Zillow's own data and may gain additional fields over time.

Search Zillow listings from your code

Sign up for free, call /zil/search with a city or ZIP and get your first page of listings in seconds. No credit card required.