Zillow homes for sale

Homes for sale in an area on Zillow, one page at a time. Costs 1 credit.

GEThttps://api.realtycrawl.com/v1/zillow/listings

Homes for sale in an area on Zillow, one page at a time. Zillow shows at most 820 results per search, so we split large areas into smaller map boxes and page through them with next_cursor. A cache miss returns 202 and a job to poll.

Cost: 1 credit when complete. Failed calls are free.

#Inputs

  • location: Where to search. Send exactly one of: zip; city with state; bbox; or lat with lng and radius_mi. None, or more than one, returns 422 with param set to location.
  • filters: Optional filters for area searches.
  • paging: Paging. The first call sends no cursor. Send result.next_cursor to get the next page. It is null on the last page.
ParameterTypeDefaultDescription
zipstringFive-digit ZIP code.
citystringCity name. Send with state.
statestringTwo-letter state code. Send with city.
bboxstringMap box as west,south,east,north in decimal degrees.
latnumber, -90–90Center latitude. Send with lng and radius_mi.
lngnumber, -180–180Center longitude.
radius_minumber, 0.1–10Search radius in miles, up to 10.
min_priceinteger, 0–∞Lowest price in dollars. On rentals, the lowest monthly rent.
max_priceinteger, 0–∞Highest price in dollars. On rentals, the highest monthly rent.
beds_mininteger, 0–10Fewest bedrooms.
baths_minnumber, 0–10Fewest bathrooms.
sqft_mininteger, 0–∞Smallest living area in square feet.
sqft_maxinteger, 0–∞Largest living area in square feet.
property_typeOne or more of single_family, condo, townhouse, multi_family, land, manufactured, apartment, comma-separatedOne or more home types, separated by commas, like single_family,townhouse.
cursorstringThe next_cursor from the previous page. It only works on the route that made it and with the same inputs.

#Example

curl -G https://api.realtycrawl.com/v1/zillow/listings \  -H "Authorization: Bearer $REALTYCRAWL_KEY" \  -d city=Denver \  -d state=CO
Try it
LocationSend exactly one
Request
curl -G https://api.realtycrawl.com/v1/zillow/listings \  -H "Authorization: Bearer $REALTYCRAWL_KEY" \  -d city=Denver \  -d state=CO
Sign in to runFree account, no card.

#Fields

FieldTypeDescription
request_idstringID of this request. Poll it at /v1/jobs/{request_id}.
statusstring: pending, complete, failedpending, complete or failed. Always check it, even on HTTP 200.
creditsintegerCredits charged. The route's price when complete; 0 while pending, when failed, or for a page past the last one.
cachedbooleanTrue when the result came from our cache.
poll_urlstring or nullWhere to poll while pending. Null when complete.
errorobject or null{code, message, param} when failed. Null otherwise.
resultobject or nullThe result when complete. Null otherwise.
result.sourcestringSource of the rows, like zillow.
result.queryobjectThe inputs you sent, as we read them.
result.countintegerRows in data.
result.reported_totalinteger or nullTotal matches the source reported for the whole search, when it shows one.
result.next_cursorstring or nullSend as cursor for the next page. Null on the last page and on lookups.
result.collected_atstringWhen we read the source (ISO 8601, UTC).
result.schema_versionintegerVersion of the row schema. Changes only with a new, opt-in version.
result.completenessstring: complete, partialcomplete, or partial when the source returned less than a full page for a reason other than reaching the end.
result.summaryobject or nullMaths over this page for area searches. Null on lookups.
result.dataarrayThe rows.
result.field_notesarrayWhy a field is null: {field, reason, detail}. One note covers every row where it applies.
result.summaryobjectMaths over the rows on this page: priced_count, median_price, p25, p75, median_price_per_sqft. On rentals, prices are monthly rents.
result.data[].sourcestringWhich source the row came from. New sources may be added, so handle values you don't know.
result.data[].source_idstringThe source's own ID for the home or building. On Zillow, a home's ID is its zpid.
result.data[].source_urlstringPage for this home or building on the source site.
result.data[].listing_kindstring: home, buildinghome for one home; building for an apartment building whose units are listed together.
result.data[].statusstring: for_sale, pending, for_rent, sold, off_marketListing status.
result.data[].list_priceMoney or nullAsking price. Null on rentals.
result.data[].rent_monthlyMoney or nullMonthly rent. For a building, the lowest rent listed. Null on sale listings.
result.data[].rent_is_from_pricebooleanTrue when rent_monthly is the lowest of several unit rents.
result.data[].list_datestring or nullDate the current listing started (YYYY-MM-DD). Null when the source does not say.
result.data[].days_on_marketinteger or nullDays since the current listing started. Null when the source does not say.
result.data[].price_per_sqftnumber or nullList price or rent divided by living area. Null when either is missing.
result.data[].bedsnumber or nullBedrooms. Null for a building with mixed units.
result.data[].bathsnumber or nullBathrooms as the source counts them.
result.data[].living_area_sqftinteger or nullLiving area in square feet.
result.data[].property_typestring or null: single_family, condo, townhouse, multi_family, land, manufactured, apartment, otherHome type.
result.data[].addressAddressAddress of the home or building.
result.data[].locationLocation or nullMap point.
result.data[].broker_namestring or nullListing brokerage.
result.data[].agent_namestring or nullListing agent. Null when the source hides it.
result.data[].photo_countinteger or nullHow many photos the listing has. We never return or store the photos.
result.data[].extrasobjectFields only this source has. Each source lists its own on its docs page. {} when there are none.
result.data[].extras.home_type_rawstring or nullZillow's own home type code, like SINGLE_FAMILY.
result.data[].extras.days_on_zillowinteger or nullZillow's "days on Zillow" count.
result.data[].extras.zestimateMoney or nullZillow's Zestimate on the search card. Zillow's estimate, not ours.
result.data[].extras.rent_zestimateMoney or nullZillow's Rent Zestimate on the search card.
result.data[].extras.tax_assessed_valueMoney or nullZillow's "tax assessed value". Its basis can differ from the county assessed value in tax_history.
result.data[].extras.building_namestring or nullBuilding name, for listing_kind: building.
result.data[].extras.unitsarrayFor a building: {beds, rent_from (Money)} per unit type. Empty for a single home.