To get Zillow property data programmatically, use Scavio's Zillow API. POST /api/v1/zillow/search with a city or ZIP returns about 41 listings a page for sale, for rent or recently sold, each with price, beds, baths, square footage, coordinates and, for sales, the sale date. /api/v1/zillow/property adds one home's Zestimate, Rent Zestimate, last sale and dated price history, and /api/v1/zillow/reviews returns a Zillow agent's profile and reviews. Every call costs 1 credit, about $0.002 on the Growth plan billed yearly, and needs no Zillow partner approval.
Zillow Group's own Zestimates and MLS Listings APIs are for approved businesses and invited MLS partners, so they are the wrong tool if you need data from an API key today.
Step 1: Search a city's listings
curl -s https://api.scavio.dev/api/v1/zillow/search \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"location": "Denver, CO"}'On October 27, 2026 this returned 41 of 3,838 Denver homes for sale in one call. Each row carries the zpid, price, address, coordinates, beds, baths, living area, lot size, home type, days on Zillow, broker and photos. Nine rows had a dated price cut, for example "price_change": -149900 on September 24. location also takes a ZIP, a county slug or a pasted zillow.com search URL, and page moves through the rest; next_page_url is null on the last page.
Step 2: Pull recently sold homes for comps
curl -s https://api.scavio.dev/api/v1/zillow/search \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"location": "Denver, CO", "listing_status": "sold"}'This returned 41 of 30,359 Denver sales, all closed between October 23 and 26. One row, as captured (gallery trimmed):
{
"zpid": "13284039",
"url": "https://www.zillow.com/homedetails/2665-Dahlia-St-Denver-CO-80207/13284039_zpid/",
"status": "SOLD",
"home_status": "RECENTLY_SOLD",
"price": 875000,
"price_display": "$875,000",
"zestimate": 878600,
"rent_zestimate": 3617,
"tax_assessed_value": 914900,
"address": "2665 Dahlia Street, Denver, CO 80207",
"zipcode": "80207",
"beds": 3,
"baths": 2,
"living_area": 2550,
"lot_area_value": 4310,
"lot_area_unit": "sqft",
"home_type": "SINGLE_FAMILY",
"date_sold": "2026-10-26T07:00:00.000Z",
"days_on_zillow": 1
}Divide price by living_area and you have price per square foot: the median single-family sale that week was $349 in Denver, $582 in Seattle and $185 in Columbus. One caveat: in non-disclosure states Zillow shows no sale price, and the same search for Austin returned 41 sales with price null on every one. To filter comps, use the city name with beds_min, home_type, sqft_min or days_on_zillow; a bare ZIP only works without filters.
Step 3: Get one property with its Zestimate and price history
curl -s https://api.scavio.dev/api/v1/zillow/property \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"zpid": "13288820"}'zpid takes the id from a search row or a full Zillow listing URL. The captured response, trimmed to the valuation fields and the first three of 17 price points:
{
"zpid": "13288820",
"home_status": "FOR_SALE",
"home_type": "SINGLE_FAMILY",
"price": 1350000,
"price_per_square_foot": 368,
"price_change": -149900,
"price_change_date": "2026-09-24",
"zestimate": 1330900,
"rent_zestimate": 5376,
"last_sold_price": 1600000,
"date_sold": "2024-07-02T00:00:00.000Z",
"street_address": "1521 Monaco Parkway",
"city": "Denver",
"neighborhood": "South Park Hill",
"bedrooms": 5,
"bathrooms": 4,
"living_area": 3669,
"year_built": 1937,
"mls_id": "9275500",
"price_history": [
{ "date": "2026-09-24", "price": 1350000 },
{ "date": "2026-08-27", "price": 1499900 },
{ "date": "2026-07-16", "price": 1550000 }
]
}The full history runs back to 2000 and shows the home listed at $1,750,000 on March 5, 2026 before six reductions. The response also carries the description, 47 photos, a fact sheet, the brokerage and the MLS name. A brand-new listing may have no Zestimate yet: a Phoenix house listed that day came back with zestimate null and its May 2026 sale at $247,500.
Step 4: Check rentals for yield
curl -s https://api.scavio.dev/api/v1/zillow/search \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"location": "Denver, CO", "listing_status": "for_rent"}'Denver returned 41 of 14,586 rentals. Apartment buildings come back as one row with is_building: true, a rent range (min_rent 1715, max_rent 2370 for IMT Cherry Creek), available_unit_count and a units list by bedroom count. Pass the building's url to /property for floor plans and amenities. Pair rents with the Rent Zestimate from Step 3 to estimate gross yield by neighbourhood.
Step 5: Look up an agent's reviews
curl -s https://api.scavio.dev/api/v1/zillow/reviews \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"screen_name": "ericbramlett"}'This endpoint is about agents, not properties. For Eric Bramlett's team it returned a rating of 5 across 2,223 reviews, split into 1,213 "helped me buy" and 426 "helped me sell", 5,851 past sales, 146 for-sale listings, an active Texas license, service areas, the team roster and the latest reviews with text, date and four sub-ratings (local knowledge, process expertise, responsiveness, negotiation skills).
All three endpoints
| Endpoint | What it returns | Credits |
|---|---|---|
/api/v1/zillow/search | For-sale, rental or sold listings, about 41 a page, with 25 filters and 14 sorts | 1 |
/api/v1/zillow/property | One home: Zestimate, Rent Zestimate, last sale, price history, facts, photos, brokerage | 1 |
/api/v1/zillow/reviews | An agent's profile, rating, review counts and reviews | 1 |
For a side-by-side of every option, including Zillow's own partner APIs, see the best Zillow property data APIs.
Getting started
- Sign up at dashboard.scavio.dev/sign-up: 50 free credits, no card required.
- Copy your API key from the dashboard.
- Send a POST to
/api/v1/zillow/searchwith a city and your key in theAuthorizationheader.
Try the Zillow API free in the playground first, try the no-code Zillow scraper and bulk Zestimate lookup, or call it from Claude and other agents through the MCP server.
Reference: Zillow API overview · search · property · agent reviews
Frequently asked questions
What is a property data API?
A property data API returns facts about homes as structured data you can call from code: listing price and status, beds, baths and square footage, sale history, tax values and automated value estimates. Some, such as Zillow's partner APIs or RentCast, are built on licensed feeds and public records; others, such as Scavio's Zillow API, return what Zillow's public pages show.
Can I get the Zestimate through an API?
Yes. Scavio's /api/v1/zillow/property returns zestimate and rent_zestimate for one home by zpid or listing URL, and search rows carry them when Zillow shows them on the results page. Zillow's own Zestimates API is for approved commercial use and is requested through Zillow Group's developer portal.
Does Zillow show sold prices in every state?
No. In non-disclosure states such as Texas, Zillow publishes no sale price. A sold search for Austin on October 27, 2026 returned 41 sales with beds, baths, square footage and mostly a Zestimate, and a price on none of them, while Denver, Phoenix, Atlanta, Seattle and Columbus each returned a price on all 41.
How much does Zillow data cost with Scavio?
Every Zillow call costs 1 credit: about $0.002 on the Growth plan billed yearly and $0.0043 on the $30 monthly Project plan. A search page returns about 41 listings, so a city's newest sales cost one credit. New accounts get 50 free credits with no card.
Can I search Zillow rentals through an API?
Yes. Set listing_status to for_rent on Scavio's search. Denver returned 41 of 14,586 rentals, with apartment buildings carrying a rent range, unit prices by bedroom count and available unit count. On rentals, min_price and max_price filter monthly rent.