Zillow Property Details Scraper $3/1K | Prices, Photos & Facts avatar

Zillow Property Details Scraper $3/1K | Prices, Photos & Facts

Pricing

from $3.00 / 1,000 property scrapeds

Go to Apify Store
Zillow Property Details Scraper $3/1K | Prices, Photos & Facts

Zillow Property Details Scraper $3/1K | Prices, Photos & Facts

Collect supported Zillow property details with returned prices, attributes and available Zestimate fields. Bulk export: JSON, CSV, Excel and API. PPE: $3/1K property results; start fee extra.

Pricing

from $3.00 / 1,000 property scrapeds

Rating

0.0

(0)

Developer

Apivault Labs

Apivault Labs

Maintained by Community

Actor stats

1

Bookmarked

7

Total users

1

Monthly active users

16 days ago

Last modified

Security

Limited permissions

Share

Zillow Property Scraper — Details & Zestimates

Paste individual Zillow property links and export available listing details as JSON, CSV or Excel. Each useful row includes the requested ZPID, numeric companions, collection time and missing-field information. No Zillow login or external API key is required; Apify API/MCP calls require your Apify token.

Use this Zillow property data extractor when you already have individual property links and need a structured, bounded export. It can support a comparison worksheet, an existing listing watchlist or data preparation for a CRM. It does not discover properties by area, verify ownership or make an investment recommendation.

WorkflowUseful fieldsLimitation to keep in the export
Enrich a known property shortlistzpid, address, price and numeric companionsLinks must be individual homedetails pages
Compare selected home characteristicsbedroomsValue, bathroomsValue, sqftValue, yearBuiltValueNull is unknown; units and selected fields matter
Review asking-price and valuation contextprice, priceValue, zestimate, zestimateValue, statusDisplayed price and automated estimate are different observations
Prepare a property spreadsheetOriginal strings, normalized values and source metadataCollection time is not a verified listing-update date
Continue a capped listSUMMARY.nextInput and remainingCountContinuation processes unattempted links, not a city-search page

The portfolio's two Zillow property-link Actors expose closely related contracts. Use the Actor ID and integration package named on this page; do not assume they provide different geographic coverage or that this is a city-search product.

First run

Paste a /homedetails/.../123456_zpid/ link into Property links, set Maximum useful properties, then click Start. Open Properties for the rows and Summary for coverage. The default result cap is 5 across Console, REST and MCP. For one link, the maximum result fee is $0.003, plus the $0.00005 start event.

This actor enriches links you already have. It does not search cities, ZIP codes, addresses or map areas. Search URLs are rejected. Output order follows completion; join batches by zpid.

Copyable examples

One property

{
"propertyUrls": [
"https://www.zillow.com/homedetails/2026-Society-Dr-Holiday-FL-34691/46428193_zpid/"
],
"maxResults": 1
}

Two properties

{
"propertyUrls": [
"https://www.zillow.com/homedetails/2026-Society-Dr-Holiday-FL-34691/46428193_zpid/",
"https://www.zillow.com/homedetails/17199-Park-Ave-Sonoma-CA-95476/15800416_zpid/"
],
"maxResults": 2,
"maxConcurrency": 2
}

Select only comparison fields

{
"propertyUrls": [
"https://www.zillow.com/homedetails/2026-Society-Dr-Holiday-FL-34691/46428193_zpid/"
],
"maxResults": 1,
"extractAddress": true,
"extractPrice": false,
"extractBedrooms": true,
"extractBathrooms": true,
"extractSqft": true,
"extractYearBuilt": false,
"extractPropertyType": false,
"extractDescription": false,
"extractZestimate": true,
"extractLotSize": false,
"extractPricePerSqft": false,
"extractHOA": false,
"extractAgent": false,
"extractBrokerage": false,
"extractImage": false,
"extractStatus": true
}
{
"propertyUrls": [
"https://www.zillow.com/homedetails/2026-Society-Dr-Holiday-FL-34691/46428193_zpid/",
"https://www.zillow.com/homedetails/2026-Society-Dr-Holiday-FL-34691/46428193_zpid/?utm_source=example"
],
"maxResults": 1
}

Bound the first batch

