Zillow property data API
Search listings by city or ZIP, open property pages for their facts, or list agents and their profiles. Each home or agent comes back as one record.
- Record types
propertyagent- Fields
- 163
- From
- $2.40 per 1,000 records
What you can request
Set mode in the request body to choose what comes back; without it the request runs as search. Each mode reads the inputs listed next to it.
| Mode | What comes back | Inputs | Billed as |
|---|---|---|---|
search | One record per listing in the results for each location or search URL. With | locations listingFilter searchUrls | property |
property | The detail of each property URL or zpid. | propertyUrls | property-detail |
fullProperty | Every fact on the property page, including price and tax history. | propertyUrls | property-full |
agents | One record per agent in the directory for each location. With | locations | agent |
agent | The full profile for each agent URL. | agentProfileUrls | agent-detail |
Every request also takes maxItems (records for the whole request) and maxItemsPerInput (records per search, URL or name).
Datasets
These Zillow record types have their own page, with their own example record, fields, options and prices.
| Dataset | One record is | Fields | From, per 1,000 |
|---|---|---|---|
| Agents | One real-estate agent, as a directory listing card or a full profile-page fetch. | 42 | $2.60 |
Example request and record
The request below is the one this example record answers. The names, usernames, photos and contact details of people in it are fictional. Long values in the record are shortened.
curl
curl -X POST https://api.urakimon.com/records/zillow \
-H "x-api-key: $URAKIMON_API_KEY" \
-H "content-type: application/json" \
-d '{
"mode": "fullProperty",
"propertyUrls": ["19947712", "19935286", "20779037"]
}'Python
import os
import requests
res = requests.post(
"https://api.urakimon.com/records/zillow",
headers={"x-api-key": os.environ["URAKIMON_API_KEY"]},
json={
"mode": "fullProperty",
"propertyUrls": [
"19947712",
"19935286",
"20779037"
]
},
)
res.raise_for_status()
records = res.json()["records"]Node
const res = await fetch("https://api.urakimon.com/records/zillow", {
method: "POST",
headers: {
"x-api-key": process.env.URAKIMON_API_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"mode": "fullProperty",
"propertyUrls": ["19947712", "19935286", "20779037"]
}),
});
const { records } = await res.json();{ "source": "zillow", "type": "property", "zpid": 20779037, "url": "https://www.zillow.com/homedetails/352-N-Orlando-Ave-Los-Angeles-CA-90048/20779037_zpid/", "status": "FOR_SALE", "price": 2495000, "zestimate": 2408900, "rentZestimate": 5942, "beds": 3, "baths": 2, "livingArea": 1709, "livingAreaUnits": "Square Feet", "lotSize": 6255, "lotAreaValue": 6255.216, "lotAreaUnits": "Square Feet", "yearBuilt": 1929, "homeType": "SINGLE_FAMILY", "address": "352 N Orlando Ave, Los Angeles, CA, 90048", "street": "352 N Orlando Ave", "city": "Los Angeles", "state": "CA", "zipcode": "90048", "neighborhood": null, "neighborhoodName": "Mid City West", "subdivision": null, "community": null, "country": "USA", "timeZone": "America/Los_Angeles", "currency": "USD", "latitude": 34.07758, "longitude": -118.37284, "staticMapUrl": "https://maps.googleapis.com/maps/api/staticmap?center=34.07758,-118.37284&zoom=15&size=768x576&maptype=roadmap&key=AIzaSyARFMLB1na-BBWf7_…", "hiResImageUrl": "https://photos.zillowstatic.com/fp/48e1fc9883d25915e686494d9c6668d2-p_f.jpg", "description": "Courtyard Spanish in prime Beverly Grove, brimming with charm, character, and a beautifully considered mix of classic architectural detai…", "hoaFee": null, "parking": 0, "pricePerSqft": 1460, "daysOnZillow": 10, "favoriteCount": 138, "pageViewCount": 1280, "id": 20779037, "event": "property-full", "collectedAt": "2026-09-20T19:43:47.342Z"}Fields
Every record starts with the same envelope: source, type, event, id, url, collectedAt. What the envelope means. The tables below list the fields after it, read from real Zillow records. Where a field does not apply to an item it is null or an empty list, not left out. "Present on" names the billed events a field comes with when it is not on every record of that type.
property records
One property listing: a search-result card, a detail-page fetch, or a premium full-data fetch. Billed as property or property-detail or property-full.
| Field | Type | What it holds | Present on |
|---|---|---|---|
zpid | integer | string | Zillow's property ID. | All |
status | string | Listing status, for example "FOR_SALE", or null. | All |
price | integer | Listing price, in `currency`, or null. | All |
zestimate | integer | null | Zillow's automated home-value estimate, in currency units, or null when the source has none for this listing. | All |
rentZestimate | integer | null | Zillow's estimated monthly rent, in currency units, or null. | All |
beds | integer | null | Number of bedrooms, or null. | All |
baths | integer | null | Number of bathrooms, or null. | All |
livingArea | integer | null | Living area size in square feet, or null. | All |
livingAreaUnits | null | string | Unit for livingArea on a detail/full record, for example "Square Feet" (detail/full records only). | Only property-detail, property-full |
lotSize | integer | Lot size in square feet, or null. | Only property-detail, property-full |
lotAreaValue | number | Lot size on a detail/full record, unit given in lotAreaUnits (detail/full records only). | Only property-detail, property-full |
lotAreaUnits | string | Unit for lotAreaValue on a detail/full record, for example "Square Feet" (detail/full records only). | Only property-detail, property-full |
yearBuilt | integer | null | Year the property was built, or null. | All |
homeType | string | Property type, for example "SINGLE_FAMILY", or null. | All |
address | string | Full formatted street address as one string. | All |
street | string | Street address only, or null. | All |
city | string | City name, or null. | All |
state | string | State or region code, or null. | All |
zipcode | string | Postal code, or null. | All |
neighborhood | null | Neighborhood name from the property's address, or null. | Only property-detail, property-full |
neighborhoodName | null | string | Neighborhood name from Zillow's neighborhood region data, or null. | Only property-detail, property-full |
subdivision | null | string | Subdivision name, or null. | Only property-detail, property-full |
community | null | Named community the property belongs to, or null. | Only property-detail, property-full |
country | string | Country code, for example "USA", or null. | All |
timeZone | string | IANA time zone of the property, for example "America/Chicago", or null. | Only property-detail, property-full |
currency | string | Currency code all money fields on this record are in, for example "USD", or null. | All |
latitude | number | Latitude in decimal degrees, or null. | All |
longitude | number | Longitude in decimal degrees, or null. | All |
staticMapUrl | null | string | URL of the property's static map image, or null. | Only property-detail, property-full |
hiResImageUrl | string | URL of the listing's largest hero photo, or null. | Only property-detail, property-full |
description | string | Full listing description text, or null. | Only property-detail, property-full |
hoaFee | null | string | HOA fee amount, or null when not applicable. | Only property-detail, property-full |
parking | integer | null | Number of parking spaces, or null. | Only property-detail, property-full |
pricePerSqft | integer | null | Price per square foot, or null. | Only property-detail, property-full |
daysOnZillow | integer | Number of days the listing has been on Zillow, as an integer, or null. | All |
favoriteCount | integer | null | Number of Zillow users who favorited the listing, or null. | Only property-detail, property-full |
pageViewCount | integer | null | Number of page views the listing has received, or null. | Only property-detail, property-full |
statusType | string | Machine-readable status code, for example "FOR_SALE" (search records only). | Only property, property-detail |
priceText | string | Listing price as Zillow's own display text, or null (search records only). | Only property, property-detail |
livingAreaUnit | null | string | Unit for livingArea on a search card: "sqft" when livingArea is present, else null (search records only). | Only property, property-detail |
lotArea | integer | number | Lot size on a search card, unit given in lotAreaUnit, or null (search records only). | Only property, property-detail |
lotAreaUnit | string | Unit for lotArea on a search card, for example "acres" (search records only). | Only property, property-detail |
taxAssessedValue | integer | Most recent tax-assessed value, or null (search records only). | Only property, property-detail |
unit | null | string | Unit or apartment number, or null (search records only). | Only property, property-detail |
brokerName | string | Listing brokerage's name, or null. | All |
listingAgent | null | Listing agent's name as shown on the search card, or null (search records only). | Only property, property-detail |
marketingStatus | string | Listing's marketing status text, for example "For Sale by Agent", or null. | Only property, property-detail |
isZillowOwned | boolean | null | True when Zillow owns the property, null when the source doesn't say. | All |
isFSBO | boolean | True when the listing is for sale by the owner. | All |
isFSBA | boolean | True when the listing is for sale by an agent. | All |
isNewHome | boolean | True when the search card is tagged as a new home (search records only). | Only property, property-detail |
isComingSoon | boolean | True when the listing is marked coming soon. | All |
isPending | boolean | True when the sale is pending. | All |
isForeclosure | boolean | True when the property is in foreclosure. | All |
isBankOwned | boolean | True when the property is bank-owned. | All |
isAuction | boolean | True when the listing is an auction. | All |
isOpenHouse | boolean | True when the listing has a scheduled open house. | All |
priceChange | null | Most recent price change amount, negative for a reduction, or null. | All |
priceChangedAt | null | Date of the most recent price change, ISO 8601, or null. | All |
priceReduction | null | Price-reduction label shown on the search card, for example "$10,000 (Sep 12)", or null (search records only). | Only property, property-detail |
soldAt | null | string | Date the property last sold, ISO 8601, or null. | All |
image | string | URL of the search card's primary photo, or null (search records only). | Only property, property-detail |
hasImage | boolean | True when the search card has a photo (search records only). | Only property, property-detail |
hasVideo | boolean | True when the listing includes a video. | Only property, property-detail |
has3DModel | boolean | True when the listing includes a 3D walkthrough. | Only property, property-detail |
carouselPhotos | array | Photo URLs for the search card's photo carousel; empty when the card has none (search records only). | Only property, property-detail |
cardType | string | Search card's content type, or null (search records only). | Only property, property-detail |
cardHighlight | string | Highlight label shown on the search card, for example "Showcase", or null (search records only). | Only property, property-detail |
isShowcaseListing | boolean | True when the search card is a Zillow Showcase listing (search records only). | Only property, property-detail |
isFeaturedListing | boolean | True when the search card is a featured listing (search records only). | Only property, property-detail |
searchLocation | null | string | The location string the search was run for, or null. | Only property, property-detail |
totalResultCount | integer | Total number of results for the search this record came from, as an integer (search records only). | Only property, property-detail |
tourViewCount | integer | null | Number of virtual tour views, or null. | Only property-detail, property-full |
lastSoldPrice | integer | null | Most recent sale price, or null. | Only property-detail, property-full |
contingentListingType | null | Type of sale contingency in effect, or null when the sale isn't contingent. | Only property-detail, property-full |
mortgageRates | null | object | {thirtyYearFixed, fifteenYearFixed, fiveYearArm} current mortgage rate percentages Zillow shows for the listing, or null. | Only property-detail, property-full |
building | null | Building-level details for a multi-unit property, or null when not applicable. | Only property-detail, property-full |
mlsId | string | MLS listing ID, or null. | Only property-detail, property-full |
mlsName | string | Name of the MLS the listing is sourced from, or null. | Only property-detail, property-full |
agentName | null | string | Listing agent's name, or null. | Only property-detail, property-full |
agentPhone | null | string | Listing agent's phone number, or null. | Only property-detail, property-full |
listingPhone | null | string | Listing contact phone number, or null. | Only property-detail, property-full |
agentEmail | null | Listing agent's email address, or null. | Only property-detail, property-full |
agentLicense | null | string | Listing agent's license number, or null. | Only property-detail, property-full |
coAgentName | null | string | Co-listing agent's name, or null. | Only property-detail, property-full |
coAgentPhone | null | string | Co-listing agent's phone number, or null. | Only property-detail, property-full |
brokerPhone | null | string | Listing brokerage's phone number, or null. | Only property-detail, property-full |
listingProvider | string | Name of the MLS or provider supplying the listing, or null. | Only property-detail, property-full |
buyerAgentName | null | Buyer's agent name from the property's most recent sale, or null. | Only property-detail, property-full |
buyerBrokerageName | null | Buyer's brokerage name from the property's most recent sale, or null. | Only property-detail, property-full |
mlsDisclaimer | null | string | MLS's required disclaimer text, or null. | Only property-detail, property-full |
lastCheckedAt | null | string | When the listing attribution was last checked, ISO 8601, null when unknown. | Only property-detail, property-full |
lastUpdatedAt | null | string | When the listing was last updated, ISO 8601, null when unknown. | Only property-detail, property-full |
photoCount | integer | Total number of photos, as an integer. | Only property-detail, property-full |
photos | array | Photo URLs, the largest rendition of each. | Only property-detail, property-full |
photoCaptions | array | Photos that carry a caption, as {url, caption}; empty when none do. | Only property-detail, property-full |
priceHistory | array | Price and status events: {date, price, event, pricePerSqft, priceChangeRate, source, buyerAgent, sellerAgent}. | Only property-detail, property-full |
taxHistory | array | Annual tax records: {year, taxPaid, value, taxIncreaseRate, valueIncreaseRate}. | Only property-detail, property-full |
schools | array | Nearby schools: {name, rating, level, distance, grades, link}. | Only property-detail, property-full |
openHouses | array | Scheduled open houses, as {startAt, endAt, description} (ISO 8601 times); empty when none. | Only property-detail, property-full |
zestimateHistory | array | Points in Zillow's historical value-estimate chart: {date, value} (date is YYYY-MM-DD). | Only property-detail, property-full |
zestimateRange | null | object | {lowPercent, highPercent} Zestimate confidence range as percent offsets from the estimate, or null. | Only property-detail, property-full |
monthlyHoaFee | null | string | Monthly HOA or association fee, or null. | Only property-detail, property-full |
propertyTaxRate | null | number | Property tax rate, or null. | Only property-detail, property-full |
county | null | string | County name, or null. | Only property-detail, property-full |
countyFIPS | null | string | County FIPS code, or null. | Only property-detail, property-full |
parcelId | null | string | Tax parcel number, or null. | Only property-detail, property-full |
walkScore | null | Walk Score's walkability score, 0 to 100, or null. | Only property-detail, property-full |
walkScoreDescription | null | Text description of the walk score, or null. | Only property-detail, property-full |
bikeScore | null | Walk Score's bike score, 0 to 100, or null when not available. | Only property-detail, property-full |
bikeScoreDescription | null | Text description of the bike score, or null. | Only property-detail, property-full |
transitScore | null | Walk Score's transit score, 0 to 100, or null. | Only property-detail, property-full |
transitScoreDescription | null | Text description of the transit score, or null. | Only property-detail, property-full |
nearbyHomes | array | Nearby or similar homes: zpid, address, price, beds, baths, homeType, livingArea, homeStatus, city, state, zipcode, coordinates, image, url. | Only property-detail, property-full |
downPaymentAssistance | null | object | {eligible} down-payment assistance eligibility for this listing, or null when Zillow reports none. | Only property-detail, property-full |
monthlyPayment | integer | null | Estimated total monthly payment: Zillow's own estimate when available, else a computed 20%-down estimate; null if price or rate is missing. | Only property-detail, property-full |
marketingTagline | null | Marketing tagline written by the listing agent, or null. | Only property-detail, property-full |
mlsStatus | array | The listing's true sub-type flags from the MLS feed, for example "is_FSBA", or null. | Only property-detail, property-full |
isNewConstruction | boolean | True when the property is new construction (detail/full records). | Only property-detail, property-full |
facts | object | The listing's raw MLS facts, keyed by field name (e.g. bedrooms, heating, roofType); varies by property; null when none. | Only property-detail, property-full |
atAGlanceFacts | array | null | Highlight facts shown at the top of the listing, as {factLabel, factValue} pairs, for example type, year built, heating. | Only property-detail, property-full |
otherFacts | array | null | Additional facts beyond atAGlanceFacts, as {factLabel, factValue} pairs, or null. | Only property-detail, property-full |
factCount | integer | Number of individual facts contained in `facts`, as an integer. | Only property-detail, property-full |
agent records
One real-estate agent, as a directory listing card or a full profile-page fetch. Billed as agent or agent-detail. 42 fields. Zillow agents: every field, an example record and the options
Zillow data pricing
You pay once for each record you receive, at the price of the event it carries. A request that returns nothing costs nothing.
| Event | Per 1,000 records | Per record |
|---|---|---|
property | $2.40 | $0.00240 |
agent | $2.60 | $0.00260 |
property-detail | $3.20 | $0.00320 |
property-full | $54.00 | $0.05400 |
agent-detail | $72.00 | $0.07200 |
Freshness and limits
- Records are collected when you send the request. Each one carries
collectedAt, the UTC time it was read. POST /records/zillowreturns up to 500 records in one response. Ask for more and it answers413; send the same body toPOST /jobs/zillowinstead.- A request without
maxItemsreturns up to 100 records. - Your key's rate limit and quotas apply to every source.