Zillow Details Scraper (Cheap) avatar

Zillow Details Scraper (Cheap)

Pricing

from $3.99 / 1,000 results

Go to Apify Store
Zillow Details Scraper (Cheap)

Zillow Details Scraper (Cheap)

Zillow property details scraper that extracts pricing, features, tax records, and neighborhood data from any listing using URLs, ZPIDs, or addresses, so real estate teams can build datasets without manual lookups.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Data API

Data API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Zillow Property Details Scraper

Checking one Zillow home at a time is fine until you have fifty addresses to look at and a deadline. This scraper takes the grind out of it: hand it Zillow detail-page links, ZPIDs, or plain street addresses, and it returns each home as a clean row with price, Zestimate, beds and baths, lot size, tax figures, and the schools nearby. Paste a single address or a list of thousands, anywhere across the US. You only pay for rows that come back.

Zillow Property Details Scraper

What you get

Each lookup turns into one tidy row with a steady shape, so your columns line up whether you open the results in a sheet or load them into a database. Missing values come back as null rather than disappearing. The data falls into a few groups:

  • Identity and locationpropertyId, listingUrl, addressLine, cityName, stateCode, postalCode, geoLat, geoLng
  • Price and valuationcurrentPrice, estimatedValue, estimatedRent, assessedValue, yearlyTax
  • Home factsbedroomCount, bathroomCount, interiorArea, lotArea, constructionYear, propertyType, listingStatus, daysListed
  • History and extraspriceTimeline, taxTimeline, nearbySchools, photoLinks, agentInfo
  • Run metadatacollectedAt, lookupSource, inputQuery, errorNote

Quick start

  1. Click Try for free and open the input form.
  2. Add what you want to look up: paste Zillow links into Listing URLs, numbers into Zillow Property IDs (ZPID), or addresses into Street Addresses. Mix all three if you like.
  3. Set a Maximum homes per run cap and adjust the timeouts if you are running a big batch.
  4. Press Start, then download the results as JSON, CSV, Excel, or XML once the run finishes.

How it works

Use cases

  • Market research — pull prices, Zestimates, and days-on-market across a neighborhood and compare homes side by side
  • Investment screening — line up tax assessments, price history, and rent estimates to weigh potential returns without opening every listing
  • Agent prospecting — look up homes in bulk to build prospect lists with accurate pricing and listing context
  • Portfolio tracking — re-run on a schedule to watch price moves, status changes, and fresh Zestimates on homes you follow
  • Housing studies — gather structured Zillow data across ZIP codes for affordability research or data journalism
  • CRM enrichment — feed a column of addresses and get back geocoded, priced records to attach to existing records

Input

FieldTypeRequiredDescription
listingUrlsarray of stringsOne of listingUrls, propertyIds, or addressQueriesFull Zillow detail-page links. The scraper reads the ZPID straight out of each link.
propertyIdsarray of stringsOne of listingUrls, propertyIds, or addressQueriesRaw numeric ZPIDs. The quickest route, since it skips link parsing and address matching.
addressQueriesarray of stringsOne of listingUrls, propertyIds, or addressQueriesUS street addresses in "street, city, state, ZIP" form. Each one is matched on Zillow.
resultsLimitintegerNoCap on homes processed per run. Default 50; use 0 for no cap.
runTimeoutSecondsintegerNoLongest the whole run may take before it wraps up. Anything collected so far is kept. Default 360.
requestTimeoutSecondsintegerNoHow long a single home lookup may take before the scraper moves on. Default 45.

Example input

{
"listingUrls": [
"https://www.zillow.com/homedetails/10791-Gooseberry-Ct-Truckee-CA-96161/19435371_zpid/",
"https://www.zillow.com/homedetails/512-Pine-St-Boulder-CO-80302/13145520_zpid/"
],
"propertyIds": ["13145520", "29023456"],
"addressQueries": [
"742 Evergreen Terrace, Springfield, IL 62704",
"1600 Pennsylvania Ave, Washington, DC 20500"
],
"resultsLimit": 50
}

Output

Every lookup is stored as its own item in the dataset, and you can export the whole set as JSON, CSV, XML, or Excel. The fields below appear on each row; values Zillow does not have come back as null.

Example output

