Zillow API endpoint
Returns Zillow listing search results. Callers may pass a region id from autocomplete or a complete map bounding box. When a usable region-only response contains no listings, the API retries with a viewport from Zillow's search page if that page selects exactly the same region. Upstream blocks and transport failures return errors.
/zillow/searchMCP tool: zillow_search
Query parameters: location is required. Search accepts either region_id from autocomplete or a complete map bounding box in west, east, south, and north. Zillow autocomplete does not currently return bounds. When a usable region-only response contains no listings, the API retries with that region's complete numeric viewport bounds. This is best-effort: if that fails, the original search error is preserved. Upstream blocks and transport failures return errors. Callers may pass their own complete viewport bounds to skip the lookup. region_type, page, and status are optional. page defaults to 1; region_type defaults to 6 when region_id is present; status defaults to for_sale and accepts for_sale, for_rent, or sold (the aliases sale/for-sale and rent/for-rent are also accepted).
When complete bounds and region_id are both provided, the API sends only mapBounds upstream and omits regionSelection. Zillow page-state bounds are search viewports, not official municipal boundaries. Live bounds-only calls returned 497 listings in two Austin sample-rectangle probes; the new resolver uses the viewport Zillow itself returns for the requested region.
Returns Zillow public listing search results, including pricing, listing status, brokerage, estimate, media, lot, and listing subtype fields when Zillow includes them. With status=for_rent, results can include rental buildings (apartment communities, url under /apartments/). Zillow gives those no single price, bed count, or numeric zpid, so for building rows zpid is a latitude--longitude identifier, is_building is true, and beds/baths/living_area are omitted. Instead the row carries building_name, availability_count (available units), units (one entry per bedroom tier: beds, where 0 is a studio, plus that tier's starting price and price_text, e.g. $2,657+), price (the lowest tier's starting rent, always the number shown in price_text) and, when Zillow reports one, price_max (the highest rent; never below price or any tier's price). Buildings that only list Call per tier have no numeric price; their price_text is Call and each unit keeps Call. Single units listed as Contact Landlord likewise have price_text and no numeric price.
| Field | Filled in, of 484 checked | Values in the sample |
|---|---|---|
| zpid | 484 | |
| address | 484 | |
| url | 484 | zillow.com |
| image | 484 | photos.zillowstatic.com |
| price | 484 | 194,900 to 400,000,000, median 1,395,000 |
| price_text | 484 | “$895,000” and 324 other values |
| currency | 484 | USD (482), $ (2) |
| beds | 482 | 1 to 40, median 4 |
| baths | 482 | 1 to 59, median 3 |
| living_area | 477 | 720 to 70,000, median 1,976 |
| latitude | 484 | |
| longitude | 484 | |
| home_status | 484 | FOR_SALE in all 484 |
| status_text | 484 | House for sale (389), Condo for sale (26), New construction (23) and 5 more |
| home_type | 484 | SINGLE_FAMILY (415), CONDO (26), TOWNHOUSE (22) and 3 more |
| broker_name | 483 | “Berkshire Hathaway HomeServices California Properties” and 184 other values |
| zestimate | 405 | 192,100 to 93,708,900, median 1,312,600 |
| rent_zestimate | 355 | 1,461 to 14,121, median 4,921 |
| days_on_zillow | 484 | -1 to 7, median -1 |
| lot_area | 482 | 0.25 to 10,842.08, median 4,199.18 |
| lot_area_unit | 482 | sqft (286), acres (196) |
| is_showcase | 95 | true in 95 of 95 |
| has_3d_model | 136 | true in 136 of 136 |
| photos | 2 | median 26 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| location | string | Yes | Display location | Los Angeles, CA | |
| page | integer | No | 1-based page | ||
| status | string | No | Search context. Allowed values: for_sale (aliases sale, for-sale), for_rent (aliases rent, for-rent), sold Allowed values: for_sale, sale, for-sale, for_rent, rent, for-rent, sold. | ||
| region_id | integer | No | Zillow region id from autocomplete, used when complete bounds are not provided | ||
| region_type | integer | No | Zillow region type from autocomplete, used with region_id fallback | ||
| west | number | No | Map west bound; pass with east, south, and north | ||
| east | number | No | Map east bound; pass with west, south, and north | ||
| south | number | No | Map south bound; pass with west, east, and north | ||
| north | number | No | Map north bound; pass with west, east, and south | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/zillow/search?location=Los+Angeles%2C+CA&page=1&status=for_sale" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"location": "Los Angeles, CA",
"page": 1,
"results": [
{
"zpid": "12345678",
"address": "1 Market St",
"url": "https://www.zillow.com/homedetails/1-Market-St/12345678_zpid/",
"image": "https://photos.zillowstatic.com/photo.jpg",
"photos": [
"https://photos.zillowstatic.com/photo.jpg"
],
"price": 1000000,
"price_text": "$1,000,000",
"currency": "USD",
"beds": 2,
"baths": 1.5,
"living_area": 900,
"latitude": 34.02,
"longitude": -118.41,
"home_status": "FOR_SALE",
"status_text": "House for sale",
"home_type": "SINGLE_FAMILY",
"broker_name": "Example Realty",
"zestimate": 990000,
"days_on_zillow": 7,
"lot_area": 5000,
"lot_area_unit": "sqft",
"has_3d_model": true,
"listing_sub_type": [
"is_FSBA"
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/zillow.SearchResponse
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| location | string | No | San Francisco, CA | Location that was searched. | ||
| page | integer | No | 1 | Page number returned. | ||
| results | array | No | Listings and rental buildings matching the search. | |||
| results[].address | string | No | Full address of the property. | |||
| results[].availability_count | integer | No | 6 | Number of units currently available in the rental building. | ||
| results[].baths | number | No | Number of bathrooms. | |||
| results[].beds | number | No | Number of bedrooms. | |||
| results[].broker_name | string | No | Name of the brokerage that holds the listing. | |||
| results[].building_name | string | No | The Pointe at Warner Center | Name of the rental building, such as an apartment community. | ||
| results[].currency | string | No | Currency of the price, as Zillow shows it. | |||
| results[].days_on_zillow | integer | No | Number of days the listing has been on Zillow. | |||
| results[].detail_text | string | No | Short detail text Zillow shows with the listing. | |||
| results[].has_3d_model | boolean | No | Whether the listing has a 3D tour model. | |||
| results[].has_video | boolean | No | Whether the listing has a video. | |||
| results[].home_status | string | No | Listing status in Zillow's terms, such as `FOR_SALE` or `FOR_RENT`. | |||
| results[].home_type | string | No | Property type, as Zillow labels it, such as `SINGLE_FAMILY`. | |||
| results[].image | string | No | URL of the main listing photo. | |||
| results[].is_building | boolean | No | true | Whether the row is a rental building rather than a single listing. | ||
| results[].is_showcase | boolean | No | Whether Zillow shows the listing as a showcase listing. | |||
| results[].latitude | number | No | Latitude of the property, in decimal degrees. | |||
| results[].listing_sub_type | array | No | Listing subtypes that apply to the listing, such as `is_FSBA`. | |||
| results[].living_area | number | No | Interior living area in square feet. | |||
| results[].longitude | number | No | Longitude of the property, in decimal degrees. | |||
| results[].lot_area | number | No | Lot size, in the unit given by `lot_area_unit`. | |||
| results[].lot_area_unit | string | No | Unit of `lot_area`, as Zillow gives it. | |||
| results[].photos | array | No | URLs of the listing photos. | |||
| results[].price | number | No | Listing price, as a number. The text Zillow shows is in `price_text`. | |||
| results[].price_max | number | No | 3157 | Highest monthly rent in the rental building. | ||
| results[].price_text | string | No | Listing price as text shown by Zillow, such as `$1,000,000` or `Contact Landlord`. | |||
| results[].rent_zestimate | number | No | Zillow's estimated monthly rent for the home (Rent Zestimate). | |||
| results[].status_text | string | No | Status label shown on the listing, such as `House for sale`. | |||
| results[].units | array | No | Unit tiers of the rental building, one per bedroom count, with starting rent. | |||
| results[].units[].beds | number | No | 1 | Number of bedrooms of this unit tier. `0` means a studio. | ||
| results[].units[].price | number | No | 2657 | Starting monthly rent of this unit tier. | ||
| results[].units[].price_text | string | No | $2,657+ | Starting rent of this unit tier as shown by Zillow, such as `$2,657+`. | ||
| results[].url | string | No | Zillow page URL of the listing. | |||
| results[].zestimate | number | No | Zillow's estimated market value of the home (Zestimate). | |||
| results[].zpid | string | No | 12345678 | Zillow property id. Use it with the property endpoint. Rental building rows carry a `latitude--longitude` identifier instead. |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/zillow/search?location=Los+Angeles%2C+CA&page=1&status=for_sale" \
-H "x-api-key: $CRAWLORA_API_KEY"