Zillow API endpoint
Returns Zillow property details, including optional typed sections for address parts, listing attribution, pricing, history, media, facts, schools, and nearby homes when present.
/zillow/property/{zpid}MCP tool: zillow_property
Path parameters: zpid is required.
Returns Zillow public property details, including address, pricing, dimensions, media, estimates, listing status, broker, description, and structured property facts when present.
The response keeps the stable top-level property fields and adds richer optional sections when Zillow includes them:
address_parts: parsed street, city, state, ZIP, county, neighborhood, and subdivision.listing: MLS/listing identifiers, source/provider, broker and agent details, listing dates, time on Zillow, listing subtypes, attribution text, and open house windows.pricing: price, currency, price per square foot, Zestimate, rent Zestimate, HOA fee, tax rate, and estimated monthly payment.history: price and tax history rows.media: primary image, photo metadata, photo count, 3D/video flags, and virtual tour/video links.facts: typed values for public resoFacts, including dimensions, rooms, parking, heating/cooling, utilities, exterior/interior features, tax, parcel, builder, and community details. facts.additional preserves concise public labels that do not map to first-class fields yet.schools and nearby: assigned/nearby school details and compact nearby home summaries when they are present in the same public payload.| Field | Filled in, of 70 checked | Values in the sample |
|---|---|---|
| key | 70 | |
| label | 70 | “Appliances” and 69 other values |
| value | 70 | “Dishwasher, Disposal, Gas Range, Microwave, Refrigerator, W…” and 51 other values |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| zpid (path) | string | Yes | Zillow property id | 48749425 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/zillow/property/48749425" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"zpid": "19952447",
"address": "7862 Jellico Ave, Northridge, CA, 91325",
"url": "https://www.zillow.com/homedetails/19952447_zpid/",
"image": "https://photos.zillowstatic.com/photo.jpg",
"photos": [
"https://photos.zillowstatic.com/photo.jpg"
],
"price": 1299000,
"beds": 4,
"baths": 3,
"living_area": 2400,
"home_status": "FOR_SALE",
"home_type": "SINGLE_FAMILY",
"broker_name": "Example Realty",
"zestimate": 1250000,
"description": "Public property description.",
"address_parts": {
"street": "7862 Jellico Ave",
"city": "Northridge",
"state": "CA",
"zipcode": "91325",
"county": "Los Angeles County"
},
"listing": {
"mls_id": "SR123456",
"source": "CRMLS",
"broker_name": "Example Realty",
"agent_name": "Jane Agent",
"days_on_zillow": 9
},
"pricing": {
"price": 1299000,
"currency": "USD",
"price_per_square_foot": 541,
"zestimate": 1250000,
"rent_zestimate": 6500
},
"history": {
"price": [
{
"date": "2026-05-01",
"event": "Listed for sale",
"price": 1299000,
"source": "CRMLS"
}
],
"tax": [
{
"year": 2025,
"tax_paid": 12345,
"value": 1100000
}
]
},
"media": {
"primary_image": "https://photos.zillowstatic.com/photo.jpg",
"photo_count": 1,
"photos": [
{
"url": "https://photos.zillowstatic.com/photo.jpg",
"width": 1024,
"height": 768
}
],
"has_3d_model": true
},
"schools": [
{
"name": "Example Elementary",
"level": "Elementary",
"rating": 8,
"distance": 0.7,
"assigned": true
}
],
"facts": {
"year_built": 1951,
"lot_size": {
"value": 6062,
"unit": "sqft",
"text": "6,062 sqft"
},
"living_area": {
"value": 2400,
"unit": "sqft",
"text": "2,400 sqft"
},
"heating": [
"Central"
],
"cooling": [
"Central Air"
],
"parking_features": [
"Garage"
],
"architectural_style": "Ranch",
"laundry_features": [
"Inside"
],
"builder_name": "Example Builder"
}
}
}Request schema
No body schema
Response schema
#/definitions/zillow.PropertyResponse
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| address | string | No | Full address of the property. | |||
| address_parts | object | No | Address of the property split into street, city, state, ZIP code and similar parts. | |||
| address_parts.city | string | No | City of the property. | |||
| address_parts.county | string | No | County of the property. | |||
| address_parts.neighborhood | string | No | Neighborhood of the property. | |||
| address_parts.state | string | No | State of the property. | |||
| address_parts.street | string | No | Street address of the property. | |||
| address_parts.subdivision | string | No | Subdivision the property belongs to. | |||
| address_parts.zipcode | string | No | ZIP code of the property. | |||
| baths | number | No | Number of bathrooms. | |||
| beds | number | No | Number of bedrooms. | |||
| broker_name | string | No | Name of the brokerage that holds the listing. | |||
| currency | string | No | Currency of the price, as Zillow shows it. | |||
| days_on_zillow | integer | No | Number of days the listing has been on Zillow. | |||
| description | string | No | Listing description text. | |||
| detail_text | string | No | Short detail text Zillow shows with the listing. | |||
| facts | object | No | Structured facts about the home, such as size, rooms, parking, heating and tax. | |||
| facts.accessibility_features | array | No | Accessibility features of the home. | |||
| facts.additional | array | No | Further facts Zillow lists that have no dedicated field here, one entry per fact. | |||
| facts.additional[].key | string | No | Name of the fact in snake case, such as `year_built`. | |||
| facts.additional[].label | string | No | Readable label of the fact. | |||
| facts.additional[].value | string | No | Value of the fact, as text. | |||
| facts.appliances | array | No | Appliances included with the home. | |||
| facts.architectural_style | string | No | Architectural style of the home. | |||
| facts.basement | string | No | Description of the home's basement. | |||
| facts.bathrooms | number | No | Total number of bathrooms. | |||
| facts.bathrooms_full | integer | No | Number of full bathrooms. | |||
| facts.bathrooms_half | integer | No | Number of half bathrooms. | |||
| facts.bathrooms_one_quarter | integer | No | Number of one-quarter bathrooms. | |||
| facts.bathrooms_three_quarter | integer | No | Number of three-quarter bathrooms. | |||
| facts.bedrooms | number | No | Number of bedrooms. | |||
| facts.builder_model | string | No | Builder's model name of the home. | |||
| facts.builder_name | string | No | Name of the home's builder. | |||
| facts.community_features | array | No | Features of the community the home is in. | |||
| facts.construction_materials | array | No | Materials the home is built from. | |||
| facts.cooling | array | No | Cooling systems of the home. | |||
| facts.exterior_features | array | No | Exterior features of the home. | |||
| facts.fireplace_features | array | No | Fireplace features of the home. | |||
| facts.flooring | array | No | Flooring types in the home. | |||
| facts.foundation_details | array | No | Foundation details of the home. | |||
| facts.garage_spaces | number | No | Number of garage parking spaces. | |||
| facts.has_fireplace | boolean | No | Whether the home has a fireplace. | |||
| facts.heating | array | No | Heating systems of the home. | |||
| facts.hoa_fee | string | No | Homeowners association fee, as text shown by Zillow. | |||
| facts.home_type | string | No | Property type of the home, as Zillow labels it. | |||
| facts.laundry_features | array | No | Laundry features of the home. | |||
| facts.levels | array | No | Floor levels of the home. | |||
| facts.living_area | object | No | Interior living area of the home. | |||
| facts.living_area.text | string | No | Area together with its unit, as text. | |||
| facts.living_area.unit | string | No | Unit of `value`, such as `sqft` or `acres`. | |||
| facts.living_area.value | number | No | Area as a number, in the unit given by `unit`. | |||
| facts.lot_size | object | No | Lot size of the property. | |||
| facts.lot_size.text | string | No | Area together with its unit, as text. | |||
| facts.lot_size.unit | string | No | Unit of `value`, such as `sqft` or `acres`. | |||
| facts.lot_size.value | number | No | Area as a number, in the unit given by `unit`. | |||
| facts.lot_size_dimensions | string | No | Lot dimensions, as text. | |||
| facts.parcel_number | string | No | Assessor parcel number of the property. | |||
| facts.parking_capacity | integer | No | Total number of parking spaces. | |||
| facts.parking_features | array | No | Parking features of the home. | |||
| facts.patio_and_porch_features | array | No | Patio and porch features of the home. | |||
| facts.pool_features | array | No | Pool features of the property. | |||
| facts.property_sub_type | array | No | Property subtypes of the home, as Zillow labels them. | |||
| facts.roof | string | No | Roof type or material. | |||
| facts.rooms | array | No | Room types listed for the home. | |||
| facts.security_features | array | No | Security features of the home. | |||
| facts.sewer | array | No | Sewer arrangements of the property. | |||
| facts.spa_features | array | No | Spa features of the property. | |||
| facts.stories | number | No | Number of stories in the building. | |||
| facts.structure_type | string | No | Structure type of the home. | |||
| facts.tax_annual_amount | number | No | Annual property tax amount. | |||
| facts.tax_assessed_value | number | No | Assessed value of the property for tax purposes. | |||
| facts.utilities | array | No | Utilities available to or included with the home. | |||
| facts.view | array | No | Views the property has. | |||
| facts.water_source | array | No | Water source of the property. | |||
| facts.waterfront_features | array | No | Waterfront features of the property. | |||
| facts.year_built | integer | No | Year the home was built. | |||
| facts.zoning | string | No | Zoning designation of the property. | |||
| has_3d_model | boolean | No | Whether the listing has a 3D tour model. | |||
| has_video | boolean | No | Whether the listing has a video. | |||
| history | object | No | Price and tax history of the property. | |||
| history.price | array | No | Price history of the property, one entry per event. | |||
| history.price[].buyer_agent | string | No | Name of the buyer's agent for the event. | |||
| history.price[].change | number | No | Price change at this event, as Zillow reports it. | |||
| history.price[].date | string | No | Date of the price event. | |||
| history.price[].event | string | No | Kind of price event, such as `Listed for sale`. | |||
| history.price[].price | number | No | Price at this event, as a number. | |||
| history.price[].price_text | string | No | Price at this event, as text shown by Zillow. | |||
| history.price[].seller_agent | string | No | Name of the seller's agent for the event. | |||
| history.price[].source | string | No | Data source that reported the event, such as an MLS name. | |||
| history.price[].time | integer | No | Time of the price event, as the numeric timestamp Zillow gives. | |||
| history.tax | array | No | Property tax history, one entry per tax year. | |||
| history.tax[].tax_increase | number | No | Rate of increase in tax paid, as Zillow reports it. | |||
| history.tax[].tax_paid | number | No | Property tax paid for the year. | |||
| history.tax[].time | integer | No | Time of the tax record, as the numeric timestamp Zillow gives. | |||
| history.tax[].value | number | No | Assessed value of the property for the year. | |||
| history.tax[].value_increase | number | No | Rate of increase in assessed value, as Zillow reports it. | |||
| history.tax[].year | integer | No | Tax year of the record. | |||
| home_status | string | No | Listing status in Zillow's terms, such as `FOR_SALE` or `FOR_RENT`. | |||
| home_type | string | No | Property type, as Zillow labels it, such as `SINGLE_FAMILY`. | |||
| image | string | No | URL of the main listing photo. | |||
| is_showcase | boolean | No | Whether Zillow shows the listing as a showcase listing. | |||
| latitude | number | No | Latitude of the property, in decimal degrees. | |||
| listing | object | No | Listing details: identifiers, source, broker, agents, dates and open houses. | |||
| listing.agent_name | string | No | Name of the listing agent. | |||
| listing.agents | array | No | Agents named on the listing. | |||
| listing.agents[].email | string | No | Email address of the agent, as shown on the listing. | |||
| listing.agents[].name | string | No | Full name of the agent. | |||
| listing.agents[].phone | string | No | Phone number of the agent, as shown on the listing. | |||
| listing.agents[].type | string | No | Role of the agent on the listing, as Zillow labels it. | |||
| listing.attribution_text | string | No | Attribution or disclaimer text Zillow shows for the listing source. | |||
| listing.broker_name | string | No | Name of the brokerage that holds the listing. | |||
| listing.broker_phone | string | No | Phone number of the brokerage, as shown on the listing. | |||
| listing.date_posted | string | No | Date the listing was posted. | |||
| listing.date_updated | string | No | Date the listing was last updated. | |||
| listing.days_on_zillow | integer | No | Number of days the listing has been on Zillow. | |||
| listing.listing_id | string | No | Identifier of the listing, as Zillow returns it. | |||
| listing.mls_id | string | No | MLS number of the listing. | |||
| listing.open_houses | array | No | Scheduled open houses for the listing. | |||
| listing.open_houses[].end_time | string | No | End time of the open house. | |||
| listing.open_houses[].start_time | string | No | Start time of the open house. | |||
| listing.open_houses[].text | string | No | Open house time as Zillow shows it, for example `Sun 1-4 PM`. | |||
| listing.provider | string | No | Name of the provider that supplied the listing, as Zillow gives it. | |||
| listing.provider_listing_id | string | No | Listing id assigned by the listing provider. | |||
| listing.source | string | No | Source of the listing, such as the MLS name, as Zillow gives it. | |||
| listing.status | string | No | Listing status, as Zillow labels it, such as `FOR_SALE`. | |||
| listing.sub_types | array | No | Listing subtypes that apply to the listing, such as `is_FSBA`. | |||
| listing.time_on_zillow | string | No | How long the listing has been on Zillow, as text such as `9 days`. | |||
| listing.type | string | No | Listing type, as Zillow labels it. | |||
| listing_sub_type | array | No | Listing subtypes that apply to the listing, such as `is_FSBA`. | |||
| living_area | number | No | Interior living area in square feet. | |||
| longitude | number | No | Longitude of the property, in decimal degrees. | |||
| lot_area | number | No | Lot size, in the unit given by `lot_area_unit`. | |||
| lot_area_unit | string | No | Unit of `lot_area`, as Zillow gives it. | |||
| media | object | No | Photos, video and tour links of the listing. | |||
| media.has_3d_model | boolean | No | Whether the listing has a 3D tour model. | |||
| media.has_video | boolean | No | Whether the listing has a video. | |||
| media.photo_count | integer | No | Number of photos on the listing. | |||
| media.photos | array | No | Photos of the listing with their sizes. | |||
| media.photos[].height | integer | No | Photo height in pixels. | |||
| media.photos[].source | string | No | Source or caption of the photo, as Zillow gives it. | |||
| media.photos[].url | string | No | URL of the photo. | |||
| media.photos[].width | integer | No | Photo width in pixels. | |||
| media.primary_image | string | No | URL of the main listing photo. | |||
| media.video_url | string | No | URL of the listing video. | |||
| media.virtual_tour_url | string | No | URL of the virtual tour of the property. | |||
| nearby | array | No | Compact summaries of nearby homes. | |||
| nearby[].address | string | No | Address of the nearby home. | |||
| nearby[].baths | number | No | Number of bathrooms in the nearby home. | |||
| nearby[].beds | number | No | Number of bedrooms in the nearby home. | |||
| nearby[].home_status | string | No | Listing status of the nearby home, as Zillow labels it. | |||
| nearby[].living_area | number | No | Interior living area of the nearby home. | |||
| nearby[].price | number | No | Price of the nearby home, as a number. | |||
| nearby[].price_text | string | No | Price of the nearby home, as text shown by Zillow. | |||
| nearby[].url | string | No | Zillow page URL of the nearby home. | |||
| nearby[].zpid | string | No | Zillow property id of the nearby home. Use it with the property endpoint. | |||
| photos | array | No | URLs of the listing photos. | |||
| price | number | No | Listing price, as a number. The text Zillow shows is in `price_text`. | |||
| price_text | string | No | Listing price as text shown by Zillow, such as `$1,000,000` or `Contact Landlord`. | |||
| pricing | object | No | Price, estimates, fees and monthly payment of the property. | |||
| pricing.currency | string | No | Currency of the price, as Zillow shows it. | |||
| pricing.estimated_monthly_payment | number | No | Estimated monthly mortgage payment for the property. | |||
| pricing.monthly_hoa_fee | number | No | Monthly homeowners association fee. | |||
| pricing.price | number | No | Listing price, as a number. | |||
| pricing.price_per_square_foot | number | No | Listing price per square foot. | |||
| pricing.price_text | string | No | Listing price as text shown by Zillow. | |||
| pricing.property_tax_rate | number | No | Property tax rate, as Zillow reports it. | |||
| pricing.rent_zestimate | number | No | Zillow's estimated monthly rent for the property (Rent Zestimate). | |||
| pricing.zestimate | number | No | Zillow's estimated market value of the property (Zestimate). | |||
| rent_zestimate | number | No | Zillow's estimated monthly rent for the home (Rent Zestimate). | |||
| schools | array | No | Schools assigned to or near the property. | |||
| schools[].assigned | boolean | No | Whether the school is assigned to the property's address. | |||
| schools[].distance | number | No | Distance from the property to the school, as Zillow reports it. | |||
| schools[].district | string | No | Name of the school district. | |||
| schools[].grades | string | No | Grades the school serves, such as `K-5`. | |||
| schools[].id | string | No | Identifier of the school, as Zillow returns it. | |||
| schools[].level | string | No | School level, such as `Elementary`. | |||
| schools[].link | string | No | Zillow page URL of the school. | |||
| schools[].name | string | No | Name of the school. | |||
| schools[].rating | number | No | School rating, as Zillow shows it. | |||
| schools[].type | string | No | School type, such as `Public`. | |||
| status_text | string | No | Status label shown on the listing, such as `House for sale`. | |||
| url | string | No | Zillow page URL of the listing. | |||
| zestimate | number | No | Zillow's estimated market value of the home (Zestimate). | |||
| 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 |
| 404 | Not Found | #/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/property/48749425" \
-H "x-api-key: $CRAWLORA_API_KEY"