Zillow Property Details Scraper | from $0.80/1K | CSV avatar

Zillow Property Details Scraper | from $0.80/1K | CSV

Pricing

from $0.80 / 1,000 paid plan: property with details

Go to Apify Store
Zillow Property Details Scraper | from $0.80/1K | CSV

Zillow Property Details Scraper | from $0.80/1K | CSV

Get Zillow property details from URLs, ZPIDs or full addresses: prices, Zestimate, photo URLs, histories and available listing contacts. Export CSV/JSON. Paid plans: $0.80/1K. Free: $2/1K, up to 25 properties per collection.

Pricing

from $0.80 / 1,000 paid plan: property with details

Rating

0.0

(0)

Developer

Hundevmode Labs

Hundevmode Labs

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

18 days ago

Last modified

Share

Zillow Property Details Scraper — Prices & History 📋

Turn Zillow property URLs, ZPIDs or full US addresses into detailed property records. Export prices, available Zestimate and rent estimates, descriptions, photo URLs, price and tax histories, property facts and listing contacts to CSV or JSON.

Start small: enter 89070667 under Property IDs (ZPIDs), set Maximum results per run to 5, then click Start. No additional setup or Zillow login is required.

💳 Pay per saved result

ResultPaid Apify plans / 1,000Free plan / 1,000
Property with available details$0.80$2.00

Property descriptions, photo URLs and available histories, facts, schools and listing contacts are included. Failed or unmatched property inputs do not create a paid result.

Your Apify account determines the rate automatically; input cannot select a cheaper plan. Apify's standard start event costs $0.00005 per GB of allocated memory, minimum one event. At the default 256 MB, each run costs one start event. Platform usage is included in PPE pricing; no additional dataset-item fee is configured. Errors and diagnostics are not paid results. Each continuation batch has its own start fee and budget.

Control your spending on Free and paid plans

Minimum permitted Max total charge: $0.00205, covering the start event and at least one result at the highest Free rate. This is a minimum budget setting, not a minimum bill: only the start and saved result events are charged. The same result rates apply to all paid Apify plans.

Set Max total charge in Apify run settings before starting. Through the API, use maxTotalChargeUsd. This is separate from maxResults: a large requested count does not override the spending limit. The Actor checks whether the remaining run budget permits another result and stops when it does not. Apify can also mark a run ABORTED when that limit is reached.

Free accounts use their available Apify credits at $2.00/1,000 detailed rows. A Free collection is capped at 25 properties. The allowance is shared across continuation batches and is retained by Resurrect. For the Details Actor the allowance is always 25 properties. Free runs also cap requests at 40, collection time at 180 seconds and compressed downloads at 5 MB; raising advanced settings cannot raise these caps. Paid accounts use the input limits. Independent fresh runs have independent allowances; this is not an account-wide monthly quota. Apify account usage limits apply to the entire account. Exhausting prepaid credits on a paid plan can allow additional paid usage when overage is enabled; set a run budget if you want a fixed maximum for this collection.

Saved dataset rows remain in storage, subject to Apify retention and account access. Continue only after the account permits runs again, using the latest PAGINATION.nextInput if available and a new run budget. Continuation does not replenish credits or start paid runs automatically. An immediate platform stop can interrupt checkpoint saving; use the latest available checkpoint and compare saved rows if no continuation was created.

What is this Actor for?

Use this Zillow Property Details Scraper when you already know which properties you want to enrich: a shortlist, a CRM export or a property-data pipeline. It fetches available property-page details without requiring a city search.

What you already haveInput to use
Zillow property-page linksZillow property URLs
Numeric Zillow property IDsProperty IDs (ZPIDs)
Complete street addressesFull US property addresses, including unit and ZIP

To find homes for sale, rentals or sold listings by city, ZIP code or search URL, use Zillow Scraper. This Actor is the focused option for an existing property list; it does not search city inventories.

How to get Zillow property details

  1. Paste property URLs, or enter ZPIDs or full addresses. You can combine methods.
  2. Set Maximum results per run. Start with a small batch to inspect the output.
  3. Click Start. Every successfully collected property is saved once, with the details available from Zillow.
  4. Open the results and download CSV, Excel or JSON. Check Collection issues for inputs that could not be matched or fetched.

