Zillow property IDs: when to use a ZPID lookup
Learn when to use a Zillow property ID, URL, or address, and how to preserve property identity across API requests and exports.
What is a ZPID?
A ZPID is a Zillow property identifier. In PropertiesAPI, it is accepted as the zpid query parameter and returned as data.zpid. Treat it as a string in your application. It identifies a Zillow record, not a county parcel record, an MLS listing number or a universal address identifier.
If you already have a verified property ID, a ZPID lookup avoids reconstructing the address on every request. If you have a property page instead, submit its URL. If your starting point is an address, resolve and review the identity first, then retain the returned identifier.
Choose one input for each request
The property endpoint accepts exactly one of zpid, url or address. Sending an address and ID together does not create an additional identity check; it creates an invalid request. Perform comparisons in your application after receiving the result.
| Input | Use it when | Check afterwards |
|---|---|---|
| zpid | You have an already verified Zillow property ID. | The returned ID and property still match your record. |
| url | A user supplies a Zillow property page. | The page and returned record describe the intended home. |
| address | You have a complete US street address. | Address components, unit and any ambiguity warning. |
Keep the identifier as a string
Identifiers are labels. You do not add, average or round them. Preserve a ZPID as text in JSON exports, CSV schemas and database columns, even when its characters are all digits. Spreadsheet tools can otherwise reinterpret identifiers as numbers.
For a county parcel join, use the parcel identifier and jurisdiction separately where available. Do not rename a ZPID column to parcel_id or use an MLS number as a fallback value in the same field. A clearly named nullable column is easier to debug than a single field containing several incompatible identifiers.
Make the request on your server
The following request template uses a previously verified ID stored in PROPERTY_ZPID. Keep the API key in a server environment variable. An ID in an example is not evidence that the property exists or that its data is available.
curl --get 'https://api.propertiesapi.com/v1/zillow/property' --header "x-api-key: $PROPERTIESAPI_KEY" --data-urlencode "zpid=$PROPERTY_ZPID" --max-time 130Preserve the returned identity
Store the request input, returned zpid, detailUrl and collection timestamp in distinct fields. If a warning or mismatch appears, route the result for review instead of updating an existing row by the requested ID alone.
This matters when links redirect or source records change. The response is evidence of what the service returned at a particular time. It is not permission to overwrite a different home in your database. Keep a small audit trail of accepted identity changes so downstream reports can be reconciled.
Deduplicate after identity is confirmed
Two different address spellings may resolve to the same property. Group confirmed results by returned ZPID to avoid displaying duplicate homes. Keep the original input-to-result mapping so every submitted row still has an outcome.
For units and apartment buildings, do not deduplicate solely by street address. Several distinct homes can share one street address. Use the most specific confirmed property identity available and document cases where the source returns a building-level record.
Sources and documentation
Product details checked against the linked documentation on October 21, 2026. Code and sample inputs are illustrative unless stated otherwise.
Written by PropertiesAPI, an independent property data service. We are not affiliated with Zillow. Source data may be incomplete or change over time.