~ / endpoints / Listings & Property Data API

Zillow Property Data Scraper API

Scraping property information from Zillow gets easier with one call: pass a homedetails URL or a zpid and our Zillow property data API returns the full listing record as clean JSON, address, price, beds, baths, living area, year built, every photo, and the listing agent.

Get a free API keyAll data types
1,000
free requests
2.6s
median response
JSON
structured output
1
call per property
the bottleneck

Why Zillow Property data is tough at scale

Zillow has no public listings API since it retired its Bridge and GetSearchResults endpoints, so the data only lives in the page. That page sits behind PerimeterX, and the home record is buried in a stringified gdpClientCache blob inside __NEXT_DATA__ that shifts shape often enough to break hand-written parsers.

setup

Run the Zillow Property Data Scraper API in one call

cURL
curl "https://api.zillowscraperapi.com/api/v1/zillow/property?url=https://www.zillow.com/homedetails/6505-44th-Ave-NE-Seattle-WA-98115/463504654_zpid/&api_key=$API_KEY"
Python
import requests

BASE = "https://api.zillowscraperapi.com"
API_KEY = "YOUR_API_KEY"

# Pass a Zillow homedetails URL (or a zpid) and read the parsed record.
data = requests.get(
    f"{BASE}/api/v1/zillow/property",
    params={
        "url": "https://www.zillow.com/homedetails/6505-44th-Ave-NE-Seattle-WA-98115/463504654_zpid/",
        "api_key": API_KEY,
    },
    timeout=30,
).json()

sale = data["trade_info"][0]
print(data["name"])
print(f"${sale['price']:,} - {data['area']['value']} sqft - built {data['year_built']}")
print("Listed by", data["listing_agent"])

# zpid also works instead of url:
# params={"zpid": "463504654", "api_key": API_KEY}
query options

Parameters

ParameterRequiredDefaultNotes
urlrequired-The Zillow homedetails page URL, e.g. https://www.zillow.com/homedetails/.../463504654_zpid/. Required unless you pass zpid.
zpidoptional-The numeric Zillow property id. We build the canonical /homedetails/{zpid}_zpid/ URL from it. One of url or zpid is required.
countryoptional-Optional two-letter country hint. Zillow is US-only, so this is rarely needed.
add_htmloptionalfalseSet to true to include the raw page HTML alongside the parsed record for debugging or custom extraction.
api_keyrequired-Your API key, passed as a query parameter. Get one free at signup.
json out

The Zillow Property Data Scraper API JSON response

200 OK
{
  "name": "6505 44th Avenue NE, Seattle, WA, 98115",
  "address": {
    "address_country": null,
    "address_locality": "Seattle",
    "address_region": "WA",
    "postal_code": "98115",
    "raw": "6505 44th Avenue NE, Seattle, WA, 98115",
    "street_address": "6505 44th Avenue NE"
  },
  "location": { "city": "Seattle", "region": "WA" },
  "area": { "raw": "1,422 sqft", "value": 1422, "unit_code": "sqft" },
  "trade_info": [
    { "currency": "USD", "price": 899900, "price_per_area_unit": 633, "trade_type": "sale" }
  ],
  "property_type": "house",
  "listing_type": "sale",
  "availability_status": "available",
  "description": "Welcome to this stunning new construction home in the desirable View Ridge neighborhood! This 3-bedroom, 2.5-bath residence features an open-concept floor plan...",
  "year_built": 2026,
  "number_of_rooms": 3,
  "rooms": [
    { "count": 3, "room_type": "bedroom" },
    { "count": 3, "room_type": "bathroom" }
  ],
  "images": [
    "https://photos.zillowstatic.com/fp/13d6cb3a35a235ffd25f90309ad7bc78-p_d.jpg",
    "https://photos.zillowstatic.com/fp/670373072a67ee2f912f640135170a8a-p_d.jpg"
  ],
  "main_image": "https://photos.zillowstatic.com/fp/13d6cb3a35a235ffd25f90309ad7bc78-p_h.jpg",
  "listing_agent": "Eric Nissen, Real Property Associates, Inc.",
  "url": "https://www.zillow.com/homedetails/6505-44th-Ave-NE-Seattle-WA-98115/463504654_zpid/",
  "zpid": "463504654",
  "home_status": "FOR_SALE",
  "parcel_id": "260280002007",
  "lot_size": 1707,
  "latitude": 47.675953,
  "longitude": -122.281136
}
FieldTypeDescription
namestringThe full property address as a single line, e.g. 6505 44th Avenue NE, Seattle, WA, 98115.
addressobjectStructured address with street_address, address_locality, address_region, postal_code, address_country, and the raw string.
locationobjectShorthand city and region for the property.
areaobjectLiving area as raw (1,422 sqft), value (1422), and unit_code (sqft).
trade_infoarrayOne entry per active offer, each with currency, price, price_per_area_unit, and trade_type (sale or rent).
property_typestringNormalized type: house, apartment, or land, mapped from Zillow's homeType enum.
listing_typestringWhether the listing is for sale or for rent.
availability_statusstringListing availability, e.g. available.
descriptionstringThe full listing description text from the property page.
year_builtintegerThe year the home was built.
number_of_roomsintegerBedroom count, surfaced for the Scrapfly-parity schema.
roomsarrayRoom breakdown, each with count and room_type (bedroom, bathroom).
imagesarrayEvery listing photo URL from the gallery (up to 50 per call).
main_imagestringThe primary hero photo URL for the listing.
listing_agentstringThe listing agent and brokerage, e.g. Eric Nissen, Real Property Associates, Inc.
urlstringThe canonical homedetails URL for the property.
zpidstringThe stable Zillow property id.
home_statusstringZillow's raw status, e.g. FOR_SALE, FOR_RENT, SOLD.
parcel_idstringThe county parcel identifier for the property.
lot_sizeintegerLot size in square feet.
latitudenumberProperty latitude.
longitudenumberProperty longitude.
what it powers

