price and currency

price is the number at the top of a Zillow listing: the asking price for a home for sale, the monthly rent for a rental, or the sale price for a sold home. currency says which currency it is in.

FieldType
data.pricenumber or null
data.currencystring or null

What it means

What price means depends on homeStatus. For FOR_SALE, PENDING and COMING_SOON it is the asking price. For FOR_RENT it is the monthly rent. For RECENTLY_SOLD it is the sale price when the sale price is disclosed. Always read price together with homeStatus.

For an apartment building link, price is the rent of the building's lowest-priced unit available at lookup time, and beds, baths, livingArea and unit describe that same unit, so the numbers always belong together.

For homes that aren't listed, Zillow's page often headlines the Zestimate where a price would be. PropertiesAPI doesn't pass that off as a price: it leaves price null and returns the estimate in zestimate. currency was USD on every recorded lookup.

Recorded example

Recorded lookup of a home for sale
{
  "homeStatus": "FOR_SALE",
  "price": 400000,
  "currency": "USD"
}
Recorded lookup of a rental
{
  "homeStatus": "FOR_RENT",
  "price": 2385,
  "currency": "USD",
  "unit": "0910",
  "beds": 0
}
Recorded lookup of a sold home
{
  "homeStatus": "RECENTLY_SOLD",
  "price": 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

  • The home isn't listed for sale or rent (homeStatus OTHER or OFF_MARKET).
  • A sold home's sale price isn't disclosed. Some states don't publish sale prices, so a sold home can come back with price null.
  • The listing shows no price. A price of zero on the source page is treated as not disclosed, so price is never zero.

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 | {price, currency}'
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"]
status, price = home["homeStatus"], home["price"]
if price is None:
    print("no price shown")
elif status == "FOR_RENT":
    print(f"rent: {price:,.0f} {home['currency']} a month")
else:
    print(f"price: {price:,.0f} {home['currency']}")
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 { homeStatus, price, currency } = home;
const label = price == null ? "no price shown"
  : homeStatus === "FOR_RENT" ? `${price} ${currency} a month` : `${price} ${currency}`;
console.log(label);

Common mistakes

  • Showing null as a price of zero dollars. Show a dash or the words not disclosed.
  • Comparing rents with sale prices. Filter on homeStatus first; a FOR_RENT price is a monthly amount.
  • Using price as a valuation for an off-market home. There is no price then; zestimate is Zillow's estimate and is labelled as such.

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

price and currency questions

Is price the asking price or the sold price?+

It depends on homeStatus: asking price for homes listed for sale, monthly rent for rentals, sale price for sold homes when disclosed.

Why is price null for a home I can see on Zillow?+

The home is probably off market, so Zillow shows an estimate rather than a price, or it sold in a state that doesn't disclose sale prices.

Which currency is used?+

currency says. Every recorded lookup returned USD, since the API covers US homes.