Zillow property lookup
GEThttps://api.propertiesapi.com/v1/zillow/property
One property by Zillow URL or address: listing price and status, Zestimate, rent Zestimate, beds, baths, living area, lot, year built, home type, photo URLs, days on Zillow, price history, tax history, schools, broker and agent.
At a glance
- Billing: 1 credit per successful live lookup, by Zillow link or address. Repeat lookups of the same home within 24 hours come from cache and are free. Errors aren't billed.
- Auth:
x-api-keyheader. - Latency: typically 8 seconds, up to about 20 for a live lookup; repeat lookups within 24 hours come from the cache, with no live lookup.
- Replaces: the old GetSearchResults, GetDeepSearchResults, GetZestimate and GetUpdatedPropertyDetails calls from the retired Zillow API.
Parameters
Send exactly one of url or address.
| Name | In | Type | Description |
|---|---|---|---|
| zpid | query | string | A Zillow property ID, 1–12 digits. Give exactly one of url, zpid or address. |
| url | query | string | A zillow.com property link (zillow.com/homedetails/..._zpid/, or an apartment-building link, zillow.com/apartments/...). URL-encode it. Max 500 characters. |
| address | query | string | A one-line US address with a house number, 5-200 characters. We find the matching Zillow property first. Include the unit number for condos and apartments. |
Other parameters
| Name | In | Type | Description |
|---|---|---|---|
| status | query | string: for_sale | sold | for_rent | Optional hint for which listing to read. If omitted, the status is detected automatically. |
| raw | query | boolean | Also return the unmapped source record as data.raw. Its shape isn't documented and can change. Default false. |
Response fields
The body is { data, meta }. Fields of data (any can be null; lists can be empty):
| Field | Type | Description |
|---|---|---|
zpid | string | Zillow property ID. |
detailUrl | string | The Zillow property page. |
address | string | One-line address. |
streetAddress | string | Street line. |
unit | string | Unit number, e.g. 1905 for 600 N Fairbanks Ct APT 1905. For an apartment building, the unit that price describes (see price). |
city | string | City. |
state | string | Two-letter state code. |
zipcode | string | ZIP code. |
county | string | County. |
neighborhood | string | Neighborhood name. |
latitude | number | Latitude. |
longitude | number | Longitude. |
price | number | List price. For rentals, the monthly rent. For an apartment building (a zillow.com/apartments/ link), the rent of its lowest-priced unit available now (no move-in date, or one on or before the lookup date; if none is available yet, its lowest-priced unit); beds, baths, livingArea and unit describe that same unit. For sold homes, the sale price, or null when the sale price isn't disclosed. Never 0. |
currency | string | Currency of price, e.g. USD. |
homeStatus | string | Zillow's status code: FOR_SALE, FOR_RENT, RECENTLY_SOLD, PENDING, COMING_SOON, FORECLOSURE, OFF_MARKET or OTHER. Homes that aren't listed usually come back as OTHER. |
statusText | string | A short readable status built from Zillow's status and listing flags: For sale, Pending, Coming soon, New construction, For sale by owner, Foreclosure, Auction, For rent, Sold or Off market. Null when the status is unclear. |
homeType | string | SINGLE_FAMILY, CONDO, TOWNHOUSE, MULTI_FAMILY, APARTMENT, LOT, MANUFACTURED, ... |
beds | number | Bedrooms. |
baths | number | Bathrooms. |
livingArea | number | Living area in square feet. |
lotSize | number | Lot size in square feet (acres converted). |
yearBuilt | integer | Year built. |
pricePerSquareFoot | number | Price per square foot. |
zestimate | number | Zillow's Zestimate, when shown. |
rentZestimate | number | Zillow's rent Zestimate (a month), when shown. |
daysOnZillow | integer | Days the current listing has been on Zillow. |
datePosted | string | Date listed, YYYY-MM-DD. |
dateSold | string | Date of the last sale, YYYY-MM-DD. |
lastSoldPrice | number | Last sale price. |
monthlyHoaFee | number | HOA fee a month. |
taxAnnualAmount | number | Annual property tax. |
taxAssessedValue | number | Assessed value. |
propertyTaxRate | number | Property tax rate, percent. |
pageViewCount | integer | Cumulative views supplied by the source. Zero is meaningful; null when not returned. |
favoriteCount | integer | Favorites supplied by the source. Zero is meaningful; null when not returned. |
parcelId | string | Parcel (APN) number. |
description | string | Listing description. |
imgSrc | string | Main photo URL. |
photos | string[] | Photo URLs as published on the listing. Never re-hosted. Can be empty. |
photoCount | integer | Number of photos. |
brokerName | string | Listing brokerage. |
brokerPhone | string | Brokerage phone. |
agentName | string | Listing agent. |
agentPhone | string | Agent phone. |
agentLicenseNumber | string | Agent license number. |
mlsId | string | MLS listing number. |
mlsName | string | MLS name. |
priceHistory | ZillowPriceEvent[] | Past events, newest first: date, event, price, pricePerSquareFoot, priceChangeRate, source. Can be empty. |
taxHistory | ZillowTaxEvent[] | Tax years: year, taxPaid, value (assessed), taxIncreaseRate, valueIncreaseRate. Can be empty. |
schools | ZillowSchool[] | Nearby schools: name, rating, distance (miles), level, type, grades, link. Can be empty. |
virtualTourUrl | string | Virtual tour link. |
scrapedAt | string | When the data was collected (ISO 8601). |
Example
curl -G "https://api.propertiesapi.com/v1/zillow/property" \
-H "x-api-key: $PROPERTIESAPI_KEY" \
--data-urlencode "url=https://www.zillow.com/homedetails/1600-Main-St-Austin-TX-78701/0000000_zpid/"{
"data": {
"zpid": "0000000",
"detailUrl": "https://www.zillow.com/homedetails/1600-Main-St-Austin-TX-78701/0000000_zpid/",
"address": "1600 Main St, Austin, TX 78701",
"streetAddress": "1600 Main St",
"unit": null,
"city": "Austin",
"state": "TX",
"zipcode": "78701",
"county": "Travis County",
"neighborhood": null,
"latitude": 30.27,
"longitude": -97.74,
"price": 525000,
"currency": "USD",
"homeStatus": "FOR_SALE",
"statusText": "For sale",
"homeType": "SINGLE_FAMILY",
"beds": 3,
"baths": 2,
"livingArea": 1840,
"lotSize": 6970,
"yearBuilt": 1998,
"pricePerSquareFoot": 285,
"zestimate": 512000,
"rentZestimate": 2650,
"daysOnZillow": 12,
"datePosted": "2026-10-07",
"dateSold": null,
"lastSoldPrice": null,
"monthlyHoaFee": null,
"taxAnnualAmount": 9840,
"taxAssessedValue": 498000,
"propertyTaxRate": 1.98,
"pageViewCount": null,
"favoriteCount": null,
"parcelId": null,
"description": "Three-bedroom home near downtown.",
"imgSrc": "https://photos.example.com/0000000-1.jpg",
"photos": [
"https://photos.example.com/0000000-1.jpg",
"https://photos.example.com/0000000-2.jpg"
],
"photoCount": 2,
"brokerName": "Example Realty",
"brokerPhone": null,
"agentName": null,
"agentPhone": null,
"agentLicenseNumber": null,
"mlsId": null,
"mlsName": null,
"priceHistory": [
{
"date": "2026-10-07",
"event": "Listed for sale",
"price": 525000,
"pricePerSquareFoot": 285,
"priceChangeRate": null,
"source": "Example MLS"
}
],
"taxHistory": [
{
"year": 2025,
"taxPaid": 9840,
"value": 498000,
"taxIncreaseRate": null,
"valueIncreaseRate": null
}
],
"schools": [],
"virtualTourUrl": null,
"scrapedAt": "2026-10-19T14:02:11.000Z"
},
"meta": {
"credits": 1,
"cached": false,
"cache_key": "zpid:0000000",
"fetched_at": "2026-10-19T14:02:11.000Z",
"source": {
"provider": "self_hosted",
"collector": "propertiesapi/zillow-page-v1",
"note": "Read from the public Zillow page by our collector. Field availability varies by listing. PropertiesAPI is not affiliated with Zillow."
},
"release": "v1",
"took_ms": 14230
}
}Example values are illustrative, not a real record. Fields Zillow doesn't show for a property come back as null. Data is provided as-is.
Notes
- Send exactly one of url, zpid or address. Sending none returns 400 missing_param; sending several returns 400 bad_param.
- The body is { data, meta }. data is the property; meta has credits, cached, cache_key, fetched_at, source, release and took_ms.
- meta.source says who read the page: provider self_hosted (our collector, reading the public Zillow page) or apify (an Apify actor, used as a fallback when our collector can't read the page; then source.fallback_from is self_hosted). You're billed once either way.
- The x-cache response header is HIT when the result came from the 24-hour cache (free, no live lookup) and MISS when it was fetched live.
- A live lookup typically takes 8 seconds, up to about 20. Set a client timeout of at least 120 seconds: an occasional lookup takes longer.
- Fields Zillow doesn't show for a property come back as null. Don't treat null as zero.
- price is the listing price (monthly rent for rentals). zestimate and rentZestimate are Zillow's own estimates, returned only when Zillow shows them. PropertiesAPI doesn't make estimates of its own.
- An apartment-building link (zillow.com/apartments/...) returns the building: zpid, address, photos and schools are the building listing's, and price, beds, baths, livingArea and unit come from its lowest-priced unit available now (no move-in date, or one on or before the lookup date; if none is available yet, its lowest-priced unit). The other units aren't returned yet.
- photos is a list of image URLs. priceHistory, taxHistory and schools are lists and can be empty.
- Data is provided as-is, as shown on the public Zillow page at the time of the lookup. It isn't official and isn't guaranteed to be accurate or complete.
Errors
Errors are { error: { code, message, details? }, meta: { took_ms } } with status 400, 401, 404, 422, 500, 502, 503 or 504. Errors aren't billed. See errors.
Zillow is a trademark of Zillow, Inc. PropertiesAPI is an independent service and is not affiliated with, endorsed by or sponsored by Zillow.
Zillow property lookup questions
Can I look up a property by address instead of a Zillow link?+
Yes. Send address instead of url and we find the matching Zillow property first. An address lookup costs 1 credit, the same as a link.
How long does a lookup take?+
A live lookup takes typically 8 seconds, up to about 20. Set a client timeout of at least 120 seconds: an occasional lookup takes longer. A cache hit (x-cache: HIT) skips the live lookup and is free.
What do I get for an apartment building link?+
The building. zpid, address and photos are the building listing's, and price, beds, baths, livingArea and unit describe its lowest-priced unit available now (no move-in date, or one on or before the lookup date; if none is available yet, its lowest-priced unit). The other units aren't returned yet.
Why is zestimate null?+
Zillow doesn't show a Zestimate for every home. When the page doesn't show one, the field is null.
Is this Zillow's official API?+
No. PropertiesAPI is an independent service and is not affiliated with, endorsed by or sponsored by Zillow. The data is provided as-is.
Do failed lookups cost anything?+
No. Only successful live lookups are billed. Errors are free, and repeat lookups of the same home within 24 hours come from cache for free.