You need to search real estate listings around a precise lat/long, draw a polygon on a map, or bound results to a specific ZIP—and you need it working in your app this week. By the end of this guide, you’ll query properties by coordinates, polygon, or place name using the Real-Time Zillow Data API on Zyla API Hub, integrate results into your map or search UI, and know how to call the same endpoints from an AI agent via MCP.
What this API does and why it fits geolocation search
The Real-Time Zillow Data API returns live residential property data suitable for location-based discovery. You can:
- Search by place name (city, county, neighborhood, or ZIP).
- Search by geographic coordinates using a center point and a diameter.
- Search inside an arbitrary polygon for custom-drawn boundaries.
Each response includes fields developers actually render on a map or results list: zpid, address, latitude, longitude, price, homeStatus, bedrooms, bathrooms, livingArea, media references, and more. These are the same kinds of fields apps use to power draw-on-map search, “homes near me” experiences, and geo-fenced alerts.
You’ll find this API on Zyla API Hub, which offers more than 10,000 public APIs with a single account, one API key, and a subscription + quota model (not pay-per-call). The first API here provides a 7-day trial or 50 requests. Check the API page for current access options and pricing.
Getting started on Zyla API Hub
Open the Real-Time Zillow Data API listing on Zyla API Hub, click Subscribe or Start 7-day trial, and copy your API key. All calls below use the header:
- Authorization: Bearer YOUR_API_KEY
The platform uses subscription + quota. There is no Free Plan; the first API here includes a 7-day trial or 50 requests to help you build and test.
Endpoints you will use for geolocation
Below are the three geolocation-focused endpoints. Each is a GET to a Zyla Hub URL, and each returns a JSON payload with a parameters echo and a data array of listings.
1) Search by Coordinates
Use this when you have a center point and want listings within a specified diameter.
- Method: GET
- URL: https://zylalabs.com/api/7341/real-time-zillow-data-api/11668/search-by-coordinates
- Description: Search for properties in a specific geographic location, by a center latitude, longitude point and a diameter.
- Required parameters:
- long (string): -118.504744
- lat (string): 34.01822
- Optional parameters:
- diameter (string): 2
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"
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…
Notes for implementers:
- Use
latitudeandlongitudefor map markers. - Use
homeStatusandpricefor filters and badges. - The
parametersobject echoes back pagination and default filters where applicable.
2) Search by Polygon
Use this when the user draws a boundary on a map. You send ordered coordinate pairs to bound the search area.
- Method: GET
- URL: https://zylalabs.com/api/7341/real-time-zillow-data-api/11669/search-by-polygon
- Description: Search for properties in a specific geographic polygon area. Perfect for those who need more control over their search boundaries, this feature enables finding properties in complex or non-standard geographic areas. Support all filters and options available on Zillow.com.
- Required parameters:
- polygon (string): -118.50394248962402 34.02926010734425, -118.5084056854248 34.02926010734425, -118.51286888122559 34.028691046671696, -118.51527214050293 34.02570341552858, -118.51321220397949 34.02257340341831, -118.51750373840332 34.0215774662657, -118.51681709289551 34.017878168811684, -118.51286888122559 34.016455319170184, -118.51080894470215 34.013324966013194, -118.50789070129395 34.010621386310234, -118.50411415100098 34.008629219864694, -118.49982261657715 34.008486920473, -118.49570274353027 34.007063913440916, -118.4919261932373 34.00891381793271, -118.48849296569824 34.01119056813859, -118.4860897064209 34.014463289606894, -118.48471641540527 34.018020452464164, -118.48042488098145 34.01858958468914, -118.4780216217041 34.0215774662657, -118.47939491271973 34.0249920592766, -118.47681999206543 34.02797971546417, -118.47493171691895 34.03125178964367, -118.4721851348877 34.034381481654364, -118.47733497619629 34.035377268536706, -118.48231315612793 34.035377268536706, -118.48677635192871 34.035377268536706, -118.49141120910645 34.03495050416125, -118.49604606628418 34.034096968969656, -118.49621772766113 34.03054047990366, -118.50033760070801 34.02926010734425, -118.50239753723145 34.032532132148006, -118.50394248962402 34.02926010734425
Official cURL (copy/paste):
Example response:
Notes for implementers:
- Send the polygon as a comma-separated list of “longitude latitude” pairs.
- The API supports filters available on Zillow.com. Use polygon search for draw-on-map and neighborhood overlays.
3) Search by Location (city, neighborhood, ZIP)
Use this for standard place-based search where you already know a common location string.
- Method: GET
- URL: https://zylalabs.com/api/7341/real-time-zillow-data-api/11667/search
- Description: Search for properties by location (county, neighborhood, city, or zip code).
- Required parameters:
- location (string): Los Angeles, CA
- Optional parameters:
- page (string): 2
- home_status (string): FOR_SALE
Official cURL (copy/paste):
Official JSON (verbatim):
Developer takeaways:
parameters.pageshows the current page. Use this to implement “next page” pagination.- Fields like
imgSrc,detailUrl, andstatusTexthelp you render cards quickly.
One working code sample (Python) for coordinate search
The following Python example calls Search by Coordinates and prints a compact row for each property. It uses only the documented parameters and fields from the example above.
import os
import requests
API_KEY = os.getenv("ZYLALABS_API_KEY", "YOUR_API_KEY")
url = "https://zylalabs.com/api/7341/real-time-zillow-data-api/11668/search-by-coordinates"
params = {
"long": "-118.504744",
"lat": "34.01822",
"diameter": "2"
}
headers = {
"Authorization": f"Bearer {API_KEY}"
}
resp = requests.get(url, params=params, headers=headers, timeout=30)
resp.raise_for_status()
payload = resp.json()
print(f"Status: {payload.get('status')} Request ID: {payload.get('request_id')}")
p = payload.get("parameters", {})
print(f"Center: ({p.get('lat')}, {p.get('long')}) diameter={p.get('diameter')} page={p.get('page')}")
for item in payload.get("data", []):
zpid = item.get("zpid")
addr = item.get("address")
city = item.get("city")
state = item.get("state")
price = item.get("price")
beds = item.get("bedrooms")
baths = item.get("bathrooms")
lat = item.get("latitude")
lon = item.get("longitude")
status = item.get("homeStatus")
print(f"{zpid} | {status} | ${price} | {beds} bd / {baths} ba | {addr} | {city}, {state} | ({lat}, {lon})")
What to adapt:
- Bind
latandlongto your map’s center when the user pans/zooms. - Use
zpidas a stable identifier for deduplication or detail routing. - Echo
parameters.pageif you add paged fetching; cache by center and page to avoid extra calls.
Field guide to the JSON you’ll actually use
From the official samples above, most apps wire up these fields immediately:
data[].latitude,data[].longitude: marker placement on your map projection.data[].address,data[].city,data[].state,data[].zipcode: search result summaries and detail headers.data[].priceanddata[].currency: pricing display.data[].homeStatus(e.g., FOR_SALE): filtering and badges.data[].bedrooms,data[].bathrooms,data[].livingArea: filters and list-item facts.data[].imgSrcanddata[].detailUrl: hero images and external detail deep-links (present in the location-search sample).parameters.page: use when adding pagination UX.
Time-saving implementation notes:
- Caching: cache by the full request URL (including query string) to reduce repeat calls when users pan slightly but stay within the same area.
- Pagination: the response includes a
parameters.pageecho. Keep it in your state for “Load more.” - Geo search UX: for coordinate and polygon searches, recompute queries only after idle or drag-end events to avoid excessive requests.
Practical geolocation use cases you can ship this week
- “Homes near me” mobile feature: get the device location, query Search by Coordinates, and drop markers for visible listings.
- Draw-on-map search: let users sketch custom boundaries and post the resulting coordinate pairs to Search by Polygon.
- Neighborhood spotlight: predefine polygons for neighborhoods and query inside each as the user flips through tabs.
- ZIP browse + refine: start with Search by Location for a city or ZIP, then switch to Search by Coordinates as users pan/zoom.
Calling this API from an AI agent via MCP
If you use MCP-compatible clients (Claude Code, Cursor, Windsurf, or any MCP client), your agent can call the same HTTPS endpoints through Zyla’s MCP gateway at https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY. This lets the agent invoke the Real-Time Zillow Data API with your existing key and stream results back into the IDE or runtime. See MCP for adapter details.
Integration checklist
- Get your key from the API listing and store it securely (e.g., server-side or managed secrets in CI/CD).
- Pick your search mode:
- Coordinates for center + diameter proximity.
- Polygon for user-drawn boundaries.
- Location for city/ZIP/neighborhood bootstrap.
- Render the essential fields:
- Map markers from
latitude/longitude. - Cards from
address,price,bedrooms,bathrooms,livingArea, and image URLs when present.
- Map markers from
- Implement pagination using the
pageparameter and its echo inparameters.pageif you list many results. - Cache queries by full URL; invalidate when the map center or polygon changes.
Troubleshooting tips
- Authorization failures: ensure the header is exactly
Authorization: Bearer YOUR_API_KEY. - Empty results: verify your
location,lat/long, orpolygonvalues and any optional filters likehome_status. - Polygon formatting: send a comma-separated list of “longitude latitude” pairs in order; ensure URL encoding for spaces/commas when building the query string.
- Latency: defer requests until drag-end or debounce your input to avoid flooding calls during map pans.
Frequently asked questions
How do I paginate results?
Use the page query parameter on endpoints that accept it (e.g., Search by Location) and read parameters.page from the response to track your current page.
Which fields should I store as identifiers?zpid is the stable property identifier. Use it for dedupe, bookmarks, and routing to detail screens.
Can I filter for specific listing statuses?
Where supported, pass home_status (e.g., FOR_SALE) exactly as shown in the endpoint parameters and verify it in the parameters echo of the response.
What units are used for price and area?
The payload includes price with currency (e.g., USD) and may include livingArea or lot fields where present. Render values as returned; do not assume conversions.
Can I call this from an AI agent?
Yes. Use the MCP gateway at https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY from any MCP-compatible client. See the MCP page for details.
Ship it
Grab your API key and start querying properties by coordinates, polygon, or place name. Create your account and start your 7-day trial on the Real-Time Zillow Data API here: Start 7-day trial on Real-Time Zillow Data API. With more than 10,000 public APIs on Zyla API Hub, you can expand your geolocation features without adding more auth flows or billing systems.