Zillow APIzillow.com ↗
Access Zillow listings, Zestimates, rental properties, recently sold homes, agent profiles, and current mortgage rates via a single REST API.
What is the Zillow API?
This API exposes 8 endpoints covering Zillow's core real estate data: for-sale listings, rentals, recently sold properties, property details, Zestimates, agent search, agent profiles, and current mortgage rates. The search_homes_for_sale endpoint returns up to 41 listings per page with fields including zpid, zestimate, hdpData, and map coordinates. Each endpoint accepts straightforward inputs like a location string or Zillow property ID.
curl -X GET 'https://api.parse.bot/scraper/3545a162-9da0-4ae1-b11a-025f91f6e0d6/search_homes_for_sale?location=Los+Angeles%2C+CA' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace zillow-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""
Zillow Real Estate API - Usage Example
Search homes for sale, rentals, recently sold properties, agents, and mortgage rates.
"""
from parse_apis.zillow_real_estate_api import Zillow, Location, UpstreamError
zillow = Zillow()
# Get current mortgage rates — single-page, no pagination needed.
for rate in zillow.rates.list(limit=5):
print(rate.name, rate.interest_rate, rate.apr, rate.loan_type)
# Search homes for sale in Seattle — limit caps total items fetched.
for listing in zillow.listings.search_for_sale(location=Location.SEATTLE__WA, limit=3):
print(listing.address, listing.price, listing.beds, listing.baths)
# Search recently sold in Chicago — .first() takes one item for drill-down.
sold = zillow.listings.search_recently_sold(location=Location.CHICAGO__IL, limit=1).first()
if sold:
print(sold.address, sold.price, sold.zestimate, sold.status_type)
# Search agents in Los Angeles
for agent in zillow.agents.search(location=Location.LOS_ANGELES__CA, limit=3):
print(agent.card_title, agent.is_top_agent, agent.card_action_link)
# Typed error handling around a search call.
try:
for listing in zillow.listings.search_for_rent(location=Location.NEW_YORK__NY, limit=2):
print(listing.address, listing.status_type)
except UpstreamError as exc:
print(f"upstream issue: {exc}")
print("exercised: rates.list / listings.search_for_sale / listings.search_recently_sold / agents.search / listings.search_for_rent")
Search for homes listed for sale in a specific location. Returns paginated results with up to 41 listings per page, including property details like price, beds, baths, area, zestimate, and location coordinates. Uses Zillow's internal search API which resolves the location string to a geographic region.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based) |
| locationrequired | string | City and state, ZIP code, or neighborhood (e.g., 'Seattle, WA', '90210', 'Capitol Hill, Seattle, WA') |
{
"type": "object",
"fields": {
"listings": "array of listing objects with property details (zpid, address, price, beds, baths, area, zestimate, detailUrl, hdpData)",
"mapResults": "array of map listing objects with coordinates and summary data",
"totalPages": "integer, total number of pages available",
"currentPage": "integer, current page number",
"regionState": "object with regionInfo and regionBounds coordinates",
"resultsPerPage": "integer, number of results per page (typically 41)",
"totalResultCount": "integer, total number of matching properties"
},
"sample": {
"data": {
"listings": [
{
"area": 1930,
"beds": 3,
"zpid": "49142999",
"baths": 2,
"price": "$1,000,000",
"address": "6506 17th Avenue NE, Seattle, WA 98115",
"hdpData": {
"homeInfo": {
"zpid": 49142999,
"homeType": "SINGLE_FAMILY",
"zestimate": 972500,
"rentZestimate": 4267
}
},
"detailUrl": "https://www.zillow.com/homedetails/6506-17th-Ave-NE-Seattle-WA-98115/49142999_zpid/",
"statusType": "FOR_SALE",
"unformattedPrice": 1000000
}
],
"mapResults": [],
"totalPages": 20,
"currentPage": 1,
"regionState": {
"regionInfo": [
{
"regionId": 16037,
"regionName": "Seattle",
"regionType": 6
}
],
"regionBounds": {
"east": -122.224433,
"west": -122.465159,
"north": 47.734145,
"south": 47.491912
}
},
"resultsPerPage": 41,
"totalResultCount": 2781
},
"status": "success"
}
}About the Zillow API
Property Search and Listings
Three search endpoints cover the main listing types on Zillow. search_homes_for_sale, search_homes_for_rent, and search_recently_sold all accept a location parameter (city/state, ZIP code, or neighborhood string) and an optional page integer for pagination. Each returns a listings array, a mapResults array with coordinates, totalResultCount, totalPages, and a regionState object containing regionInfo and regionBounds. Rental listings include building-level fields like buildingName, price ranges, and availability counts. Recently sold listings include soldPrice and dateSold.
Property Details and Zestimates
get_property_details takes a zpid (Zillow property ID) and returns a full property record: price, structured address, bedrooms, bathrooms, homeType, yearBuilt, livingArea, zestimate, and a resoFacts object with additional structured facts. get_zestimate is a lighter endpoint that returns only the zestimate (estimated market value in dollars) and rentZestimate (estimated monthly rent) alongside the address and homeType.
Agents and Mortgage Rates
search_agents accepts a location string and returns paginated agent profile cards with fields including cardTitle, cardActionLink, isTopAgent, profileData, and reviewInformation, plus a resultsFound count and titleLocation. get_agent_profile takes a username slug and returns a detailed profile with salesStats (count all-time, count last year, price range), serviceAreas, pastSales, licenses, reviews, and forSaleListings. get_mortgage_rates requires no inputs and returns a rates array of current loan products — conventional fixed (10/15/20/30-year), FHA, VA, jumbo, and ARM — each with interestRate, apr, loanType, loanTerm, and feesAndPoints.
The Zillow API is a managed, monitored endpoint for zillow.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when zillow.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official zillow.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a home value tracker that polls
get_zestimatefor a portfolio of zpids and logszestimatechanges over time. - Aggregate rental inventory in a target market using
search_homes_for_rentwith ZIP code inputs and surface price ranges and availability counts. - Populate a recently sold comps table for appraisal tools using
search_recently_soldfieldssoldPrice,dateSold, andzestimate. - Generate agent lead lists by querying
search_agentsfor a metro and filtering onisTopAgentandreviewInformation. - Display current mortgage rate comparison tables from
get_mortgage_rates, broken down byloanTypeandloanTerm. - Link property listings to full agent bios by combining
get_property_detailslisting metadata withget_agent_profilesales stats. - Map for-sale inventory in a neighborhood by consuming
mapResultscoordinates fromsearch_homes_for_sale.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Zillow have an official developer API?+
What does `get_property_details` return beyond price and address?+
get_property_details returns homeType, bedrooms, bathrooms, yearBuilt, livingArea, zestimate, and a resoFacts object with structured property facts. The address field is broken into streetAddress, city, state, and zipcode. It does not return listing history or price-change history; those are not exposed by this endpoint.How many listings does each search endpoint return per page?+
search_homes_for_sale, search_homes_for_rent, search_recently_sold) returns up to 41 listings per page. The response includes totalPages and totalResultCount so you can iterate through all available pages using the page parameter.Does the API expose historical Zestimate data or price history for a property?+
zestimate and rentZestimate via get_zestimate, and the current listing price via get_property_details. Historical valuation timeseries and price-change records are not included. You can fork this API on Parse and revise it to add an endpoint targeting Zillow's property history data.Can I filter for-sale listings by price range, home type, or number of bedrooms?+
location and page as inputs; filtering by price range, homeType, or bedroom count is not a supported parameter. The returned listing objects do include price, beds, baths, and homeType fields, so client-side filtering is possible. You can fork this API on Parse and revise the endpoint to add server-side filter parameters.