{
"propertyId": "19435371",
"listingUrl": "https://www.zillow.com/homedetails/10791-Gooseberry-Ct-Truckee-CA-96161/19435371_zpid/",
"addressLine": "10791 Gooseberry Ct",
"cityName": "Truckee",
"stateCode": "CA",
"postalCode": "96161",
"currentPrice": 1250000,
"estimatedValue": 1230000,
"estimatedRent": 5200,
"bedroomCount": 4,
"bathroomCount": 3.5,
"interiorArea": 2800,
"lotArea": 10454,
"constructionYear": 2005,
"propertyType": "SINGLE_FAMILY",
"listingStatus": "FOR_SALE",
"daysListed": 14,
"assessedValue": 980000,
"yearlyTax": 12500,
"geoLat": 39.3277,
"geoLng": -120.2137,
"photoLinks": ["https://photos.zillowstatic.com/fp/example-1.jpg"],
"agentInfo": {"name": "Jane Smith", "phone": "530-555-0100", "brokerage": "Sierra Realty"},
"priceTimeline": [{"date": "2023-06-15", "price": 1200000, "event": "Listed"}],
"taxTimeline": [{"year": 2023, "taxPaid": 12500, "assessedValue": 980000}],
"nearbySchools": [{"name": "Truckee Elementary", "rating": 7, "distance": 1.2, "grades": "K-5"}],
"collectedAt": "2026-06-29T12:00:00.000000+00:00",
"lookupSource": "propertyIds",
"inputQuery": "19435371",
"errorNote": null
}

Output fields

FieldTypeDescription
propertyIdstringZillow's numeric ZPID for the home
listingUrlstringWeb address of the home's Zillow page
addressLinestringHouse number and street
cityNamestringTown or city
stateCodestringTwo-letter US state code
postalCodestringFive-digit ZIP code
currentPricenumberAsking price or latest Zestimate in USD
estimatedValuenumberZillow's computed home value (Zestimate) in USD
estimatedRentnumberProjected monthly rent in USD
bedroomCountintegerNumber of bedrooms
bathroomCountnumberBathroom count, which may carry a half value such as 2.5
interiorAreanumberFinished living space in square feet
lotAreanumberParcel size in square feet
constructionYearintegerYear the home was first built
propertyTypestringSINGLE_FAMILY, CONDO, TOWNHOUSE, MULTI_FAMILY, and similar
listingStatusstringFOR_SALE, SOLD, PENDING, and similar
daysListedintegerDays the current listing has been live
assessedValuenumberLatest value the tax authority placed on the home
yearlyTaxnumberYearly property tax in USD
geoLatnumberLatitude coordinate
geoLngnumberLongitude coordinate
photoLinksarrayWeb addresses for listing photos
agentInfoobjectListing agent name, phone, and brokerage
priceTimelinearrayPast price moves and sale events
taxTimelinearrayYear-by-year tax assessment records
nearbySchoolsarrayNearby schools with ratings, distance, and grade ranges
collectedAtstringISO 8601 timestamp of when the row was pulled
lookupSourcestringWhich input lane produced the row: propertyIds, listingUrls, or addressQueries
inputQuerystringThe exact value you supplied; present on every row, including failures
errorNotestringShort reason a lookup did not succeed; null on a clean row

Tips for best results

  • Start with a handful. Run 10 inputs before a big batch so any URL-format or address-matching quirks show up early.
  • ZPIDs are the fastest path. When you already have ZPIDs, use propertyIds — it skips link parsing and address search, so those rows return quickest.
  • Spell out addresses fully. Include the ZIP. Partial addresses can match more than one home and may resolve to the wrong one.
  • Cap test runs with resultsLimit. Set it to 20–50 while you confirm the output fits your pipeline, then drop it to 0 for the full list.
  • Give large batches more time. Raise runTimeoutSeconds for hundreds of homes, and bump requestTimeoutSeconds toward 60 on slower connections so individual lookups are not cut short.
  • Failures still return a row. A bad link or unmatched address comes back with errorNote filled in and inputQuery echoing what you sent, so nothing silently drops.

How can I use Zillow property data?

How can I use the Zillow Property Details Scraper to research a local housing market? Paste a batch of addresses or ZPIDs for a target area and the scraper returns each home's price, Zestimate, bed and bath count, lot size, and days on market. Group the rows by ZIP or city to compare pricing, spot stale listings, and build a quick base layer for any Zillow market-research project.

How can I pull Zillow property data by address in bulk? Drop your addresses into addressQueries in "street, city, state, ZIP" form. The scraper looks each one up on Zillow, matches it to a ZPID, and returns the full record — so a plain column of addresses becomes a structured dataset with pricing, tax figures, and coordinates you can export to CSV or Excel.

How can I track Zillow price changes and tax history for a set of homes? Feed the same propertyIds or listingUrls on a schedule. Each run returns the current currentPrice and estimatedValue along with priceTimeline and taxTimeline, so you can watch how a home's price and assessments move over time without opening a single listing by hand.

How can I enrich a CRM with Zillow home data? Already have addresses from a CRM or spreadsheet? Set resultsLimit to 0 and send the whole list. Every entry returns one row with a geocoded address, price, home facts, and listing status, ready to push back into your records or a Google Sheet for the team to review.

Our actors are ethical and do not extract any private user data, such as email addresses or private contact information. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.

Support

Questions, feature requests, or a field you'd like added? Reach out at data.apify@proton.me and we'll get back to you.