Price vs Zestimate
price_vs_zestimate_pct says how far the home's price is above or below its Zestimate, as a percent of the Zestimate.
| Field | Type |
|---|---|
data.calculated.price_vs_zestimate_pct | number or null |
Fields under data.calculated are calculated by PropertiesAPI from the other fields in the same response. They are not Zillow estimates.
What it means
The formula is price minus Zestimate, divided by Zestimate, times one hundred, rounded to two decimals. A negative value means the price is below the Zestimate; a positive value means above.
It uses price only when price is a sale or asking price. For a sold home with a disclosed price that is the sale price, so the figure shows how the sale compared with Zillow's current estimate; for a home for sale it compares the asking price.
In our recorded lookups most listed homes priced within a few percent of their Zestimate, while a high-end new build was priced well above it. A large gap is a prompt to look closer, not a judgement on the home.
On a sold home the comparison uses the Zestimate at lookup time, which Zillow may already have moved after the sale. In our recorded sold homes the gap was a few percent either way, so for sold homes it says little about how good the deal was.
Recorded example
{
"homeStatus": "FOR_SALE",
"price": 400000,
"zestimate": 403100,
"calculated": {
"price_vs_zestimate_pct": -0.77
}
}{
"homeStatus": "FOR_SALE",
"price": 15000000,
"zestimate": 13866100,
"calculated": {
"price_vs_zestimate_pct": 8.18
}
}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
- There is no Zestimate for the home.
- price is not a sale or asking price: the home is a rental, isn't listed, or has no disclosed price.
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 | {calculated: (.calculated | {price_vs_zestimate_pct})}'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"]
gap = home["calculated"]["price_vs_zestimate_pct"]
if gap is not None:
print(f"{abs(gap)}% {'below' if gap < 0 else 'above'} the Zestimate")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 gap = home.calculated.price_vs_zestimate_pct;
if (gap != null) console.log(`${Math.abs(gap)}% ${gap < 0 ? "below" : "above"} the Zestimate`);Common mistakes
- Reading a negative number as a bargain. The Zestimate is an estimate with its own error, and the listing may know things it doesn't.
- Comparing a sold home's figure with a listed home's figure as if both were asking prices.
- Recomputing it with a rounded Zestimate. Use the returned value.
Related
- zestimate
- price and currency
- Price per square foot
- Every field of the property endpoint
- Guide: Missing Zestimate data: handle null values correctly
- 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 vs Zestimate questions
What does a negative value mean?+
The price is that percent of the Zestimate below Zillow's estimate.
Is this a measure of value?+
No. It compares two numbers from the page: the price and Zillow's estimate.
Why is it null for a rental?+
A rental's price is a monthly rent, so comparing it with a home value doesn't apply.