Zillow Scraper — Sale, Rent & Sold avatar

Zillow Scraper — Sale, Rent & Sold

Pricing

from $0.91 / 1,000 search results

Go to Apify Store
Zillow Scraper — Sale, Rent & Sold

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

Matvey

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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 typeWhat you getTypical use
For saleActive listings with price, Zestimate, days on Zillow, FSBO / foreclosure / auction / new-construction flags, listing brokerageInvestor deal flow, buyer alerts, market reports, agent lead lists
For rentHouses, condos and whole apartment buildings with every unit, rent range, availability and pet policyRent comps, relocation tools, property-management prospecting
Recently soldSold price and sold date, Zestimate at sale, beds, baths, sqftComps, 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):

FieldExampleNotes
zpid, url331627751, https://www.zillow.com/homedetails/…/331627751_zpid/Zillow's id and the listing page
listingType, status, statusTextforSale, FOR_SALE, ActiveAlso PENDING, FOR_RENT, SOLD
price, pricePerSqft279000, 162Monthly rent for rentals, sale price for sold homes
soldPrice, soldDate550000, 2026-09-11Sold homes; see the note on non-disclosure states below
address, street, city, state, zip15000 Upland Willow Rd, Austin, TX 78724Split for filtering and mail merge
latitude, longitude30.262829, -97.57543For maps and radius filters
beds, baths, sqft, lotSizeSqft3, 2, 1725, 5663Lot always in square feet
homeTypehousehouse, condo, townhouse, multiFamily, apartment, lot, manufactured
zestimate, rentZestimate, taxAssessedValue281400, 1795, 247000Zillow's estimates and the assessor's value
daysOnZillow16Days since listed (days since sold for sold homes)
isFsbo, isAgentListed, isNewConstruction, isForeclosure, isAuction, isComingSoon, isPending, isOpenHousefalseListing flags investors filter on
brokerNameCompass RE Texas, LLCListing brokerage
imageUrlhttps://photos.zillowstatic.com/fp/…Cover photo
searchLocationAustin, TXWhich input the row came from
summary15000 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):

FieldExample
descriptionThe full listing text
yearBuilt, propertySubType, parcelNumber, county2020, Single Family Residence, …
hoaFee35 (monthly)
agentName, agentPhone, agentEmail, agentLicense, brokerName, brokerPhoneAndrew Allen, (512) 346-3550, … — as published on the listing
mlsId, mlsName, listingUpdated8668201, 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, photoCount19 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, lotFeaturesFacts and features
factsEverything else Zillow lists under Facts & features, as a key–value object
zestimateLow, zestimateHigh, propertyTaxRate, openHouses, virtualTourUrlWhen 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:

EventPriceWhat it is
Home from search$1.30 per 1,000One home or apartment building returned by a search
Full property details$2.50 per 1,000The 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

  1. Pick the listing type — for sale, for rent or recently sold.
  2. 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.
  3. 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.
  4. 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.
  5. Set Maximum results — this is your cost cap.
  6. Start. Rows appear in the dataset as they are found; download them as JSON, CSV, Excel or HTML, or read them through the API.
Zillow Scraper input form: listing type, locations, Zillow search URLs, property URLs, filters and maximum results

⬇️ 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

FieldTypeWhat it does
listingTypeforSale · forRent · soldWhat to search for
locationslistCities, ZIP codes, neighborhoods, counties, states — one per line
searchUrlslistZillow search pages copied from the browser; their filters are kept and yours are added on top
propertyUrlslistProperty URLs, apartment-building URLs, bare ZPIDs or street addresses; each returns a fully detailed row
includeDetailsbooleanOpen every search result and add the full page (one Full property details event each)
maxItemsnumberHard cap on rows for the run; 0 = no cap
bypassResultCapbooleanSplit the map when Zillow caps a search at 820 (on by default)
sortchoiceRelevance, newest, price low→high / high→low, beds, baths, sqft, lot, year built, days on Zillow
priceMin, priceMaxnumberUSD; monthly rent for rentals
bedsMin, bedsMax, bathsMinnumberbathsMin accepts halves
homeTypesmulti-selectHouses, condos, townhomes, multi-family, apartments, lots, manufactured
sqftMin, sqftMax, lotSizeMin, lotSizeMax, yearBuiltMin, yearBuiltMaxnumberLot in square feet
daysOnZillowchoiceListed (or sold) within 1 day … 36 months
sellerTypesmulti-selectAgent listed, owner posted (FSBO), new construction, foreclosures, auctions, pre-foreclosures, foreclosed, coming soon
includePendingbooleanAlso return pending / under-contract homes
keywordstextWords the listing must contain (pool, ADU, fixer)
featuresmulti-selectPool, A/C, garage, waterfront, single story, basement, view, open house; pets allowed, furnished, in-unit laundry for rentals
hoaMax, parkingSpotsMinnumberHOA cap (0 = no HOA), minimum parking
oneRowPerUnitbooleanRentals: one row per apartment unit
monitoringStoreNametextName a watch; later runs return only new or changed homes
includeRawDatabooleanAdd Zillow's raw JSON under raw
maxConcurrency, requestTimeoutSecs, proxyConfigurationadvancedDefaults 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."
}
Zillow Scraper output table: address, listing type, price, sold date, beds, baths, sqft, home type, Zestimate, days on Zillow, agent and phone

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

  • APIPOST 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 for SUCCEEDED, then read datasets/{id}/items?format=csv.
  • Python / JavaScriptapify-client: client.actor("lergassy/zillow-scraper").call(run_input={...}), then client.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.SUCCEEDED posts 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

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

ActorWhat it does
Website Contact ScraperE-mails, phones and social profiles from any list of websites — enrich the brokerages you found here
Email & Phone VerifierCheck that the contacts you collected are real before the mail merge
US Business FilingsNew business registrations by state — landlords, LLCs and property companies as they appear
Airbnb ScraperShort-term-rental listings, prices and reviews for the same neighborhoods
Google Maps Reviews ScraperReviews of property managers, brokerages and contractors