Zillow Scraper — Sale, Rent & Sold
Pricing
from $0.91 / 1,000 search results
Zillow Scraper — Sale, Rent & Sold
Scrape Zillow homes for sale, for rent and recently sold with every filter, past the 820-result cap. One flat row per home: price, sold date, beds, baths, sqft, Zestimate, agent phone, price history, photos. Export data, run via API, schedule runs or plug into AI workflows.
Pricing
from $0.91 / 1,000 search results
Rating
5.0
(4)
Developer
Matvey
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Zillow Scraper turns any Zillow search into a clean spreadsheet: homes for sale, homes for rent and recently sold homes, with every filter Zillow offers, in one flat row per home — price, beds, baths, square feet, lot size, Zestimate, rent Zestimate, sold date and sold price, days on Zillow, listing agent and broker phone, MLS number, price history, photos and facts. Type a city, a ZIP code, a neighborhood or paste a Zillow URL, press Start, and download JSON, CSV or Excel — or pull the rows through the Apify API into Google Sheets, n8n, Make, Zapier, a database or an AI agent.
It goes past Zillow's 820-result cap: a search that Zillow cuts off at 20 pages is split into smaller map areas automatically, so a whole city comes back complete (Austin, TX: 5,692 homes for sale in 4 minutes, all of them). It needs no login, no API key, no cookies and no proxy — Zillow answers Apify's servers directly, so a run costs exactly what the price per result says and nothing more.
What is Zillow Scraper?
Zillow is the largest real-estate marketplace in the United States, but its official API is closed to almost everyone and its website shows at most 820 homes per search. Zillow Scraper is a Zillow API alternative: it reads the same listing data the website shows and returns it as structured rows, at any volume, for any location, on a schedule if you want.
Three kinds of search, one row shape:
| Listing type | What you get | Typical use |
|---|---|---|
| For sale | Active listings with price, Zestimate, days on Zillow, FSBO / foreclosure / auction / new-construction flags, listing brokerage | Investor deal flow, buyer alerts, market reports, agent lead lists |
| For rent | Houses, condos and whole apartment buildings with every unit, rent range, availability and pet policy | Rent comps, relocation tools, property-management prospecting |
| Recently sold | Sold price and sold date, Zestimate at sale, beds, baths, sqft | Comps, appraisal support, market-trend analysis, flip tracking |
Every row also carries the address split into street, city, state and ZIP, coordinates, home type, lot size and a one-sentence summary an AI agent or a Slack alert can read as is.
What data does Zillow Scraper extract?
On every row (search results):
| Field | Example | Notes |
|---|---|---|
zpid, url | 331627751, https://www.zillow.com/homedetails/…/331627751_zpid/ | Zillow's id and the listing page |
listingType, status, statusText | forSale, FOR_SALE, Active | Also PENDING, FOR_RENT, SOLD |
price, pricePerSqft | 279000, 162 | Monthly rent for rentals, sale price for sold homes |
soldPrice, soldDate | 550000, 2026-09-11 | Sold homes; see the note on non-disclosure states below |
address, street, city, state, zip | 15000 Upland Willow Rd, Austin, TX 78724 | Split for filtering and mail merge |
latitude, longitude | 30.262829, -97.57543 | For maps and radius filters |
beds, baths, sqft, lotSizeSqft | 3, 2, 1725, 5663 | Lot always in square feet |
homeType | house | house, condo, townhouse, multiFamily, apartment, lot, manufactured |
zestimate, rentZestimate, taxAssessedValue | 281400, 1795, 247000 | Zillow's estimates and the assessor's value |
daysOnZillow | 16 | Days since listed (days since sold for sold homes) |
isFsbo, isAgentListed, isNewConstruction, isForeclosure, isAuction, isComingSoon, isPending, isOpenHouse | false | Listing flags investors filter on |
brokerName | Compass RE Texas, LLC | Listing brokerage |
imageUrl | https://photos.zillowstatic.com/fp/… | Cover photo |
searchLocation | Austin, TX | Which input the row came from |
summary | 15000 Upland Willow Rd, Austin, TX 78724: 3 bd 2 ba 1,725 sqft house $279,000; 16 day(s) on Zillow. | One readable sentence |
Added with "Add full details" (or for pasted URLs, ZPIDs and addresses):
| Field | Example |
|---|---|
description | The full listing text |
yearBuilt, propertySubType, parcelNumber, county | 2020, Single Family Residence, … |
hoaFee | 35 (monthly) |
agentName, agentPhone, agentEmail, agentLicense, brokerName, brokerPhone | Andrew Allen, (512) 346-3550, … — as published on the listing |
mlsId, mlsName, listingUpdated | 8668201, Unlock MLS, 2026-09-11 08:12:02 |
priceHistory | [{"date": "2026-08-27", "price": 279000}, {"date": "2025-08-08", "price": 299000}, …] |
priceChange, priceChangeDate, lastSoldPrice, lastSoldDate | -20000, 2026-08-27, … |
photos, photoCount | 19 full-size photo URLs |
highlights | ["Quartz countertops", "Walk-in closet", "Walk-in shower"] — Zillow's own highlight phrases |
heating, cooling, parking, garageSpaces, appliances, flooring, stories, basement, hasPool, lotFeatures | Facts and features |
facts | Everything else Zillow lists under Facts & features, as a key–value object |
zestimateLow, zestimateHigh, propertyTaxRate, openHouses, virtualTourUrl | When Zillow shows them |
Apartment buildings (rentals): buildingName, minRent, maxRent, availableUnits, units (unit number, floor plan, beds, baths, sqft, rent, base rent, required fees, available-from date), phone, managementCompany, petPolicy, amenities, officeHours, schools, photos. Switch on One row per rental unit to get each unit as its own row instead.
Rows that fail come back as rowType: "error" with errorCode and errorMessage (for example location-not-found when Zillow does not recognise a place) — they cost nothing and nothing disappears silently.
How much does it cost to scrape Zillow?
Pay per result, no subscription, no charge for errors:
| Event | Price | What it is |
|---|---|---|
| Home from search | $1.30 per 1,000 | One home or apartment building returned by a search |
| Full property details | $2.50 per 1,000 | The full page for one home — description, price history, photos, facts, agent contact. Added on top of the search event when Add full details is on; charged alone for pasted URLs, ZPIDs and addresses |
So $1 buys about 770 search rows, or about 260 homes with full details. Zillow answers without a proxy, so the platform usage on top is a fraction of a cent: the 5,692-home Austin run above cost $0.04 of compute. On the Apify free plan ($5 of credit every month) that is roughly 3,800 homes from search or 1,300 fully detailed homes, every month, for free. Paid Apify plans get the same rows 10–30% cheaper.
Set Maximum results and the run can never cost more than that number × the price — the run stops the moment it is reached. Unreachable pages, unknown locations and blocked requests are never billed.
For comparison, the popular Zillow scrapers on Apify charge $2–3.60 per 1,000 search rows and $3–80 per 1,000 detailed homes, and several of them bill a per-run start fee on top. This one has no start fee.
How to scrape Zillow with Zillow Scraper
- Pick the listing type — for sale, for rent or recently sold.
- Tell it where — one location per line:
Austin, TX,78704,Zilker, Austin, TX,Travis County, TX. Or paste Zillow search URLs straight from your browser, filters and all. - Add filters if you want — price, beds, baths, home types, square feet, lot, year built, listed within, seller type (FSBO, foreclosure, auction, new construction…), keywords, must-have features, HOA cap, parking.
- Decide on details — leave Add full details off for a fast, cheap list; switch it on for description, price history, photos, facts and the agent's phone on every row.
- Set Maximum results — this is your cost cap.
- Start. Rows appear in the dataset as they are found; download them as JSON, CSV, Excel or HTML, or read them through the API.
⬇️ Input
The simplest useful input — 100 homes for sale in one ZIP code:
{"listingType": "forSale","locations": ["78704"],"maxItems": 100}
Investor search — owner-posted and foreclosure houses under $400k with a pool, listed in the last 30 days, with full details and the agent's phone:
{"listingType": "forSale","locations": ["Phoenix, AZ", "Mesa, AZ"],"sellerTypes": ["ownerPosted", "foreclosure", "auction"],"homeTypes": ["house"],"priceMax": 400000,"features": ["pool"],"daysOnZillow": "30","includeDetails": true,"maxItems": 500}
Sold comps for an appraisal — houses sold in the last 90 days within a neighborhood:
{"listingType": "sold","locations": ["Zilker, Austin, TX"],"homeTypes": ["house"],"daysOnZillow": "90","sort": "newest","maxItems": 0}
Rentals, one row per unit, pets allowed:
{"listingType": "forRent","locations": ["Denver, CO"],"bedsMin": 2,"priceMax": 2500,"features": ["petsAllowed", "inUnitLaundry"],"oneRowPerUnit": true,"maxItems": 300}
Homes you already know — a ZPID, a street address, a listing URL and an apartment building:
{"propertyUrls": ["331627751","15000 Upland Willow Rd, Austin, TX 78724","https://www.zillow.com/homedetails/1208-Kinney-Ave-Austin-TX-78704/29324051_zpid/","https://www.zillow.com/apartments/austin-tx/bellrock-la-frontera/CtqCKn/"]}
Every input field
| Field | Type | What it does |
|---|---|---|
listingType | forSale · forRent · sold | What to search for |
locations | list | Cities, ZIP codes, neighborhoods, counties, states — one per line |
searchUrls | list | Zillow search pages copied from the browser; their filters are kept and yours are added on top |
propertyUrls | list | Property URLs, apartment-building URLs, bare ZPIDs or street addresses; each returns a fully detailed row |
includeDetails | boolean | Open every search result and add the full page (one Full property details event each) |
maxItems | number | Hard cap on rows for the run; 0 = no cap |
bypassResultCap | boolean | Split the map when Zillow caps a search at 820 (on by default) |
sort | choice | Relevance, newest, price low→high / high→low, beds, baths, sqft, lot, year built, days on Zillow |
priceMin, priceMax | number | USD; monthly rent for rentals |
bedsMin, bedsMax, bathsMin | number | bathsMin accepts halves |
homeTypes | multi-select | Houses, condos, townhomes, multi-family, apartments, lots, manufactured |
sqftMin, sqftMax, lotSizeMin, lotSizeMax, yearBuiltMin, yearBuiltMax | number | Lot in square feet |
daysOnZillow | choice | Listed (or sold) within 1 day … 36 months |
sellerTypes | multi-select | Agent listed, owner posted (FSBO), new construction, foreclosures, auctions, pre-foreclosures, foreclosed, coming soon |
includePending | boolean | Also return pending / under-contract homes |
keywords | text | Words the listing must contain (pool, ADU, fixer) |
features | multi-select | Pool, A/C, garage, waterfront, single story, basement, view, open house; pets allowed, furnished, in-unit laundry for rentals |
hoaMax, parkingSpotsMin | number | HOA cap (0 = no HOA), minimum parking |
oneRowPerUnit | boolean | Rentals: one row per apartment unit |
monitoringStoreName | text | Name a watch; later runs return only new or changed homes |
includeRawData | boolean | Add Zillow's raw JSON under raw |
maxConcurrency, requestTimeoutSecs, proxyConfiguration | advanced | Defaults work; a proxy is not needed |
⬆️ Output
One row per home. A search row with full details:
{"zpid": "29325047","url": "https://www.zillow.com/homedetails/1113-Bluebonnet-Ln-Austin-TX-78704/29325047_zpid/","listingType": "forSale","status": "FOR_SALE","statusText": "Active","price": 1067000,"pricePerSqft": 499,"address": "1113 Bluebonnet Ln, Austin, TX 78704","street": "1113 Bluebonnet Ln","city": "Austin","state": "TX","zip": "78704","latitude": 30.2466,"longitude": -97.7676,"beds": 4,"baths": 2,"sqft": 2137,"lotSizeSqft": 8189,"homeType": "house","yearBuilt": 1959,"zestimate": 1052300,"rentZestimate": 4870,"daysOnZillow": 65,"isFsbo": false,"isNewConstruction": false,"isForeclosure": false,"isPending": false,"brokerName": "Keller Williams Realty","agentName": "Andrew Allen","agentPhone": "(512) 346-3550","mlsId": "2075799","hoaFee": null,"heating": "Central","cooling": "Central Air","parking": ["Attached"],"description": "Charming mid-century home on a corner lot in Zilker…","highlights": ["Storage shed", "Paver patio", "Two fireplaces", "Huge screened-in porch"],"priceHistory": [{ "date": "2026-07-10", "price": 1067000 },{ "date": "2026-05-02", "price": 1099000 }],"photoCount": 30,"photos": ["https://photos.zillowstatic.com/fp/…-cc_ft_1536.jpg", "…"],"facts": { "propertySubType": ["Single Family Residence"], "parkingCapacity": 2, "lotSize": "8,189 sqft" },"searchLocation": "Zilker, Austin, TX","summary": "1113 Bluebonnet Ln, Austin, TX 78704: 4 bd 2 ba 2,137 sqft house $1,067,000; 65 day(s) on Zillow; listed by Andrew Allen ((512) 346-3550).","scrapedAt": "2026-09-13T15:00:12Z"}
A sold home:
{"zpid": "7946659","listingType": "sold","status": "SOLD","price": 550000,"soldPrice": 550000,"soldDate": "2026-09-11","address": "4037 W Kelton Ave, Phoenix, AZ 85053","beds": 4,"baths": 2,"sqft": 2700,"homeType": "house","zestimate": 543100,"rentZestimate": 2650,"brokerName": "Arizona Premier Realty Homes & Land, LLC","summary": "4037 W Kelton Ave, Phoenix, AZ 85053: 4 bd 2 ba 2,700 sqft house sold for $550,000 on 2026-09-11; Zestimate $543,100."}
An apartment unit (with One row per rental unit):
{"listingType": "forRent","isBuilding": true,"buildingName": "Chimney Park Apartments","unitNumber": "Unit 310","floorPlan": "A1","beds": 1,"baths": 1,"sqft": 450,"price": 1049,"baseRent": 949,"requiredMonthlyFees": 100,"availableFrom": "2026-11-10","address": "2406 Bluebonnet Ln, Austin, TX 78704","phone": "(512) 555-0134","petPolicy": ["Cats", "Small dogs"],"minRent": 1049,"maxRent": 1890,"availableUnits": 14,"summary": "Chimney Park Apartments, Unit 310: 1 bd 1 ba 450 sqft $1,049/mo, available 2026-11-10 at 2406 Bluebonnet Ln, Austin, TX 78704."}
Use cases for Zillow data
Real-estate investors and wholesalers
Run the FSBO + foreclosure + auction filter over your target metros every morning with Monitoring mode on: each run returns only homes that are new or whose price or status changed since yesterday. Pipe the rows into a sheet or a CRM and call the agentPhone on the ones that match your buy box. Sold comps for the same ZIP come from the same Actor with listingType: "sold".
Agents and brokerages
Build a list of every active listing in your farm area with the listing agent's name, phone and brokerage — recruiting, co-broking and expired-listing outreach start from that table. Track days on Zillow and price cuts to time your calls.
Appraisers, analysts and PropTech teams
Pull all recently sold homes in a county with sold date, sold price, beds, baths, sqft and lot size, and compute price per square foot by neighborhood. Schedule the run weekly and append to a warehouse; the flat schema and stable field names make the append trivial.
Property managers and rental platforms
Rent comps by ZIP, building by building, unit by unit: floor plan, sqft, base rent, required fees and availability date, plus the leasing-office phone and pet policy. Filter apartments by pets allowed or in-unit laundry the way a tenant would.
AI agents, RAG and research
Every row has a summary sentence and a stable id, so an agent can search a city, reason over prices and call the Actor again for details on the homes it picked. The Actor is listed for the Apify MCP server and for agentic payments.
Integrations
- API —
POST https://api.apify.com/v2/acts/lergassy~zillow-scraper/run-sync-get-dataset-items?token=…with the input JSON returns the rows directly; for longer runs start the run, wait forSUCCEEDED, then readdatasets/{id}/items?format=csv. - Python / JavaScript —
apify-client:client.actor("lergassy/zillow-scraper").call(run_input={...}), thenclient.dataset(run["defaultDatasetId"]).list_items(). - Google Sheets — Apify's Google Sheets integration, or the CSV export link, or the Apify node in n8n/Make that appends dataset rows to a sheet. The rows are flat, so every column maps without transformation; the few nested fields (
priceHistory,photos,units,facts) arrive as JSON text. - n8n, Make, Zapier — use the Apify app / node, pick this Actor, paste the input JSON, and map the dataset items downstream. Set Maximum results so a big city does not overflow a scenario's limits; for runs over 5 minutes use the "wait for finish" option or a webhook rather than a plain HTTP request.
- Webhooks — an Actor-run webhook on
ACTOR.RUN.SUCCEEDEDposts the dataset link to your endpoint or Slack. - Scheduling — Apify Schedules run the same input daily or hourly; combined with Monitoring mode this is a change feed of a market.
- MCP — connect the Apify MCP server to Claude, Cursor or any MCP client and ask for Zillow data in plain language; the Actor's input schema is the tool description.
Zillow's result cap and how it is handled
Zillow shows at most 20 pages of 41 homes for any single search, so a search for a big city normally stops at 820 homes no matter what. With Bypass Zillow's 820-result cap on (the default) the Actor reads the total first and, when it is above the cap, splits the map into four quadrants, then again, until every quadrant is under the cap, and merges the results with duplicates removed. The city boundary is kept — a quadrant search still respects the region, so homes outside the city limits do not creep in. The whole of Austin (5,692 homes for sale) took 153 requests and 4 minutes.
Sold prices and non-disclosure states
Twelve US states (Texas, Utah, Idaho, Montana, Wyoming, North Dakota, Kansas, Missouri, Mississippi, Louisiana, Alaska, New Mexico) do not make sale prices public. Zillow shows a sold date but no sold price there, and so does this Actor — soldPrice is null rather than a guess. In every other state both fields are filled.
❓ FAQ
Is it legal to scrape Zillow?
The Actor reads only what Zillow shows to any visitor without logging in — public listing pages — and stores no personal data beyond what the listing itself publishes (the listing agent's business contact). Scraping publicly available data is generally lawful, but how you use it is your responsibility: respect Zillow's terms where they apply to you, fair-housing rules and privacy law in your jurisdiction, and consult a lawyer for commercial use. Do not use the data to contact homeowners against their wishes.
Do I need a Zillow account, API key, cookies or a proxy?
No. Nothing to log into, nothing to paste, nothing to configure. If a very large run ever starts seeing blocked error rows, switch on Apify residential proxy in the advanced section — but this has not been necessary in testing.
Why does my search return more homes than Zillow shows me?
Because of the cap bypass. Zillow shows at most 820 per search; the Actor splits the map and collects them all. Turn bypassResultCap off if you want exactly what one Zillow page set shows.
Why is soldPrice empty for Texas?
Texas is a non-disclosure state; Zillow does not publish sale prices there. The sold date is still returned. See the section above.
Can I search by address, ZPID or a list of URLs?
Yes — put them in Property URLs, ZPIDs or addresses, one per line. Each returns a fully detailed row. Mixed lists are fine.
Can I use the filters from a Zillow URL I already have?
Yes. Paste the URL into Zillow search URLs; its filters are read from the address bar and any filter you set in the form is added on top.
How do I get only new listings every day?
Set Monitoring mode — store name to any name, schedule the run daily. The first run returns everything; later runs return only homes that are new or whose price or status changed, each marked changeType: "new" or "changed" (with previousPrice).
How fast is it?
About 41 homes per request for search, one request per home for details. 100 search rows take a few seconds; 100 fully detailed homes about 15–30 seconds at the default concurrency.
Does it get tax history and school ratings?
Not yet. Zillow loads those two blocks through a separate, signed request that anonymous visitors cannot reproduce reliably, and I would rather leave a field out than fill it with guesses. Everything else on the listing page is included. If you need them, open an issue — it is on the list.
Can I get one row per apartment unit?
Yes — oneRowPerUnit: true. Otherwise a building is one row with its units nested under units.
Can I use Zillow Scraper with the Apify API, Python, n8n or Make?
Yes, see Integrations above. The Actor follows the standard Apify run → dataset flow, so every Apify integration works unchanged.
Can I run it through an MCP server or let an AI agent call it?
Yes. It is available through the Apify MCP server, the input fields are described for agents, and it is enabled for agentic payments.
What happens when Zillow changes its page layout?
The Actor is tested automatically every day against the default input. If a layout change breaks a field, the run reports a parse error row instead of empty data, and the fix is usually out within a day. Please report anything odd in the Issues tab.
Your feedback
Something missing, a field you need, a city that misbehaves? Open an issue on the Issues tab — every report gets an answer, and most fixes ship within a day. If the Actor saves you time, a review helps other buyers find it.
You might also like
| Actor | What it does |
|---|---|
| Website Contact Scraper | E-mails, phones and social profiles from any list of websites — enrich the brokerages you found here |
| Email & Phone Verifier | Check that the contacts you collected are real before the mail merge |
| US Business Filings | New business registrations by state — landlords, LLCs and property companies as they appear |
| Airbnb Scraper | Short-term-rental listings, prices and reviews for the same neighborhoods |
| Google Maps Reviews Scraper | Reviews of property managers, brokerages and contractors |