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-key header.
  • 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.

NameInTypeDescription
zpidquerystringA Zillow property ID, 1–12 digits. Give exactly one of url, zpid or address.
urlquerystringA zillow.com property link (zillow.com/homedetails/..._zpid/, or an apartment-building link, zillow.com/apartments/...). URL-encode it. Max 500 characters.
addressquerystringA 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

NameInTypeDescription
statusquerystring: for_sale | sold | for_rentOptional hint for which listing to read. If omitted, the status is detected automatically.
rawquerybooleanAlso 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):

FieldTypeDescription
zpidstringZillow property ID.
detailUrlstringThe Zillow property page.
addressstringOne-line address.
streetAddressstringStreet line.
unitstringUnit number, e.g. 1905 for 600 N Fairbanks Ct APT 1905. For an apartment building, the unit that price describes (see price).
citystringCity.
statestringTwo-letter state code.
zipcodestringZIP code.
countystringCounty.
neighborhoodstringNeighborhood name.
latitudenumberLatitude.
longitudenumberLongitude.
pricenumberList 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.
currencystringCurrency of price, e.g. USD.
homeStatusstringZillow'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.
statusTextstringA 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.
homeTypestringSINGLE_FAMILY, CONDO, TOWNHOUSE, MULTI_FAMILY, APARTMENT, LOT, MANUFACTURED, ...
bedsnumberBedrooms.
bathsnumberBathrooms.
livingAreanumberLiving area in square feet.
lotSizenumberLot size in square feet (acres converted).
yearBuiltintegerYear built.
pricePerSquareFootnumberPrice per square foot.
zestimatenumberZillow's Zestimate, when shown.
rentZestimatenumberZillow's rent Zestimate (a month), when shown.
daysOnZillowintegerDays the current listing has been on Zillow.
datePostedstringDate listed, YYYY-MM-DD.
dateSoldstringDate of the last sale, YYYY-MM-DD.
lastSoldPricenumberLast sale price.
monthlyHoaFeenumberHOA fee a month.
taxAnnualAmountnumberAnnual property tax.
taxAssessedValuenumberAssessed value.
propertyTaxRatenumberProperty tax rate, percent.
pageViewCountintegerCumulative views supplied by the source. Zero is meaningful; null when not returned.
favoriteCountintegerFavorites supplied by the source. Zero is meaningful; null when not returned.
parcelIdstringParcel (APN) number.
descriptionstringListing description.
imgSrcstringMain photo URL.
photosstring[]Photo URLs as published on the listing. Never re-hosted. Can be empty.
photoCountintegerNumber of photos.
brokerNamestringListing brokerage.
brokerPhonestringBrokerage phone.
agentNamestringListing agent.
agentPhonestringAgent phone.
agentLicenseNumberstringAgent license number.
mlsIdstringMLS listing number.
mlsNamestringMLS name.
priceHistoryZillowPriceEvent[]Past events, newest first: date, event, price, pricePerSquareFoot, priceChangeRate, source. Can be empty.
taxHistoryZillowTaxEvent[]Tax years: year, taxPaid, value (assessed), taxIncreaseRate, valueIncreaseRate. Can be empty.
schoolsZillowSchool[]Nearby schools: name, rating, distance (miles), level, type, grades, link. Can be empty.
virtualTourUrlstringVirtual tour link.
scrapedAtstringWhen the data was collected (ISO 8601).

Example

Request
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/"
Response 200 (illustrative)
{
  "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.