Skip to content

Quickstart

1. Sign in and create a key

Sign in with your email. We’ll send a magic link — no passwords. Once you land on the dashboard, go to API keys → Create new key. Copy the plaintext that appears. You will not see it again.

Keys look like zk_AbCdEf… and act as bearer tokens.

2. Make your first call

Get a single property by URL:

Terminal window
curl https://api.zillapi.com/v1/properties/by-url \
-H "Authorization: Bearer $ZILLOW_API_KEY" \
--data-urlencode "url=https://www.zillow.com/homedetails/17-Zelma-Dr-Greenville-SC-29617/11026031_zpid/" \
-G

A successful response:

{
"data": {
"zpid": "11026031",
"address": { "streetAddress": "17 Zelma Dr", "city": "Greenville", "state": "SC", "zipcode": "29617" },
"price": 295000,
"bedrooms": 3, "bathrooms": 2,
"livingArea": 1432,
"yearBuilt": 1965,
"homeType": "SINGLE_FAMILY",
"homeStatus": "FOR_SALE",
"latitude": 34.882, "longitude": -82.428,
"zestimate": 305100,
"rentZestimate": 1850
},
"request_id": "8f7a3b…"
}

3. Search for listings

Terminal window
curl https://api.zillapi.com/v1/listings/for-sale \
-H "Authorization: Bearer $ZILLOW_API_KEY" \
-H "content-type: application/json" \
-d '{
"filters": {
"status": "for_sale",
"location": "San Francisco, CA",
"price": { "min": 500000, "max": 1500000 },
"beds": { "min": 2 }
},
"maxItems": 50
}'

Up to 50 results return inline. For more, set async: true and poll the job_id (see Async jobs) or register a webhook.

4. Get sub-resources

The detail response is large. If you only want photos:

Terminal window
curl https://api.zillapi.com/v1/properties/11026031/photos \
-H "Authorization: Bearer $ZILLOW_API_KEY"

Or just the Zestimate:

Terminal window
curl https://api.zillapi.com/v1/properties/11026031/zestimate \
-H "Authorization: Bearer $ZILLOW_API_KEY"

These are served from cache (24h TTL) — they don’t burn extra units when fresh.

Next