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
property agent
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.

ModeWhat comes backInputsBilled as
searchOne record per listing in the results for each location or search URL.

With fetchPropertyDetails: true, each result's property page is merged in and billed as property-detail.

locations listingFilter searchUrlsproperty
propertyThe detail of each property URL or zpid.propertyUrlsproperty-detail
fullPropertyEvery fact on the property page, including price and tax history.propertyUrlsproperty-full
agentsOne record per agent in the directory for each location.

With fetchAgentProfiles: true, each agent's profile is merged in and the agent is billed as agent-detail instead.

locationsagent
agentThe full profile for each agent URL.agentProfileUrlsagent-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.

DatasetOne record isFieldsFrom, per 1,000
AgentsOne 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();
Example Zillow recordDownload
{  "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.

123 fields on property records, besides the envelope
FieldTypeWhat it holdsPresent on
zpidinteger | stringZillow's property ID.All
statusstringListing status, for example "FOR_SALE", or null.All
priceintegerListing price, in `currency`, or null.All
zestimateinteger | nullZillow's automated home-value estimate, in currency units, or null when the source has none for this listing.All
rentZestimateinteger | nullZillow's estimated monthly rent, in currency units, or null.All
bedsinteger | nullNumber of bedrooms, or null.All
bathsinteger | nullNumber of bathrooms, or null.All
livingAreainteger | nullLiving area size in square feet, or null.All
livingAreaUnitsnull | stringUnit for livingArea on a detail/full record, for example "Square Feet" (detail/full records only).Only property-detail, property-full
lotSizeintegerLot size in square feet, or null.Only property-detail, property-full
lotAreaValuenumberLot size on a detail/full record, unit given in lotAreaUnits (detail/full records only).Only property-detail, property-full
lotAreaUnitsstringUnit for lotAreaValue on a detail/full record, for example "Square Feet" (detail/full records only).Only property-detail, property-full
yearBuiltinteger | nullYear the property was built, or null.All
homeTypestringProperty type, for example "SINGLE_FAMILY", or null.All
addressstringFull formatted street address as one string.All
streetstringStreet address only, or null.All
citystringCity name, or null.All
statestringState or region code, or null.All
zipcodestringPostal code, or null.All
neighborhoodnullNeighborhood name from the property's address, or null.Only property-detail, property-full
neighborhoodNamenull | stringNeighborhood name from Zillow's neighborhood region data, or null.Only property-detail, property-full
subdivisionnull | stringSubdivision name, or null.Only property-detail, property-full
communitynullNamed community the property belongs to, or null.Only property-detail, property-full
countrystringCountry code, for example "USA", or null.All
timeZonestringIANA time zone of the property, for example "America/Chicago", or null.Only property-detail, property-full
currencystringCurrency code all money fields on this record are in, for example "USD", or null.All
latitudenumberLatitude in decimal degrees, or null.All
longitudenumberLongitude in decimal degrees, or null.All
staticMapUrlnull | stringURL of the property's static map image, or null.Only property-detail, property-full
hiResImageUrlstringURL of the listing's largest hero photo, or null.Only property-detail, property-full
descriptionstringFull listing description text, or null.Only property-detail, property-full
hoaFeenull | stringHOA fee amount, or null when not applicable.Only property-detail, property-full
parkinginteger | nullNumber of parking spaces, or null.Only property-detail, property-full
pricePerSqftinteger | nullPrice per square foot, or null.Only property-detail, property-full
daysOnZillowintegerNumber of days the listing has been on Zillow, as an integer, or null.All
favoriteCountinteger | nullNumber of Zillow users who favorited the listing, or null.Only property-detail, property-full
pageViewCountinteger | nullNumber of page views the listing has received, or null.Only property-detail, property-full
statusTypestringMachine-readable status code, for example "FOR_SALE" (search records only).Only property, property-detail
priceTextstringListing price as Zillow's own display text, or null (search records only).Only property, property-detail
livingAreaUnitnull | stringUnit for livingArea on a search card: "sqft" when livingArea is present, else null (search records only).Only property, property-detail
lotAreainteger | numberLot size on a search card, unit given in lotAreaUnit, or null (search records only).Only property, property-detail
lotAreaUnitstringUnit for lotArea on a search card, for example "acres" (search records only).Only property, property-detail
taxAssessedValueintegerMost recent tax-assessed value, or null (search records only).Only property, property-detail
unitnull | stringUnit or apartment number, or null (search records only).Only property, property-detail
brokerNamestringListing brokerage's name, or null.All
listingAgentnullListing agent's name as shown on the search card, or null (search records only).Only property, property-detail
marketingStatusstringListing's marketing status text, for example "For Sale by Agent", or null.Only property, property-detail
isZillowOwnedboolean | nullTrue when Zillow owns the property, null when the source doesn't say.All
isFSBObooleanTrue when the listing is for sale by the owner.All
isFSBAbooleanTrue when the listing is for sale by an agent.All
isNewHomebooleanTrue when the search card is tagged as a new home (search records only).Only property, property-detail
isComingSoonbooleanTrue when the listing is marked coming soon.All
isPendingbooleanTrue when the sale is pending.All
isForeclosurebooleanTrue when the property is in foreclosure.All
isBankOwnedbooleanTrue when the property is bank-owned.All
isAuctionbooleanTrue when the listing is an auction.All
isOpenHousebooleanTrue when the listing has a scheduled open house.All
priceChangenullMost recent price change amount, negative for a reduction, or null.All
priceChangedAtnullDate of the most recent price change, ISO 8601, or null.All
priceReductionnullPrice-reduction label shown on the search card, for example "$10,000 (Sep 12)", or null (search records only).Only property, property-detail
soldAtnull | stringDate the property last sold, ISO 8601, or null.All
imagestringURL of the search card's primary photo, or null (search records only).Only property, property-detail
hasImagebooleanTrue when the search card has a photo (search records only).Only property, property-detail
hasVideobooleanTrue when the listing includes a video.Only property, property-detail
has3DModelbooleanTrue when the listing includes a 3D walkthrough.Only property, property-detail
carouselPhotosarrayPhoto URLs for the search card's photo carousel; empty when the card has none (search records only).Only property, property-detail
cardTypestringSearch card's content type, or null (search records only).Only property, property-detail
cardHighlightstringHighlight label shown on the search card, for example "Showcase", or null (search records only).Only property, property-detail
isShowcaseListingbooleanTrue when the search card is a Zillow Showcase listing (search records only).Only property, property-detail
isFeaturedListingbooleanTrue when the search card is a featured listing (search records only).Only property, property-detail
searchLocationnull | stringThe location string the search was run for, or null.Only property, property-detail
totalResultCountintegerTotal number of results for the search this record came from, as an integer (search records only).Only property, property-detail
tourViewCountinteger | nullNumber of virtual tour views, or null.Only property-detail, property-full
lastSoldPriceinteger | nullMost recent sale price, or null.Only property-detail, property-full
contingentListingTypenullType of sale contingency in effect, or null when the sale isn't contingent.Only property-detail, property-full
mortgageRatesnull | object{thirtyYearFixed, fifteenYearFixed, fiveYearArm} current mortgage rate percentages Zillow shows for the listing, or null.Only property-detail, property-full
buildingnullBuilding-level details for a multi-unit property, or null when not applicable.Only property-detail, property-full
mlsIdstringMLS listing ID, or null.Only property-detail, property-full
mlsNamestringName of the MLS the listing is sourced from, or null.Only property-detail, property-full
agentNamenull | stringListing agent's name, or null.Only property-detail, property-full
agentPhonenull | stringListing agent's phone number, or null.Only property-detail, property-full
listingPhonenull | stringListing contact phone number, or null.Only property-detail, property-full
agentEmailnullListing agent's email address, or null.Only property-detail, property-full
agentLicensenull | stringListing agent's license number, or null.Only property-detail, property-full
coAgentNamenull | stringCo-listing agent's name, or null.Only property-detail, property-full
coAgentPhonenull | stringCo-listing agent's phone number, or null.Only property-detail, property-full
brokerPhonenull | stringListing brokerage's phone number, or null.Only property-detail, property-full
listingProviderstringName of the MLS or provider supplying the listing, or null.Only property-detail, property-full
buyerAgentNamenullBuyer's agent name from the property's most recent sale, or null.Only property-detail, property-full
buyerBrokerageNamenullBuyer's brokerage name from the property's most recent sale, or null.Only property-detail, property-full
mlsDisclaimernull | stringMLS's required disclaimer text, or null.Only property-detail, property-full
lastCheckedAtnull | stringWhen the listing attribution was last checked, ISO 8601, null when unknown.Only property-detail, property-full
lastUpdatedAtnull | stringWhen the listing was last updated, ISO 8601, null when unknown.Only property-detail, property-full
photoCountintegerTotal number of photos, as an integer.Only property-detail, property-full
photosarrayPhoto URLs, the largest rendition of each.Only property-detail, property-full
photoCaptionsarrayPhotos that carry a caption, as {url, caption}; empty when none do.Only property-detail, property-full
priceHistoryarrayPrice and status events: {date, price, event, pricePerSqft, priceChangeRate, source, buyerAgent, sellerAgent}.Only property-detail, property-full
taxHistoryarrayAnnual tax records: {year, taxPaid, value, taxIncreaseRate, valueIncreaseRate}.Only property-detail, property-full
schoolsarrayNearby schools: {name, rating, level, distance, grades, link}.Only property-detail, property-full
openHousesarrayScheduled open houses, as {startAt, endAt, description} (ISO 8601 times); empty when none.Only property-detail, property-full
zestimateHistoryarrayPoints in Zillow's historical value-estimate chart: {date, value} (date is YYYY-MM-DD).Only property-detail, property-full
zestimateRangenull | object{lowPercent, highPercent} Zestimate confidence range as percent offsets from the estimate, or null.Only property-detail, property-full
monthlyHoaFeenull | stringMonthly HOA or association fee, or null.Only property-detail, property-full
propertyTaxRatenull | numberProperty tax rate, or null.Only property-detail, property-full
countynull | stringCounty name, or null.Only property-detail, property-full
countyFIPSnull | stringCounty FIPS code, or null.Only property-detail, property-full
parcelIdnull | stringTax parcel number, or null.Only property-detail, property-full
walkScorenullWalk Score's walkability score, 0 to 100, or null.Only property-detail, property-full
walkScoreDescriptionnullText description of the walk score, or null.Only property-detail, property-full
bikeScorenullWalk Score's bike score, 0 to 100, or null when not available.Only property-detail, property-full
bikeScoreDescriptionnullText description of the bike score, or null.Only property-detail, property-full
transitScorenullWalk Score's transit score, 0 to 100, or null.Only property-detail, property-full
transitScoreDescriptionnullText description of the transit score, or null.Only property-detail, property-full
nearbyHomesarrayNearby or similar homes: zpid, address, price, beds, baths, homeType, livingArea, homeStatus, city, state, zipcode, coordinates, image, url.Only property-detail, property-full
downPaymentAssistancenull | object{eligible} down-payment assistance eligibility for this listing, or null when Zillow reports none.Only property-detail, property-full
monthlyPaymentinteger | nullEstimated 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
marketingTaglinenullMarketing tagline written by the listing agent, or null.Only property-detail, property-full
mlsStatusarrayThe listing's true sub-type flags from the MLS feed, for example "is_FSBA", or null.Only property-detail, property-full
isNewConstructionbooleanTrue when the property is new construction (detail/full records).Only property-detail, property-full
factsobjectThe 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
atAGlanceFactsarray | nullHighlight facts shown at the top of the listing, as {factLabel, factValue} pairs, for example type, year built, heating.Only property-detail, property-full
otherFactsarray | nullAdditional facts beyond atAGlanceFacts, as {factLabel, factValue} pairs, or null.Only property-detail, property-full
factCountintegerNumber 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.

EventPer 1,000 recordsPer 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/zillow returns up to 500 records in one response. Ask for more and it answers 413; send the same body to POST /jobs/zillow instead.
  • A request without maxItems returns up to 100 records.
  • Your key's rate limit and quotas apply to every source.

Next steps