Address fields

Every response carries the property's address twice: once as a single line in address, and once split into street, unit, city, state, ZIP code, county and neighborhood, so you can display it or store it in columns without parsing.

FieldType
data.addressstring or null
data.streetAddressstring or null
data.unitstring or null
data.citystring or null
data.statestring or null
data.zipcodestring or null
data.countystring or null
data.neighborhoodstring or null

What it means

address is the one-line address as Zillow shows it, for example a street line, then the city, then the state and ZIP. streetAddress is only the street line, and it keeps the unit designator such as APT or Unit when the home has one.

unit is the bare unit identifier pulled from the street line: the part after APT, Unit, Suite or a hash sign. For an apartment building it is the unit that the price describes, which is the lowest-priced unit available at lookup time.

state is the two-letter state code and zipcode is the five-digit ZIP as a string. county is the county name with the word County included. neighborhood is the neighborhood name Zillow shows; PropertiesAPI drops values that are just a ZIP code or the city name repeated.

Recorded example

Recorded lookup of a home for sale
{
  "address": "600 N Fairbanks Ct APT 1905, Chicago, IL 60611",
  "streetAddress": "600 N Fairbanks Ct APT 1905",
  "unit": "1905",
  "city": "Chicago",
  "state": "IL",
  "zipcode": "60611",
  "county": "Cook County",
  "neighborhood": "Streeterville"
}
Recorded lookup of a home for sale
{
  "streetAddress": "3524 Gonzales St #1B",
  "unit": "1B"
}

Values are copied from recorded lookups of public Zillow pages, with the other fields of data left out. They show the shape and typical values, not today's data for these homes.

When it is null

  • unit is null for houses and for any street line without a recognisable unit designator.
  • neighborhood is null when Zillow shows no neighborhood or shows only the ZIP code or city in that slot.
  • city, state, zipcode and county were present on every recorded lookup we keep as fixtures, but code for null anyway: a page can leave any of them out.

Read it in code

Send a Zillow link, a zpid or an address to GET /v1/zillow/property with your key in the x-api-key header, then read the field from data:

curl and jq
curl -sG "https://api.propertiesapi.com/v1/zillow/property" \
  -H "x-api-key: $PROPERTIESAPI_KEY" \
  --data-urlencode "url=https://www.zillow.com/homedetails/1704-Shelbourne-Dr-Austin-TX-78752/29412761_zpid/" \
  | jq '.data | {address, streetAddress, unit, city, state, zipcode, county, neighborhood}'
Python
import os
import requests

r = requests.get(
    "https://api.propertiesapi.com/v1/zillow/property",
    params={"url": "https://www.zillow.com/homedetails/1704-Shelbourne-Dr-Austin-TX-78752/29412761_zpid/"},
    headers={"x-api-key": os.environ["PROPERTIESAPI_KEY"]},
    timeout=120,
)
r.raise_for_status()
home = r.json()["data"]
parts = [home["streetAddress"], home["city"], home["state"], home["zipcode"]]
print(home["address"])
print("unit:", home["unit"] or "none", "| county:", home["county"])
JavaScript (Node)
const url = "https://www.zillow.com/homedetails/1704-Shelbourne-Dr-Austin-TX-78752/29412761_zpid/";
const res = await fetch(
  `https://api.propertiesapi.com/v1/zillow/property?url=${encodeURIComponent(url)}`,
  { headers: { "x-api-key": process.env.PROPERTIESAPI_KEY } },
);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { data: home } = await res.json();
const { address, streetAddress, unit, city, state, zipcode, county } = home;
console.log(address, { streetAddress, unit, city, state, zipcode, county });

Common mistakes

  • Parsing address yourself. The parts are already split, and street lines with units are easy to get wrong.
  • Storing zipcode as a number. ZIP codes in New England start with a zero, which a numeric column drops.
  • Treating an address match as proof of identity. When you look up by address, compare the returned address and detailUrl with what you asked for; a closest match with a different house number is refused with address_ambiguous instead of returned.

Zillow is a trademark of Zillow, Inc. PropertiesAPI is an independent service and is not affiliated with, endorsed by or sponsored by Zillow.

Address fields questions

Does the API normalise addresses?+

It returns the address as Zillow shows it and splits it into parts. It doesn't rewrite the street to USPS format.

Where is the unit number?+

In unit, as a bare identifier, and inside streetAddress after APT, Unit or a hash sign.

Can I search by ZIP code or city?+

No. The API looks up one home per request by link, zpid or address. It doesn't search areas.