Quickstart

Your first Zillow lookup. Paste a Zillow link or an address, get the listing back as JSON.

1. Get a key

Sign in with your email and create a key on your dashboard. The free plan includes 50 free lookups (a one-time trial) with no card. Keep the key on your server. Don't ship it in browser code.

2. Make a call

Send a Zillow property link as url. Pick your language; every example reads your key from the PROPERTIESAPI_KEY environment variable, and the dashboard shows the same code with your key filled in:

export PROPERTIESAPI_KEY="your-key"

curl -G "https://api.propertiesapi.com/v1/zillow/property" \
  -H "x-api-key: $PROPERTIESAPI_KEY" \
  --data-urlencode "url=https://www.zillow.com/homedetails/2640-Steiner-St-San-Francisco-CA-94115/15073305_zpid/"

Or send a plain address. We find the matching Zillow property first:

curl (address)
curl -G "https://api.propertiesapi.com/v1/zillow/property" \
  -H "x-api-key: $PROPERTIESAPI_KEY" \
  --data-urlencode "address=2640 Steiner St, San Francisco, CA 94115"

A live lookup takes typically 6 seconds, up to about 20. Set a client timeout of at least 120 seconds: an occasional lookup takes longer. Repeat lookups of the same home within 24 hours come from our cache and are free. The x-cache header says HIT or MISS.

3. Read the response

You get { data, meta }. data is the property: homeStatus, price, zestimate, rentZestimate, beds, baths, livingArea, photos, daysOnZillow, priceHistory, taxHistory, brokerName and more. meta has credits, cached and fetched_at. See every field on the property endpoint page.

4. Handle nulls

If Zillow doesn't show a field for a property, it's null. A home that isn't listed has no price. Some homes have no zestimate. Check for null before you use a value, and don't treat it as zero.

5. Handle errors

  • 400 missing_param or 400 bad_param: send exactly one valid url or address.
  • 404 not_found: no Zillow property matched. Check the address, or send the Zillow URL instead.
  • 502 upstream_error or 504 upstream_timeout: the live fetch didn't work this time. Retry with backoff. You aren't billed.
  • 503 upstream_busy: wait for retry-after seconds.

All codes are on the overview.

6. Go bulk

Send up to 50 URLs or addresses in one request. Each result comes back in data with its own ok flag:

curl (batch)
curl "https://api.propertiesapi.com/v1/zillow/batch" \
  -H "x-api-key: $PROPERTIESAPI_KEY" \
  -H "content-type: application/json" \
  --max-time 300 \
  -d '{"items":["https://www.zillow.com/homedetails/2640-Steiner-St-San-Francisco-CA-94115/15073305_zpid/","130 Water St APT 12D, New York, NY 10005"]}'

Next steps

Data is provided as-is, as shown on public Zillow pages, without any guarantee of accuracy or completeness. Zillow is a trademark of Zillow, Inc. PropertiesAPI is an independent service and is not affiliated with, endorsed by or sponsored by Zillow.