Zillow ZPID Scraper β Cheap Bulk Property Details & Photos
Pricing
from $2.50 / 1,000 properties
Zillow ZPID Scraper β Cheap Bulk Property Details & Photos
Zillow property details by ZPID or property link, in bulk and cheap: price, Zestimate, beds, baths, price and tax history, schools, listing agent and phone, all photos. Export to CSV, JSON or Excel.
Pricing
from $2.50 / 1,000 properties
Rating
0.0
(0)
Developer
Andrey Afanasenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
Paste a list of Zillow ZPIDs or property links β ten or ten thousand β and get one row of property details for each: price, Zestimate, beds and baths, price and tax history, schools, the listing agent's name and phone, and every photo.
Built for bulk: one lookup per property, no search pages in between, and a price per property that drops as your Apify plan grows. The columns are the same as in Zillow Details Scraper, so a pipeline built for one works with the other.
π― What it does
You give the Actor ZPIDs (29460381) or property links (https://www.zillow.com/homedetails/β¦/29460381_zpid/), one per row. For each property it returns one flat row:
| Group | What you get |
|---|---|
| Listing | Status, price, price change, days on Zillow, listing type (agent, owner/FSBO, new construction, open house), views and saves |
| Home | Address, county, neighborhood, coordinates, type, beds, baths, living area, lot, year built, stories, heating, cooling, appliances, flooring, pool, garage, parking, basement |
| Money | Zestimate, rent Zestimate, price per sq ft, HOA fee, annual tax, last tax paid and assessed value, last sale date and price, full price history |
| Contact | Listing agent name and phone (the owner's phone on FSBO listings), agent profile link, co-agent, brokerage and its phone |
| Media & area | Main photo plus the full photo gallery, nearby schools with ratings |
Repeated properties are looked up once. Entries that are not a ZPID or a property link are skipped and listed in the run log.
π¦ Output sample
One real row, trimmed for length (photos holds all 24 photos of this listing):
{"zpid": "29460381","hdpUrl": "https://www.zillow.com/homedetails/1107-Woodland-Ave-Austin-TX-78704/29460381_zpid/","price": 1990000,"status": "FOR_SALE","homeType": "SINGLE_FAMILY","listingType": "FSBA","streetAddress": "1107 Woodland Ave","city": "Austin","state": "TX","zipcode": "78704","county": "Travis County","agentName": "Wade Giles","cellPhone": "512-808-6756","agentProfileUrl": "https://www.zillow.com/profile/WadeATX/","brokerName": "Compass RE Texas, LLC","pricePerSqft": 689,"propertyTax": 35175,"bedrooms": 3,"bathrooms": 3,"livingArea": 2887,"lotSize": "7,143 sqft","yearBuilt": 2018,"hasPool": true,"daysOnZillow": "7 days","lastTaxAssessedValue": 1872660,"priceHistory": [{ "date": "2026-10-15", "price": 1990000, "event": "Listed for sale", "pricePerSquareFoot": 689 }],"schools": [{ "name": "Travis Heights Elementary School", "rating": 6, "grades": "PK-5", "distance": 0.3 }],"mainPhoto": "https://photos.zillowstatic.com/fp/50f35bf9c59e4fa28231ccddb8f0f46a-p_f.jpg","photos": ["https://photos.zillowstatic.com/fp/50f35bf9c59e4fa28231ccddb8f0f46a-cc_ft_1536.jpg","https://photos.zillowstatic.com/fp/4ec5ff9fa0d3e113949108160d6dc9c8-cc_ft_1536.jpg"]}
The dataset has two views: Overview (photo, address, price, agent, phone, beds, baths, area) and Full details (all 70 columns).
β‘ Quick start
- Paste your ZPIDs or Zillow property links into ZPIDs or property links, one per row. A comma-separated list in one row works too.
- Optionally set Max properties per run to cap the spend.
- Click Start. Download the results as CSV, JSON or Excel.
Where to find a ZPID: it is the number just before _zpid in a property link. You can paste the whole link.
π§ When to use it
- You already have the list. ZPIDs from a CRM, an earlier export, a search you ran elsewhere β and you need fresh details for all of them.
- Re-checking a portfolio. Run the same list every week and compare price, status and days on Zillow.
- Photos in bulk. Every listing's gallery in the same row, no extra step.
- Owner (FSBO) phone numbers. On owner listings the phone in
cellPhoneis the owner's.
To find properties by ZIP code, by city or by a Zillow search link, or to get the listing agent's e-mail, use Zillow Details Scraper instead.
π Input
| Field | What it does |
|---|---|
ZPIDs or property links (zpids) | One property per row: a ZPID or a property link. Leave empty for a 3-property test run. |
Max properties per run (maxProperties) | Look up at most this many properties, in list order. 0 = the whole list. |
π° Pricing
This Actor uses pay per event. One event, Property, fires once per property that lands in your dataset.
| Your Apify plan | Price per property | Per 1,000 properties |
|---|---|---|
| Free | $0.004 | $4.00 |
| Bronze | $0.0035 | $3.50 |
| Silver | $0.003 | $3.00 |
| Gold and above | $0.0025 | $2.50 |
ZPIDs that are not found, entries that are not a ZPID, repeats, and properties that could not be loaded are never charged. A run that returns nothing costs nothing.
π Free vs paid plan
| Free plan | Paid plan | |
|---|---|---|
| Properties per run | 100 | Unlimited (or your own Max properties per run) |
| All columns and photos | β | β |
On the free plan, up to 25 of the ZPIDs over the limit are added to the dataset as rows with only zpid, hdpUrl and a notLookedUpReason note β so you can see what was left out. They are not charged.
π‘ Live status & storage records
While a run is going, the Live Status link on the run page shows progress, properties saved and spend so far. Three records are written to the run's key-value store:
| Record | What it holds |
|---|---|
RUN_SUMMARY | How the run ended; properties requested, saved, not found and not loaded; invalid entries; wall-clock seconds |
USER_MESSAGE | A plain-language note when a run needs explaining β nothing found, nothing valid in the input, a demo run |
FREE_LIMITS_APPLIED | Which free-plan limits changed this run's output |
π€ Programmatic / API use
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('afanasenko/zillow-zpid-scraper').call({zpids: ['29460381', 'https://www.zillow.com/homedetails/x/29120239_zpid/'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0].price, items[0].cellPhone, items[0].photos.length);
β FAQ
Is it legal to scrape this data?
The Actor reads property pages that Zillow publishes openly, with no login. How you use the data β and especially the phone numbers β is your responsibility; outreach in the US is governed by the TCPA, CAN-SPAM and state law.
Is there an agent e-mail column?
No. E-mail needs a second lookup per property, which is what keeps this Actor cheap. Zillow Details Scraper returns it, with the same other columns.
Why is propertyTax empty on some rows?
Zillow does not publish an annual tax figure for every listing β it is missing most often on rentals. lastTaxPaid and lastTaxAssessedValue from the tax history are often still there.
Why did a ZPID return nothing?
The listing was removed, merged into another property page, or the number lost a digit when copied. Not-found ZPIDs are listed in the run log and never charged.
How many properties can one run handle?
Thousands. Lookups run in parallel; a 1,000-property run usually takes about five minutes.
Can I schedule this?
Yes. Save your list as an Apify Task and schedule it daily or weekly.
π Related actors
| Actor | What it does |
|---|---|
| Zillow Details Scraper | Property listings by ZIP, ZPID or URL, with the listing agent's e-mail |
| Zillow Search by ZIP | Focused ZIP-code property search |
| Zillow Search by URL | Paste a Zillow search URL and get the listings behind it |
| Zillow Agent Leads | Real-estate agents by area or name, with e-mail, phone and sales history |
| Zillow MCP Server | The same Zillow property data as tools for an AI agent |
π Support & feedback
Something missing, wrong, or slow? Open an issue on the Issues tab of this Actor. Every one is read, and a short note tends to ship a fix within a few days.
βοΈ Disclaimer
This Actor collects publicly available information from Zillow property pages. It is not affiliated with, endorsed by, or connected to Zillow Group, Inc. Use the data in line with applicable law and with the terms of the sites involved.