Zillow API — $1.30/1K homes, sale, rent & sold
Pricing
from $0.91 / 1,000 search results
Zillow API — $1.30/1K homes, sale, rent & sold
[$1.30/1K homes] Zillow API alternative: one HTTP request returns Zillow homes for sale, for rent or recently sold as JSON — price, beds, baths, sqft, Zestimate, sold date, address, coordinates. Full details add agent contact, price history and photos. No fee per request.
Pricing
from $0.91 / 1,000 search results
Rating
0.0
(0)
Developer
Matvey
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
5
Monthly active users
2 days ago
Last modified
Categories
Share
Zillow API for developers: send one HTTP request, get Zillow listings back as JSON. Homes for sale, for rent and recently sold for any US city, ZIP code, neighborhood or Zillow search URL — price, beds, baths, square feet, lot size, Zestimate, rent Zestimate, sold date and sold price, days on Zillow, address split into street / city / state / ZIP, coordinates and listing flags. Switch on full details and each home also carries the description, price history, photos, facts and features, and the listing agent's and broker's published contact.
Zillow has no public listings API: its developer APIs are limited to approved partners and do not let you search listings by place. This Actor is a Zillow API alternative that runs on Apify: you call a standard Apify endpoint, it reads the same data the Zillow website shows to any visitor, and you get flat JSON rows — no Zillow account, no Zillow API key, no cookies, no proxy setup on your side.
This is the API-first entrance to Zillow Scraper — same engine, same fields, same price. If you prefer a form, scheduling and CSV/Excel downloads, the main Actor is the place to start.
Call it in one request
run-sync-get-dataset-items starts a run, waits for it and returns the rows in the response body:
curl -X POST "https://api.apify.com/v2/acts/lergassy~zillow-api/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"listingType": "forSale", "locations": ["78704"], "maxItems": 20}'
An empty body ({}) is valid too: it returns 50 homes for sale in Austin, TX, so you can see the row shape before writing any code.
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("lergassy/zillow-api").call(run_input={"listingType": "sold","locations": ["Denver, CO"],"maxItems": 200,})for home in client.dataset(run["defaultDatasetId"]).iterate_items():print(home["address"], home.get("soldPrice"), home.get("soldDate"))
Node.js:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('lergassy/zillow-api').call({ listingType: 'forRent', locations: ['Brooklyn, NY'], maxItems: 100 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
run-sync-get-dataset-items waits up to 300 seconds. For large pulls (thousands of homes, or full details on many homes) start the run asynchronously with POST /v2/acts/lergassy~zillow-api/runs, then read GET /v2/datasets/{defaultDatasetId}/items when it finishes, or attach a webhook.
⬇️ Input
| Field | What it does |
|---|---|
listingType | forSale (default), forRent or sold |
locations | City, ZIP code, neighborhood, county or address, one per item: ["Austin, TX", "78704"] |
searchUrls | Zillow search URLs copied from the browser — their filters and map area are kept |
propertyUrls | Zillow home URLs, ZPIDs or street addresses — returns the full page for each home |
includeDetails | true adds description, price history, photos, facts, HOA and agent/broker contact to search rows |
maxItems | Hard cap on rows for the run, so also your cost cap. Default 50; 0 = no limit |
bypassResultCap | true (default): searches Zillow cuts at 820 results are split into smaller map areas so the whole area comes back |
sort | relevance, newest, priceLow, priceHigh, beds, baths, sqft, lot, yearBuilt, priceCut, daysOnZillow |
priceMin / priceMax, bedsMin / bedsMax, bathsMin, sqftMin / sqftMax, lotSizeMin / lotSizeMax, yearBuiltMin / yearBuiltMax | Range filters |
homeTypes, sellerTypes, features, daysOnZillow, keywords, hoaMax, parkingSpotsMin, includePending | The rest of Zillow's filters |
oneRowPerUnit | For rental buildings: one row per unit instead of one row per building |
Example — 3+ bed houses under $600k listed in the last 30 days, with full details:
{"listingType": "forSale","locations": ["Phoenix, AZ"],"homeTypes": ["house"],"bedsMin": 3,"priceMax": 600000,"daysOnZillow": "30","includeDetails": true,"maxItems": 100}
⬆️ Output
One flat JSON object per home. A search row (full details off):
{"zpid": "331627751","url": "https://www.zillow.com/homedetails/15000-Upland-Willow-Rd-Austin-TX-78724/331627751_zpid/","listingType": "forSale","status": "FOR_SALE","statusText": "Active","price": 279000,"pricePerSqft": 162,"address": "15000 Upland Willow Rd, Austin, TX 78724","street": "15000 Upland Willow Rd","city": "Austin","state": "TX","zip": "78724","latitude": 30.262829,"longitude": -97.57543,"beds": 3,"baths": 2,"sqft": 1725,"lotSizeSqft": 5663,"homeType": "house","zestimate": 281400,"rentZestimate": 1795,"daysOnZillow": 16,"isFsbo": false,"isNewConstruction": false,"isForeclosure": false,"isPending": false,"brokerName": "Compass RE Texas, LLC","imageUrl": "https://photos.zillowstatic.com/fp/...","searchLocation": "Austin, TX","summary": "15000 Upland Willow Rd, Austin, TX 78724: 3 bd 2 ba 1,725 sqft house $279,000; 16 day(s) on Zillow."}
With includeDetails: true (or for propertyUrls) the row also gets description, yearBuilt, hoaFee, agentName, agentPhone, brokerPhone, mlsId, priceHistory, photos, highlights, heating, cooling, parking, facts and more, when Zillow shows them. Rental buildings carry minRent, maxRent and a units list.
Rows that fail are returned as rowType: "error" with errorCode and errorMessage (for example location-not-found). They are free.
💰 Pricing
Pay per row, no subscription, no fee per request or per run:
| Event | Price |
|---|---|
| Home from a search | $1.30 per 1,000 |
Full property details (on top of the search row when includeDetails is on; alone for propertyUrls) | $2.50 per 1,000 |
Paid Apify plans get the same rows 10–30% cheaper. Error rows and empty results cost nothing. maxItems caps the bill: a run never charges for more rows than that. The price is identical to Zillow Scraper.
❓ FAQ
Does Zillow have an official API for listings?
Not one you can sign up for and search listings with. Zillow's developer programs are restricted to approved partners and specific use cases. This Actor gives you an HTTP endpoint that returns the listing data the public website shows.
Do I need a Zillow account, API key or proxy?
No. You only need an Apify API token. If Zillow refuses a request from the run's own address, the Actor retries it through a residential IP itself; you do not configure or pay for that separately.
How many homes can one call return?
Zillow shows at most 820 homes per search. With bypassResultCap on (default) the Actor splits the map and returns the whole area. Keep big jobs asynchronous: the synchronous endpoint waits at most 300 seconds.
Can I look up a single home?
Yes — put a Zillow URL, a ZPID or a street address into propertyUrls. That returns the full detail row for each one.
Why is soldPrice empty in Texas?
Texas and a few other states are non-disclosure states, and Zillow does not publish sale prices there. The sold date is still returned.
Does it return tax history and school ratings?
No. Everything else on the listing page is included.
Can an AI agent or n8n / Make / Zapier call it?
Yes. It is a standard Apify Actor: it works with the Apify MCP server, the official Python and JavaScript clients, and the Apify integrations for n8n, Make and Zapier.
Is it legal?
The Actor reads only public pages that Zillow shows to any visitor without logging in. How you use the data is your responsibility: respect Zillow's terms where they apply to you, fair-housing and privacy law, and get legal advice for commercial use.
Related
- Zillow Scraper — the main Actor with the same engine: form input, schedules, CSV/Excel export and a longer guide to every field and filter.
Questions or a field you need? Open an issue on the Issues tab.