{
"propertyUrls": [
"https://www.zillow.com/homedetails/2026-Society-Dr-Holiday-FL-34691/46428193_zpid/",
"https://www.zillow.com/homedetails/17199-Park-Ave-Sonoma-CA-95476/15800416_zpid/"
],
"maxResults": 1,
"maxConcurrency": 1
}

Input reference

InputDefaultMeaning
propertyUrlsRequired1–1000 individual HTTP(S) Zillow links. Exact zillow.com/www.zillow.com hosts only; numeric _zpid required. Query/fragment stripped; duplicates merged by ZPID.
maxResults51–1000 useful output rows. A cap is a maximum, not a promise of this many matches.
maxConcurrency31–10 in-flight requests. Use 1 for strict sequential collection.
timeout9030–300 seconds per property for submission and polling; network timeout may slightly extend this.
extract…trueIndividual field switches below. Disabled fields are omitted; enabled but unavailable fields are null. At least one must be enabled.
SwitchOutput
extractAddressaddress
extractPriceprice
extractBedroomsbedrooms
extractBathroomsbathrooms
extractSqftsqft
extractYearBuiltyearBuilt
extractPropertyTypepropertyType
extractDescriptiondescription
extractZestimatezestimate
extractLotSizelotSize
extractPricePerSqftpricePerSqft
extractHOAhoaFee
extractAgentagent
extractBrokeragebrokerage
extractImageimage
extractStatusstatus

Output and data quality

Raw listing text is retained in the selected fields. priceValue, zestimateValue, bedroomsValue, bathroomsValue, sqftValue, yearBuiltValue, pricePerSqftValue and hoaFeeValue are numbers or null. They appear only when their raw field is enabled. Ambiguous ranges, unsupported units and unparseable values remain null; unknown is never converted to zero. Studio bedrooms may be zero. hoaFeeValue accepts monthly or unqualified fees, not annual/quarterly fees; check raw hoaFee before comparisons. priceValue follows the displayed amount: depending on listing status it may be an asking, rent or other displayed price. It is not guaranteed to be the last sale price. currency is USD; sqftValue is square feet.

availableFields, missingFields and dataCompletenessPct refer to the selected raw fields; 100% does not independently verify accuracy. A paid row must have a nonempty address and at least two parseable core numeric facts, plus at least one available requested field. No empty placeholder rows are exported.

collectedAt is the time this actor received and validated a response, not the listing's update date. sourceUpdatedAt is null and freshnessVerified is false: source caching and update latency cannot be independently verified. sourceMode is property_page_extraction; ZPID is derived from the requested URL. Prices, statuses and valuations can change. Agent, brokerage, description, HOA, price and photos may be unavailable, especially off-market. image is the first acceptable listing image when supplied.

Summary and errors

The default Dataset contains only useful properties. KVS SUMMARY reports delivered, attempted, invalid and duplicate counts, status, budget stop, remainingCount and nextInput. Copy nextInput into a new run to collect unprocessed links; this does not retry recorded failures or retain snapshots. Rerunning the original input collects and charges useful results again.

KVS ERRORS contains safe codes and the canonical URL/ZPID for failed valid links. Invalid links are identified by input index, without echoing credentials or arbitrary hosts. Codes include INVALID_PROPERTY_URL, SOURCE_ACCESS_DENIED, SOURCE_RATE_LIMITED, SOURCE_TIMEOUT, SOURCE_EMPTY, SOURCE_EXTRACTION_FAILED, SOURCE_RESPONSE_INVALID, INSUFFICIENT_PROPERTY_DATA and REQUESTED_FIELDS_UNAVAILABLE.

SUMMARY.status=PARTIAL means useful rows exist alongside failures or a budget stop; the Apify run can be SUCCEEDED. With zero useful rows caused by source/input failures, the run is FAILED. BUDGET_LIMIT means no row fits the event budget. Read SUMMARY and ERRORS even for a green run. A confirmed terminal extraction failure is retried once within the same per-property allowance. Ambiguous submit failures and timeouts are not automatically resubmitted. A missing/blocked page cannot reliably be distinguished from an empty extraction; the actor reports it as a failure. A capped successful batch may still have remaining links.

REST API

Send the input JSON to POST https://api.apify.com/v2/acts/apivault_labs~zillow-property-scraper/runs?build=latest&memory=256&timeout=600&maxTotalChargeUsd=0.05 with Authorization: Bearer YOUR_APIFY_TOKEN and Content-Type: application/json. Keep credentials in your client configuration.

