homeType and yearBuilt

homeType is Zillow's property type code, and yearBuilt the year the home was built, as the listing states it.

FieldType
data.homeTypestring or null (enum)
data.yearBuiltinteger or null

What it means

homeType is a code such as SINGLE_FAMILY, CONDO, TOWNHOUSE, MULTI_FAMILY, APARTMENT, LOT or MANUFACTURED. An apartment building link comes back as APARTMENT, and land as LOT. Branch on the code, not on the description.

Many other fields depend on the type. A LOT has no bedrooms or living area, a CONDO usually has an HOA fee and no lot, and an APARTMENT link describes one unit of the building in price, beds and baths.

yearBuilt is a four-digit year. New construction can show the current year or a future one while the home is being built. Recorded multi-family homes in Cleveland went back to the late nineteenth century.

Recorded example

Recorded lookup of a home for sale
{
  "homeType": "TOWNHOUSE",
  "statusText": "New construction",
  "yearBuilt": 2026
}
Recorded lookup of a home for sale
{
  "homeType": "MULTI_FAMILY",
  "yearBuilt": 1895
}
Recorded lookup of a rental
{
  "homeType": "APARTMENT",
  "yearBuilt": null
}

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

  • yearBuilt is null for land, for apartment building rentals in our recorded lookups, and whenever the page doesn't state a year. A year of zero on the source counts as unknown.
  • homeType was present on every recorded lookup, but code for null anyway.

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 | {homeType, yearBuilt}'
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"]
from datetime import date
kind, built = home["homeType"], home["yearBuilt"]
age = None if built is None else date.today().year - built
print(kind, built, age)
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 { homeType, yearBuilt } = home;
const age = yearBuilt == null ? null : new Date().getFullYear() - yearBuilt;
console.log(homeType, yearBuilt, age);

Common mistakes

  • Treating MULTI_FAMILY as an apartment complex. It is a building with a few homes sold as one property; a recorded Cleveland listing was a duplex.
  • Computing age from yearBuilt without a null check, which gives a home built in year zero.
  • Expecting a closed list. Zillow can add codes; keep unknown values instead of failing.

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

homeType and yearBuilt questions

What does APARTMENT mean?+

The link was an apartment building page. The response describes the building, and price, beds and baths describe its lowest-priced available unit.

Can I filter by home type?+

You can filter the homes you looked up. The API doesn't search for homes by type.

Why is yearBuilt in the future?+

New construction listings sometimes show the year the builder expects to finish.