Zillow batch lookup

POSThttps://api.propertiesapi.com/v1/zillow/batch

Up to 50 Zillow URLs or addresses in one request. Each item is looked up exactly as GET /v1/zillow/property would, and comes back with its own ok flag.

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.

Parameters

No query parameters. Send the items in the request body.

Request body

items: 1 to 50 entries. Each is a string (a zillow.com link or an address) or an object with one of url or address. Optional status (for_sale, sold or for_rent) applies to every item; optional raw: true adds data.raw.

Request body
{
  "items": [
    "https://www.zillow.com/homedetails/1600-Main-St-Austin-TX-78701/0000000_zpid/",
    "1 Nowhere Rd, Austin, TX 78701",
    {
      "address": "1600 Main St, Austin, TX 78701"
    }
  ],
  "status": "for_sale"
}

Example

Request
curl "https://api.propertiesapi.com/v1/zillow/batch" -H "x-api-key: $PROPERTIESAPI_KEY" \
  -H "content-type: application/json" \
  -d '{"items":["https://www.zillow.com/homedetails/1600-Main-St-Austin-TX-78701/0000000_zpid/","1600 Main St, Austin, TX 78701"]}'
Response 200 (illustrative)
{
  "data": [
    {
      "index": 0,
      "ok": true,
      "data": {
        "zpid": "0000000",
        "price": 525000,
        "zestimate": 512000,
        "...": "same fields as GET /v1/zillow/property"
      },
      "meta": {
        "credits": 0,
        "cached": true,
        "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": 2
      }
    },
    {
      "index": 1,
      "ok": false,
      "error": {
        "code": "not_found",
        "message": "No Zillow property matches this input"
      }
    }
  ],
  "meta": {
    "count": 2,
    "succeeded": 1,
    "failed": 1,
    "cache_hits": 1,
    "credits": 0,
    "took_ms": 9120
  }
}

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

  • More than 50 items returns 400 too_many_items. An empty or missing items array, or a body that isn't JSON, returns 400 bad_body. Split larger lists into several requests.
  • data has one result per item, in the same order, with its index. Check each result's ok: one failed item doesn't fail the batch.
  • Items run concurrently within an overall time limit of about 280 seconds. Items that couldn't start in time come back with error code batch_deadline; retry those.
  • meta.credits is the number of credits charged. Only successful live lookups count; cache hits and failed items are free.

Errors

Errors are { error: { code, message, details? }, meta: { took_ms } } with status 400, 401, 500, 503 (per-item errors are inside data). 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 batch lookup questions

How many properties can I send at once?+

Up to 50 items per request. Split longer lists into several requests.

What happens if one item fails?+

The rest still come back. Each result has its own ok flag, and failed items aren't billed.

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.