Save the returned run id, defaultDatasetId and defaultKeyValueStoreId. Poll GET /v2/actor-runs/{id} until terminal. Then retrieve GET /v2/datasets/{defaultDatasetId}/items?clean=true and GET /v2/key-value-stores/{defaultKeyValueStoreId}/records/SUMMARY (also ERRORS). CSV export: /items?format=csv&clean=true. A still-running call is not a result; do not start a duplicate run while waiting.

MCP and AI agents

Use the hosted MCP endpoint https://mcp.apify.com/?actors=apivault_labs/zillow-property-scraper with your Apify token as a Bearer authorization header. Discover with tools/list; the actor tool is apivault_labs--zillow-property-scraper. Its input schema is the same Console contract. Run with the example below; waitSecs belongs to MCP, not the actor input.

{
"name": "apivault_labs--zillow-property-scraper",
"arguments": {
"propertyUrls": [
"https://www.zillow.com/homedetails/2026-Society-Dr-Holiday-FL-34691/46428193_zpid/"
],
"maxResults": 1,
"waitSecs": 45
}
}

If the call returns RUNNING, use get-actor-run for the returned runId until terminal. Read get-dataset-items with datasetId=defaultDatasetId, then get-key-value-store-record with keyValueStoreId=defaultKeyValueStoreId, recordKey=SUMMARY and ERRORS. The hosted result is run metadata, not a guarantee of complete property fields. MCP authentication is not a Zillow login. Configure spending limits in your client or use the capped REST call when a per-run monetary ceiling is required.

Agent rules: use actual URLs; select only supported switches; interpret null as unknown; check summary/errors; identify rows by zpid; never describe collectedAt as a listing update time or Zestimate as a verified price. Do not invent missing fields, live freshness, agent contacts, history, geographic search or pagination.

Pricing

Free $3 per 1,000 primary result events; paid plans $3 per 1,000 primary result events. Separately paid platform resources are active. Existing start/add-on events and result eligibility rules below still apply. Rates verified on 20 October 2026.

Current rate: $0.003 per useful property ($3/1,000) plus $0.00005 per run start at 256 MB. Error/invalid/duplicate entries do not add property events; failed runs can still incur the start fee. The SDK caps paid Dataset rows against the run event budget; in-flight source work can still have occurred. maxTotalChargeUsd is an event-charge cap, not a future platform-usage cap.

Separately paid compute/proxy/storage usage is active, verified on 20 October 2026. Confirm the effective pricing in the Store before a large run. No external source account or subscription is required from the caller.

Zillow and Zestimate are third-party names; this actor is not affiliated with Zillow. Zestimate is an automated estimate. Field availability and source access can change.

Build a useful property comparison worksheet

Start with one known property and review its returned address and ZPID before increasing the batch. Keep the original selected field and its numeric companion together: a price string provides context that a bare number can lose. Join completed results by zpid rather than input order, since concurrent requests can finish in another order.

For an existing watchlist, keep a dated export per run in your own destination. Compare the same property and selected fields over time. This Actor does not maintain a historical price ledger, subscribe to listing changes or return a verified transaction history. Rerunning the same link can create another useful paid result; it is not a free cached-history lookup.

A one-property numeric comparison sample

{
"propertyUrls": [
"https://www.zillow.com/homedetails/2026-Society-Dr-Holiday-FL-34691/46428193_zpid/"
],
"maxResults": 1,
"maxConcurrency": 1,
"extractAgent": false,
"extractBrokerage": false,
"extractImage": false,
"timeout": 90
}

This keeps standard comparison fields while omitting three optional groups. Other field switches retain their defaults; this is not an exclusive field allow-list. Optional missing data remains null, and a useful result still needs the contract’s identity and core-data checks.

Keep listing context without a valuation estimate

{
"propertyUrls": [
"https://www.zillow.com/homedetails/2026-Society-Dr-Holiday-FL-34691/46428193_zpid/"
],
"maxResults": 1,
"maxConcurrency": 1,
"extractZestimate": false,
"extractDescription": false,
"extractAgent": false,
"extractBrokerage": false
}

Use when your worksheet does not need an automated valuation or long description. Disabling extractZestimate omits both zestimate and its numeric companion. It does not turn the observed listing price into a verified sale price.