Example: property IDs

{
"zpids": ["89070667"],
"maxResults": 5
}

Example: a Zillow property URL

{
"startUrls": [
{"url": "https://www.zillow.com/homedetails/89070667_zpid/"}
],
"maxResults": 5
}

Example: an exact address

{
"addresses": ["837 Washington Ave APT 3B, Bronx, NY 10451"],
"maxResults": 5
}

Include the street number, apartment if applicable, city, two-letter state and five-digit ZIP. Only an exact normalized address and unit match is accepted. Ambiguous or unmatched addresses are reported separately; another property is not substituted.

What property data can I export?

Each saved row represents one unique property. The dataset is flat for CSV exports, and missing values are null.

DataColumns
Identity and locationzpid, url, address, streetAddress, city, state, zipcode, latitude, longitude
Listing and valuationsstatus, price, currency, zestimate, rentZestimate, monthlyRent, pricePeriod
Property attributesbedrooms, bathrooms, livingArea, homeType, yearBuilt, lot size, daysOnZillow
Sale informationsoldDate, lastSoldPrice, mlsId, listingLastUpdated
Description and photosdescription, primaryImageUrl, photoCount, photosJson
Available histories and featurespriceHistoryJson, taxHistoryJson, factsJson, schoolsJson
Available listing contactsbrokerName, agentName, agentPhone, agentEmail, listingPhone
Collection informationinputAddress, detailStatus, source, scrapedAt

This excerpt comes from a private Apify cloud test. Field availability varies by property:

{
"zpid": "89070667",
"address": "837 Washington Avenue #3B, Bronx, NY 10451",
"soldDate": "2009-08-17",
"lastSoldPrice": 173000,
"photoCount": 13
}

Photo output contains URLs rather than downloaded image files. Histories, photos, facts and schools are encoded as JSON strings to keep each record in one CSV row. Listing-agent and brokerage contacts are not property-owner contacts. Emails, phone numbers, valuations and histories are returned only when available from the source.

Input options

FieldPurposeDefault
startUrlsProperty URLs containing a ZPID, as [{"url":"…"}]Empty
zpidsNumeric Zillow property IDsEmpty
addressesComplete US street addresses, including unit and ZIPEmpty
maxResultsMaximum unique properties saved in this run50 via API; 5 suggested in the form
resumeFromRunIdContinue the last finished batchUnset
propertyDatasetIdExisting Dataset containing property IDs or URLsUnset
datasetFieldIdentifier column: zpid or urlzpid
advancedRequest, time and traffic limitsOptional

Provide at least one property URL, ZPID or full address. Each manually entered input list accepts up to 100 entries; an input Dataset supports up to 100,000 rows. If you combine methods, the result limit is shared across all of them. Duplicate IDs and URLs are removed before fetching; resolving an address alias can require an extra request but never creates a duplicate result in the same run or continuation chain.

Continue a larger property list

After a batch, open Continue collection: next batch input (PAGINATION). If hasMore is true, copy the full nextInput into another run of this same Actor. The next dataset contains only newly collected properties. Keep all batch datasets to assemble the export.

Use the latest batch's continuation input. Keep property inputs unchanged; you can change maxResults and advanced limits. The previous run must be finished, belong to this Actor and your account, and retain its storage.

The result cap applies to each run. If you want 75 rows and the first batch saved 50, set the next batch's cap to 25. Collection can return fewer rows when inputs are duplicated, unavailable, unmatched or blocked. New runs are started by you, and a new run does not guarantee a different IP or that a Zillow block has ended.

Automatic collection and recovery

Connection recovery is included in the price and handled automatically. You do not need a Zillow login or any additional service. If a temporary access restriction cannot be recovered within the collection limits, the Actor saves its progress and provides continuation input. Availability is not guaranteed for every property or run.

Collect details from an existing Dataset

Paste an accessible Apify Dataset ID into Property list from Apify Dataset and choose the zpid or url column. Up to 100,000 source rows are supported. The property list is frozen before collection, so continuation uses the same unique property IDs even if rows are later appended to the source. Invalid or missing identifiers are reported separately. Only Zillow property URLs containing a ZPID are accepted in the url column.