Ways teams use this data

>

Comp and valuation models

Pull price, price per square foot, living area, year built, and lot size for a set of homedetails URLs to feed pricing and comparable-sales models with clean numeric fields.
>

Listing enrichment

Turn a spreadsheet of Zillow links into full rows: address parts, beds, baths, sqft, status, and the listing agent, ready for a CRM or an internal database.
>

Real-estate portals and apps

Render property detail views in your own product from the parsed record, including the photo gallery and description, without maintaining a Zillow parser.
>

Market and inventory tracking

Poll the same zpids on a schedule and store home_status and price over time to watch price cuts, pending sales, and days on market.
>

Photo and media pipelines

Read the images array to collect every listing photo for a home and pipe them into image analysis, staging tools, or an archive.
>

Geospatial mapping

Use latitude, longitude, and parcel_id to plot listings on a map or join them to county records and geographic datasets.
why choose us

Where our Zillow Property Data Scraper API stands out

Pass a homedetails URL or a zpid and we resolve the page for you, running residential proxies, PerimeterX handling, and retries, then parse the buried gdpClientCache record into a stable flat schema. One request returns the whole listing, address, price, area, rooms, photos, and agent, as validated JSON in about 2.6 seconds, with no Zillow API key to apply for.

*

URL or zpid input

Pass a full homedetails URL or just the numeric zpid. We build the canonical page URL and resolve it server side either way.
*

PerimeterX handling built in

Zillow sits behind PerimeterX. Residential proxies and anti-bot handling clear the challenge so you get the home record instead of a Press-and-Hold page.
*

Full parsed record

We read the gdpClientCache blob and fall back to the page's RealEstateListing JSON-LD, so the headline fields still come back when Zillow shifts its markup.
*

Auto-retry across pools

Failed fetches retry through residential proxy tiers before a response is returned, so a transient block does not surface as a failed job.
*

Stable Scrapfly-parity schema

Fields return under the same nested leaf names on every call, verified at 100% against the real-estate-property reference model.
*

Every photo in one call

The images array carries the full gallery for the home, up to 50 URLs, plus a main_image for the hero shot.
versus

Zillow Property Data Scraper API vs DIY and the Zillow API

Our APIDIY (requests / headless)Official Zillow API
Property data accessParsed JSON from URL or zpidManual fetch and parse of __NEXT_DATA__Retired: no public listings API
SetupAPI key onlyResidential proxies, headless browser, parsersPartner approval, where available
Anti-bot (PerimeterX)Handled for youYou solve the challenge yourselfNot applicable
Photos and descriptionFull gallery plus text in one callExtra parsing of the photo blobNot exposed
Output shapeStable flat JSON, parity-checkedWhatever you parse from the pageNot applicable
BillingPay per successful requestYou absorb blocked-request costNot applicable
cost to run

Free to test, cheap to scale

PlanPriceBest for
Free1,000 requestsTesting and small jobs
Pro$0.60 / 1kProduction workloads
Pay-as-you-go$0.90 / 1kSpiky or one-off volume

Median response 2.6s. You only pay for successful requests.

FAQ

How do I scrape property information from Zillow?

Send one GET request to our zillow/property endpoint with a homedetails URL (or a zpid) and your api_key. We route the request through residential proxies, clear Zillow's PerimeterX check, retry on failure, and parse the page's embedded home record, so you get back clean JSON with the address, price, beds, baths, living area, year built, photos, and the listing agent. There is nothing to install and no parser to maintain.

Does Zillow have a property data API?

Not a public one. Zillow retired its Bridge Interactive listing feeds and older GetSearchResults and GetDeepSearchResults endpoints, so there is no open API that returns for-sale listing data to general developers. The data still renders on the public property page, which is what our Zillow property data API reads and returns as structured JSON.

Can I look up a property by zpid instead of a URL?

Yes. Pass the numeric zpid parameter and we build the canonical https://www.zillow.com/homedetails/{zpid}_zpid/ URL and resolve it. Either url or zpid is required on every call, and the zpid also comes back in the response so you can store it as the stable key for a property.

What fields does the Zillow property scraper return?

Each call returns the address (both a raw string and structured parts), living area in square feet, the price and price per square foot under trade_info, property_type, year_built, a rooms breakdown for beds and baths, the full images gallery, the main_image, the listing_agent and brokerage, home_status, parcel_id, lot_size, and latitude and longitude. The response above is a real, unedited example.

How does the API get past Zillow's anti-bot protection?

Zillow uses PerimeterX, which serves a Press-and-Hold challenge to traffic it does not trust and returns a page with no listing data. Our API routes property requests through residential proxies with anti-bot handling and automatic retries, so the real page loads and the embedded gdpClientCache record is parsed. You never handle the challenge or manage a proxy pool yourself.

Is scraping Zillow legal?

Scraping publicly visible web pages is generally treated as lawful in the United States, and courts have declined to treat access to public data as a Computer Fraud and Abuse Act violation, though Zillow's Terms of Use restrict automated collection, so review the terms and robots.txt for your use case and avoid personal or copyrighted data you do not have the right to use. This is general information, not legal advice.

How fast is the Zillow property data API?

Median end-to-end response is about 2.6 seconds, which includes proxy routing, PerimeterX handling, retries, and parsing. One call returns the entire property record, so you do not chain extra requests to assemble a listing, and you are billed only for successful requests.

Start with the Zillow Property Data Scraper API
1,000 requests free. No card, no commitment.
Get a free API key All data types