Bound request concurrency for a small enrichment job

{
"propertyUrls": [
"https://www.zillow.com/homedetails/2026-Society-Dr-Holiday-FL-34691/46428193_zpid/"
],
"maxResults": 1,
"maxConcurrency": 1,
"timeout": 60
}

The per-property allowance is bounded; a network operation can slightly extend it. Use the platform timeout and spending controls in the run client as well. Raising timeout does not restore a blocked source or guarantee an optional field.

Interpret property fields before comparing them

An available address and core numeric facts make a row useful, but do not independently confirm that every observation is correct or current. dataCompletenessPct measures selected raw fields, not source freshness or appraisal quality. Choosing fewer fields can raise that percentage without improving the underlying source. Record which switches were used when comparing completeness across exports.

Keep monthly rent, an asking price, a displayed off-market value and Zestimate separate. A numeric priceValue does not establish which economic event occurred. Read status and the original amount string. Zestimate is an automated estimate; neither it nor a price-per-square-foot comparison is a guaranteed market value, sale price or expected investment return.

Unavailable price, HOA, agent, image and brokerage fields are not proof that the property has none. Zero bedrooms can legitimately describe a studio; a missing bedroom value must remain null. HOA numeric parsing does not normalize annual or quarterly fees into monthly amounts. Preserve the original fee text and check its period before using it in a worksheet. The Actor does not calculate a complete operating budget.

Source update time is unknown in this contract: sourceUpdatedAt stays null and freshnessVerified stays false. collectedAt records when a response was received and validated. A new run timestamp is not evidence that the original listing has changed. Keep these caveats if an AI agent summarizes the dataset or a dashboard labels an observation as recent.

Continue a list without confusing it with source pagination

maxResults caps useful delivered rows; it does not promise that every input is a currently accessible listing. Check attempted, delivered, invalid, duplicate and remaining counts. SUMMARY.nextInput is a ready input for a new run containing unprocessed links. It does not automatically retry failed links, collect earlier snapshots or discover the next page of a geographic search.

Before rerunning, review ERRORS and FAILED_PROPERTIES. An unavailable source should remain an explicit failure. Do not interpret it as zero bedrooms, a zero-value property or a completed empty search. A run with useful earlier rows can still be partial. For scheduled automation, save the summary with the export so downstream users can distinguish a deliberate cap from a collection error.

Zillow property data questions

Can I search by city, ZIP code or an address string? This contract accepts individual Zillow homedetails URLs with numeric ZPIDs. It does not implement area discovery or map pagination. Gather the authorized links for your own shortlist before calling the Actor.

Does it return owner emails or verified agent contacts? The optional agent and brokerage fields are source-provided listing context. The Actor does not promise owner lookup, mailbox verification or contact completeness. A missing contact-related field should not be replaced with a guess.

Do field switches reduce the per-property rate? No. They select output fields; the current primary result price remains $0.003 per useful delivered property on every saved plan tier, plus startup and separately paid usage. Two useful results at the standard memory size create $0.00605 in event fees before usage. An invalid or duplicate input is not another property-result event, but work and startup can still incur cost.

Are photos downloaded and licensed for reuse? The selected image field is an available listing-image URL, not a downloadable archive, ownership evidence or permission to reuse photography. It can be absent or later expire. This Actor does not reconstruct missing galleries.

Can I export to a CRM or n8n? Use JSON/CSV from the returned Dataset, the existing integration links below or your own HTTP workflow. Retain zpid, the selected field set and summary diagnostics. An integration does not add a source capability missing from this Actor or establish n8n Cloud verification.

What should a useful first-run report contain? The actual delivered property count, requested ZPIDs, source errors, selected missing fields and the event/usage costs shown for that run. A green status alone does not certify freshness, completeness, legal ownership or an investment opportunity. Review the data before using it in a downstream decision.

n8n and developer integrations

Use this Actor in your automation or application with the existing community integrations below. An Apify account and API token are required; Actor and platform charges follow the current pricing.

  • n8n community node: n8n-nodes-apivault-zillow. Install package name n8n-nodes-apivault-zillow in a self-hosted n8n instance that permits community packages.
  • Python client and examples: GitHub.
  • n8n source and usage: GitHub.

These are community packages. Publication on npm does not establish n8n verification or availability in n8n Cloud. Review the linked package README for supported inputs and setup.