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.
| Field | Type |
|---|---|
data.price | number or null |
data.currency | string 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
{
"homeStatus": "FOR_SALE",
"price": 400000,
"currency": "USD"
}{
"homeStatus": "FOR_RENT",
"price": 2385,
"currency": "USD",
"unit": "0910",
"beds": 0
}{
"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 -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}'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']}")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.
Related
- homeStatus and statusText
- zestimate
- priceHistory
- Last sale: dateSold, lastSoldPrice and calculated last sale
- Every field of the property endpoint
- Guide: A Zillow API integration checklist before launch
- All response fields
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.