~ / 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

Quickstart

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}

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.

Use it for

>

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.

Pricing

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.

Get listings & property data api as JSON
Free plan, 1,000 requests. No credit card required.
Get a free API key All endpoints