You need to ship a real estate feature that finds active listings in a city, within a radius, or bounded by a custom polygon—and you need it working this week. By the end of this guide you’ll be able to search live property data by location, coordinates, and polygons using the Real-Time Zillow Data API on Zyla API Hub, parse the response fields you care about (zpid, price, address, zestimate, bedrooms, bathrooms), and wire it into your app or an AI agent workflow.
What this API does and when to use it
The Real-Time Zillow Data API provides programmatic search across Zillow listings. You can:
- Search by location (city, county, neighborhood, or ZIP) with pagination and status filters.
- Search around a lat/long point with a diameter (miles or kilometers not specified by the hub docs; treat it as an abstract “search radius”).
- Search inside an arbitrary polygon for fine-grained geographic boundaries.
Typical integrations include property search UIs, lead routing based on listing geofences, daily comps refresh jobs, and alerting systems that trigger when new “FOR_SALE” listings appear within a polygon.
This API is available on Zyla API Hub, a marketplace with more than 10,000 public APIs under one account, one API key, and one subscription model.
Getting started on Zyla API Hub
To get an API key:
- Open the Real-Time Zillow Data API page and start a trial: Start 7-day trial on Real-Time Zillow Data API.
- Click Subscribe (or Start Free Trial when available) and obtain your API key.
- Use the key in the Authorization header as: Authorization: Bearer YOUR_API_KEY.
Billing on Zyla is subscription + quota (not pay-per-call). Check the API page for current access options and pricing.
Endpoints you can call today
All requests are GETs to Zyla Hub URLs and must include your Authorization header. Below are the three available endpoints with their exact URLs and parameters.
1) Search (by city/county/neighborhood/ZIP)
Method: GET
URL: https://zylalabs.com/api/7341/real-time-zillow-data-api/11667/search
Parameters:
- location (string, required): e.g., Los Angeles, CA
- page (string, optional): e.g., 2
- home_status (string, optional): e.g., FOR_SALE
Official curl (copy/paste):
curl -s -X GET "https://zylalabs.com/api/7341/real-time-zillow-data-api/11667/search?location=Los+Angeles%2C+CA&page=2&home_status=FOR_SALE" \
-H "Authorization: Bearer YOUR_API_KEY"
Official example response:
{
"status": "OK",
"request_id": "81fc95df-86f3-44b7-a3dc-1d81abcd7a97",
"parameters": {
"page": 2,
"home_status": "FOR_SALE",
"sort": "DEFAULT",
"listing_type": "BY_AGENT",
"location": "Los Angeles, CA"
},
"data": [
{
"zpid": "136702358",
"homeStatus": "FOR_SALE",
"detailUrl": "https://www.zillow.com/homedetails/24425-Woolsey-Canyon-Rd-SPC-39-Canoga-Park-CA-91304/136702358_zpid/",
"address": "24425 Woolsey Canyon Rd Spc 39, Canoga Park, CA 91304",
"streetAddress": "24425 Woolsey Canyon Rd Spc 39",
"city": "Canoga Park",
"state": "CA",
"country": "USA",
"zipcode": "91304",
"latitude": 34.235462,
"longitude": -118.661224,
"homeType": "MANUFACTURED",
"price": 99500,
"currency": "USD",
"zestimate": 178100,
"rentZestimate": 3439,
"taxAssessedValue": 21901,
"bathrooms": 2,
"bedrooms": 4,
"livingArea": 1818,
"daysOnZillow": 5,
"isFeatured": false,
"isPreforeclosureAuction": false,
"timeOnZillow": 498172000,
"isNonOwnerOccupied": true,
"isPremierBuilder": false,
"isZillowOwned": false,
"unit": "Spc 39",
"isShowcaseListing": false,
"listingSubType": {
"is_FSBA": true
},
"palsId": "3007_SR26162189",
"id": "136702358",
"rawHomeStatusCd": "ForSale",
"marketingStatusSimplifiedCd": "For Sale by Agent",
"imgSrc": "https://photos.zillowstatic.com/fp/1d8602169bd359c27caa6d6e25cdf662-p_e.jpg",
"hasImage": true,
"statusType": "FOR_SALE",
"statusText": "Home for sale",
"countryCurrency": "$",
"unformattedPrice": 99500,
"addressStreet": "24425 Woolsey Canyon Rd Spc 39",
"addressCity": "Canoga Park",
"addressState": "CA",
"addressZipcode": "91304",
"isUndisclosedAddress": false,
"shouldShowRequestOnPrice": false,
"beds": 4,
"baths": 2,
"area": 1818,
"latLong": {
"latitude": 34.235462,
"longitude": -118.661224
},
"flexFieldText": "5 days on…
What you’ll typically read from each item in data:
- zpid: unique listing identifier you can store in your DB and use as an idempotent key.
- price and currency: numeric asking price and its currency (e.g., USD).
- address, city, state, zipcode: display and geocoding info for your UI.
- bedrooms, bathrooms, livingArea: core specs for filters and badges.
- latitude, longitude (and latLong): map placement and proximity calculations.
- zestimate and rentZestimate: reference values for pricing context.
- homeStatus (e.g., FOR_SALE) and daysOnZillow: status and recency.
Pagination: use the page parameter to step through result pages. The response echoes the input page. Build your pagination UI/worker to increment page until your stop condition (such as no more results) based on your application logic.
2) Search by Coordinates (center point + diameter)
Method: GET
URL: https://zylalabs.com/api/7341/real-time-zillow-data-api/11668/search-by-coordinates
Parameters:
- long (string, required): e.g., -118.504744
- lat (string, required): e.g., 34.01822
- diameter (string, optional): e.g., 2
Official curl (copy/paste):
Example response (excerpt provided by the hub listing):
Use this when users move a map around a center point or when you geofence around a store, school, or transit station. The response includes the same core fields as the Search endpoint.
3) Search by Polygon (arbitrary geofence)
Method: GET
URL: https://zylalabs.com/api/7341/real-time-zillow-data-api/11669/search-by-polygon
Parameters:
- polygon (string, required): space-separated pairs of long lat coordinates (in that order), separated by commas. Example provided below.
Official curl (copy/paste):
Example response (excerpt provided by the hub listing):
Use this for neighborhood-shaped searches, school attendance zones, floodplains, or other non-standard boundaries. The polygon parameter is a single string; ensure you URL-encode it as in the example curl.
Authentication and headers
- Header: Authorization: Bearer YOUR_API_KEY
- No other headers are required in the hub documentation.
- All examples below target the hub URLs on zylalabs.com exactly as shown.
Minimal Python example: search Los Angeles “FOR_SALE” listings (page 2)
This example calls the Search endpoint and extracts the core fields a typical listing card needs. It mirrors the official curl’s parameters.
import os
import requests
API_KEY = os.getenv("ZYLA_API_KEY", "YOUR_API_KEY")
url = "https://zylalabs.com/api/7341/real-time-zillow-data-api/11667/search"
params = {
"location": "Los Angeles, CA",
"page": "2",
"home_status": "FOR_SALE"
}
headers = {
"Authorization": f"Bearer {API_KEY}"
}
resp = requests.get(url, params=params, headers=headers, timeout=30)
resp.raise_for_status()
payload = resp.json()
print("Status:", payload.get("status"))
print("Request ID:", payload.get("request_id"))
for item in payload.get("data", []):
listing = {
"zpid": item.get("zpid"),
"status": item.get("homeStatus") or item.get("statusType"),
"price": item.get("price"),
"currency": item.get("currency"),
"address": item.get("address"),
"city": item.get("city") or item.get("addressCity"),
"state": item.get("state") or item.get("addressState"),
"zipcode": item.get("zipcode") or item.get("addressZipcode"),
"bedrooms": item.get("bedrooms") or item.get("beds"),
"bathrooms": item.get("bathrooms") or item.get("baths"),
"livingArea": item.get("livingArea") or item.get("area"),
"latitude": item.get("latitude") or (item.get("latLong") or {}).get("latitude"),
"longitude": item.get("longitude") or (item.get("latLong") or {}).get("longitude"),
"zestimate": item.get("zestimate"),
"rentZestimate": item.get("rentZestimate"),
"detailUrl": item.get("detailUrl"),
"imgSrc": item.get("imgSrc"),
"daysOnZillow": item.get("daysOnZillow")
}
print(listing)
Notes:
- The response includes both normalized fields (e.g., bedrooms, bathrooms) and sometimes alternate names (beds, baths, area). The sample above checks both.
- Lat/long may appear both at the top level and inside latLong. The snippet falls back if needed.
- Use request_id for logging and correlation across retries.
Practical implementation details
- Pagination: the page parameter is a string in the hub interface. Increment it as strings (“1”, “2”, “3”, …). Stop when your application decides there are no more relevant results.
- Filtering by status: home_status accepts values like FOR_SALE (as shown). Keep your UI filters aligned with the allowable values you pass.
- Location queries: location accepts human-readable inputs such as “Los Angeles, CA”. For ZIP or neighborhood queries, pass those names directly in location.
- Coordinate vs polygon: prefer coordinates + diameter for simple circular searches (e.g., “within 2 units of this point”). Use polygons for accurate shapes around neighborhoods, school zones, or custom boundaries.
- Caching and polling: if you refresh periodically, store zpid and updated timestamps in your DB to de-duplicate. The response includes status and zestimate fields useful for change detection.
- Units and currency: prices appear in currency “USD” in the samples. Lot area units may be “sqft” in some responses. Display values as-is from the response for clarity.
Real-world use cases you can ship this week
- City search page: Use the Search endpoint with location to render cards. Add pagination with page=2,3,…
- “Near me” search: Use Search by Coordinates centered on the user’s device location. Adjust diameter to match your UX (e.g., a slider).
- Polygon alerting: Store user-defined polygons for “watch areas.” Run Search by Polygon on a schedule and email or push when a new FOR_SALE listing appears (compare by zpid).
- Map drawing tool: Let users draw a shape on a map and convert to a polygon parameter string (lon lat pairs). Call Search by Polygon and show the results as pins.
- Lead routing: Ingest results and route to agents based on listing city or polygon membership.
Calling this API from AI agents via MCP
Every API on Zyla can be invoked from an MCP-compatible client (Claude Code, Cursor, Windsurf, and others) through the MCP endpoint. Provide your key via the MCP URL query string and issue tool calls that map to the same hub endpoints and parameters you see above. See MCP for details. A typical flow:
- Configure your MCP client with the MCP endpoint and your key.
- Instruct the agent to call the Search or geospatial endpoints using the exact hub URLs and parameters shown in this article.
- Parse the same JSON fields (zpid, price, address, zestimate, latitude/longitude) for downstream tasks such as drafting property summaries or updating your CRM.
End-to-end examples for each search style
City/ZIP search
Use when you have a user-input city or postal code.
Parse data[].zpid, data[].price, data[].address, data[].bedrooms, data[].bathrooms, data[].livingArea for UI cards.
Geofence radius (map center)
Use after the user pans/zooms a map, or to cover a POI-centric radius.
Display pins using latitude/longitude and show detailUrl when a pin is clicked.
Polygon boundary
Use for school zones, HOA boundaries, or any custom draw-on-map workflows. Encode “lon lat” pairs, separated by commas, and URL-escape the string.
Operational concerns
- Error handling: log status and request_id for debugging. Implement backoff and retries per your app’s standards when transport errors occur.
- Quotas: your subscription governs monthly quotas. Monitor usage in your Zyla dashboard. There is no pay-per-call here; it’s subscription + quota.
- Data freshness: design your sync cadence based on your users’ expectations. If you need near-real-time updates, poll smaller geographic chunks more frequently.
- Normalization: persist a derived schema in your DB with the fields your UI needs, keyed by zpid, and maintain a source JSON column for auditability.
Where to go next
- Browse and subscribe on Zyla: Zyla API Hub.
- Integrate the Real-Time Zillow Data API now: Start 7-day trial on Real-Time Zillow Data API.
FAQ
Q1: What header do I need to authenticate?
A1: Use Authorization: Bearer YOUR_API_KEY. Get your key from the API’s page on Zyla after subscribing.
Q2: Can I filter only active listings?
A2: Yes. Pass home_status=FOR_SALE where supported (e.g., the Search endpoint). The response echoes your parameters so you can verify applied filters.
Q3: How do I handle pagination?
A3: Use the page parameter as a string and increment it for subsequent pages. The response’s parameters.page echoes the current page.
Q4: What’s the difference between coordinates and polygon searches?
A4: Coordinates + diameter creates a circular search around a single point. Polygon searches accept an arbitrary boundary (lon lat pairs) for precise geofences.
Q5: Is there a free plan?
A5: There is no free plan. You can start a trial from the API’s listing. Check the API page for current access options and pricing.
Ready to implement? Open the marketplace listing and start your trial to get an API key: Real-Time Zillow Data API. With one account on Zyla API Hub, you can call this and thousands of other real estate and housing APIs under a single key.