{
"propertyDatasetId": "YOUR_DATASET_ID",
"datasetField": "zpid",
"maxResults": 100
}

Replace the example ID with your Dataset ID. The same result, request, time and budget limits apply. A source Dataset is an input list; it is not modified, and old rows are not copied into the output.

🔁 What to do after an error or early stop

OutcomeWhat to do next
Result, request, time or traffic limitOpen PAGINATION. If hasMore is true, copy the full nextInput into the next run's JSON input. Adjust the result cap or advanced limits as needed.
Access temporarily unavailableAutomatic recovery has already been attempted. Keep the saved dataset, wait, then continue with the full nextInput. Repeated access failures stop collection rather than retrying indefinitely.
Free collection allowance reachedSaved rows remain available. Continuation and Resurrect do not renew the allowance. After upgrading to a paid Apify plan, continue this same query with resumeFromRunId set to its latest run ID.
Budget reachedApify can mark the run ABORTED when its charge budget is reached. Keep the saved dataset and use the latest nextInput with a new run budget. Budgets are per run, not a shared total across the chain.
Invalid input or changed continuation queryCorrect the input. Do not repeat the same invalid run. Keep the original query when continuing, or start a fresh independent search with the corrected query.
hasMore is falseInspect the summary and issues. Missing source data or failed exact-address matching can remain; a completed request queue is not a guarantee of complete source coverage.
Run failed before a checkpoint was savedThere is no usable continuation. Start again from your original input and compare any saved rows; a fresh independent run cannot guarantee deduplication against the old dataset.

Use continuation from the latest finished run of this same Actor and account. Previously saved rows are not copied into the new dataset or charged again along that chain. Apify Resurrect restarts the same run with the same storage; resumeFromRunId creates a separate batch and dataset. Do not run both recovery methods at once. A Resurrect can create another standard start event; saved rows are not charged again. Request, time and traffic usage is restored from the latest checkpoint for the same run. A hard interruption can lose usage since that checkpoint, so the last few requests may not be included in restored counters.

Collection limits and pricing

Default collection limits are 80 requests, 600 seconds and 100 MB of compressed response traffic. Leave advanced settings unchanged for a first run. Request retries are bounded, and failed inputs are recorded in Collection issues rather than inserted into the property dataset.

A completed run can still contain unavailable or failed inputs. Review the coverage summary and collection issues alongside the result count. The Actor reports its progress rather than promising that every input can be fetched.

Private preview: PPE is configured for the two private test Actors. They have not been published in Apify Store. The result rates and standard start fee above are the configured policy; owner tests are separate from billing by an external customer.

Choose the right Zillow actor

Choose this actor when you already have property URLs, ZPIDs, full addresses or a property Dataset. Use Zillow Scraper to discover listings first, Zillow Agents Scraper to search the agent directory, or Zillow Market Data Scraper for regional monthly housing indexes.

Frequently asked questions

Where do I find a Zillow ZPID?

Look for the numeric ID before _zpid in a Zillow property URL. For https://www.zillow.com/homedetails/89070667_zpid/, the ZPID is 89070667.

Can I look up a property by address?

Yes. Enter the complete street address with the city, two-letter state, five-digit ZIP and unit when applicable. Only an exact match is saved.

Does every property include Zestimate, photos and price history?

No. Available source data is returned; missing fields are null. A Zestimate is a source estimate, not an appraisal produced by this Actor.

Can I collect agent emails or owner contacts?

Available listing contacts may be returned. Agent email coverage is not guaranteed, and listing agents are not property owners. This Actor does not provide an owner-contact database.

Can I choose the number of properties?

Yes. maxResults accepts 1–100,000 per run. Each manually entered input list accepts up to 100 entries; an input Dataset supports up to 100,000 rows, and request, time, budget and source limits can stop a batch earlier. Continue unfinished work using PAGINATION.nextInput.

Is this an official Zillow API?

No. This is an independent scraper of publicly accessible Zillow data, callable through the Apify API. Zillow does not sponsor or endorse it.