Zillow Detail Scraper — Agent Contacts & Zestimate avatar

Zillow Detail Scraper — Agent Contacts & Zestimate

Pricing

from $1.40 / 1,000 listing details

Go to Apify Store
Zillow Detail Scraper — Agent Contacts & Zestimate

Zillow Detail Scraper — Agent Contacts & Zestimate

Paste Zillow listing links and take the full record of each home: price, Zestimate, rent estimate, taxes, beds, baths, lot, year built, description, every photo, the RESO facts, and the listing agent's name, email and phone. Name a city instead and the listings are found first.

Pricing

from $1.40 / 1,000 listing details

Rating

0.0

(0)

Developer

The Netaji

The Netaji

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Zillow Detail Scraper

Paste Zillow listing links, get one row per home with everything Zillow holds on it — including the three things the page itself never shows anybody: the listing agent's email address and telephone number, and how many people have looked at the listing.

No Zillow account, no session cookie, no key of any kind. You pay per home read, and a link that no longer resolves is not billed.

Accepted input

zpid is the list of listings, one per line. Paste the links straight out of your browser; a bare property identifier works too, and the two forms can be mixed in one list. The same home given twice under two spellings is read once.

{
"zpid": [
"https://www.zillow.com/homedetails/2114-S-Trumbull-Ave-Chicago-IL-60623/2146999031_zpid/",
"https://www.zillow.com/homedetails/2146999031_zpid/",
"2077663766"
],
"maxItems": 0
}

The address half of a Zillow link is decorative — /homedetails/2146999031_zpid/ and /homedetails/any-slug-at-all/2146999031_zpid/ open the same house — so nothing here tries to match on an address, and a link you assembled from one is not a link to anything in particular.

Or name a city instead. Leave zpid empty and set region to the san-francisco-ca in https://www.zillow.com/san-francisco-ca/, or paste the search link itself. A bare state (ca) and a ZIP code (94103) are regions too. The listings are found first and then read, so one run gets you from a city name to full records:

{
"region": "san-francisco-ca",
"status": "for_sale",
"maxItems": 50
}

status is for_sale or sold. startPage splits a large city across several runs. Both are ignored when you paste listings, because a list is specific and a city is not. maxItems caps the run; 0 means no cap.

What a row holds

{
"zpid": "2146999031",
"price": 480000,
"zestimate": 468600,
"rent_zestimate": 1936,
"bedrooms": 3,
"bathrooms": 2,
"living_area": 1600,
"year_built": 1911,
"street_address": "2114 S Trumbull Ave",
"city": "Chicago",
"county": "Cook County",
"agent_name": "Luis Ortiz",
"agent_phone": "708-990-4079",
"broker_name": "RE/MAX Partners",
"mls_name": "MRED as distributed by MLS GRID",
"page_view_count": 197,
"favorite_count": 20,
"days_on_zillow": 23,
"photo_count": 61
}

Who is selling the home arrives as agent_name, agent_email, agent_phone, broker_name, broker_phone, mls_id, mls_name, listing_agreement and true_status. None of it is rendered on the Zillow page. agent_email is null more often than not — a telephone number is stated far more consistently than an email address. mls_id is only unique inside the feed that issued it, so read it together with mls_name. true_status is the MLS's own status word before Zillow mapped it onto its smaller set, and it is not always the same value as home_status.

How much attention the listing is getting arrives as page_view_count, favorite_count and tour_view_count. A save is a logged-in action by somebody who means to come back, so its ratio to the view count behaves as a conversion rate for the individual home. Read all three against days_on_zillow: 197 views over 23 days describes a different listing from 197 views in one.

The money is price, currency, zestimate, rent_zestimate, last_sold_price, date_sold, price_change and price_change_date_display, with tax_annual_amount, property_tax_rate and monthly_hoa_fee beside them. A null monthly_hoa_fee means the home has no association, which is a different statement from a fee of zero. The Zestimate is a model output rather than a listed figure and is stated even for homes that are not for sale, so the gap between it and price is Zillow's opinion rather than a fact about the market.

The structure is bedrooms, bathrooms, living_area, lot_size, lot_area_value, lot_area_units, year_built, home_type, property_type, listing_type and contingent_listing_type. lot_size and lot_area_value describe the same lot in different units; lot_area_units names the second one.

The location is street_address, city, state, zipcode, country, county, neighborhood, community, subdivision, latitude, longitude and time_zone. county is stated here and nowhere else on the row, and it is the join key for public tax and deed records. neighborhood is frequently null, meaning Zillow names none rather than that the home has none.

photos holds every photograph at the widest size available, deduplicated — 61 on the sampled property. photo_count counts what actually arrived rather than repeating a figure the page printed.

reso_facts is republished whole under Zillow's own key names, such as bathroomsThreeQuarter and garageParkingCapacity, and it is the one field on the row that does not follow this Actor's naming. RESO is the real-estate industry's own interchange standard and its field names are the format, so renaming them would destroy the portability that makes the object worth carrying. It is also flat, wide and variable — roughly a hundred facts, of which any listing carries a different subset — so a fixed shape would either invent columns or drop real ones.

What it costs

One event per home read, charged after the record arrives. A listing that no longer resolves produces no row and costs nothing.

Naming a city instead of pasting links adds a second, much smaller event per home, because the listings have to be found before they can be read. Runs given links never fire it.

Questions

One link produced no row, and the run did not fail. Why? Zillow served no home for it: either it never existed, or the listing has been withdrawn. That home is skipped with a line in the run log and the rest of the list continues. Twenty links collected last week will not all still resolve, and losing the other nineteen rows to one dead one is the wrong trade.

I gave both a list and a region. What ran? The list. A region is only read when no listings are given, and the run log says so. Reading a whole city when somebody pasted six links is the worse of the two surprises.

Why are some fields empty on a sold home? A sold or off-market home states fewer fields than a live listing; description in particular is normally absent once a listing closes. Fields the record does not state come back as null rather than being omitted, so a column never silently changes width and "Zillow states nothing here" stays distinguishable from "the Actor did not look".

Where is the price history? Not on this row, and not because it was dropped. The document a listing record is read from does not contain the price history, the tax history, the schools or the comparable homes — they are genuinely absent from it rather than withheld, so collecting them is a second read of a different document. Zillow Property Scraper has a mode for it.

How many listings can one region run reach? Zillow serves at most 20 pages of any region, about 820 homes, however many it says match. The run log states both numbers on the first page. Split the region by ZIP code, or supply the listings yourself.

Is a Zillow account, cookie or API key required? No. None of the three is supplied to the Actor or needed by it.

Zillow Search Scraper returns the listing rows for a city without reading each home's record, which is the cheaper way to see what is on the market before deciding which homes are worth a full read.

Zillow Property Scraper reads the same record from a property identifier and additionally offers the price, tax, school and comparable history as a second mode.

Zillow Sitemap Scraper supplies property identifiers in bulk from Zillow's published index of roughly 14 million homes, which is the cheapest way to assemble a list this Actor can consume.