Redfin homes for sale
Homes for sale on Redfin in a ZIP code or map area, one page of up to 100 at a time. Page with `next_cursor`. A cache miss returns 202 and a job to poll. Costs 1 credit.
GET
https://api.realtycrawl.com/v1/redfin/listingsHomes for sale on Redfin in a ZIP code or map area, one page of up to 100 at a time. Page 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;bbox; orlatwithlngandradius_mi. None, or more than one, returns 422 withparamset tolocation. - filters: Optional filters for area searches.
- paging: Paging. The first call sends no cursor. Send
result.next_cursorto get the next page. It is null on the last page.
| Parameter | Type | Default | Description |
|---|---|---|---|
zip | string | Five-digit ZIP code. | |
bbox | string | Map box as west,south,east,north in decimal degrees. | |
lat | number, -90–90 | Center latitude. Send with lng and radius_mi. | |
lng | number, -180–180 | Center longitude. | |
radius_mi | number, 0.1–10 | Search radius in miles, up to 10. | |
min_price | integer, 0–∞ | Lowest price in dollars. On rentals, the lowest monthly rent. | |
max_price | integer, 0–∞ | Highest price in dollars. On rentals, the highest monthly rent. | |
beds_min | integer, 0–10 | Fewest bedrooms. | |
baths_min | number, 0–10 | Fewest bathrooms. | |
sqft_min | integer, 0–∞ | Smallest living area in square feet. | |
sqft_max | integer, 0–∞ | Largest living area in square feet. | |
property_type | One or more of single_family, condo, townhouse, multi_family, land, manufactured, apartment, comma-separated | One or more home types, separated by commas, like single_family,townhouse. | |
year_built_min | integer, 1700–2100 | Oldest year built. | |
year_built_max | integer, 1700–2100 | Newest year built. | |
sort | newest, price_high or price_low | Result order. newest is the newest listing first, or on sold the most recent sale first. When not sent, the source's own order. Zillow shows at most about 820 results per search, so sort to get the ones you want first. | |
cursor | string | The 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/redfin/listings \ -H "Authorization: Bearer $REALTYCRAWL_KEY" \ -d zip=80221Try it
#Fields
| Field | Type | Description |
|---|---|---|
request_id | string | ID of this request. Poll it at /v1/jobs/{request_id}. |
status | string: pending, complete, failed | pending, complete or failed. Always check it, even on HTTP 200. |
credits | integer | Credits charged. The route's price when complete; 0 while pending, when failed, or for a page past the last one. |
cached | boolean | True when the result came from our cache. |
poll_url | string or null | Where to poll while pending. Null when complete. |
error | object or null | {code, message, param} when failed. Null otherwise. |
result | object or null | The result when complete. Null otherwise. |
result.source | string | Source of the rows, like zillow. |
result.query | object | The inputs you sent, as we read them. |
result.count | integer | Rows in data. |
result.reported_total | integer or null | Total matches the source reported for the whole search, when it shows one. |
result.next_cursor | string or null | Send as cursor for the next page. Null on the last page and on lookups. |
result.collected_at | string | When we read the source (ISO 8601, UTC). |
result.schema_version | integer | Version of the row schema. Changes only with a new, opt-in version. |
result.completeness | string: complete, partial | complete, or partial when the source returned less than a full page for a reason other than reaching the end. |
result.summary | object or null | Maths over this page for area searches. Null on lookups. |
result.data | array | The rows. |
result.field_notes | array | Why a field is null: {field, reason, detail}. One note covers every row where it applies. |
result.summary | object | Maths over the rows on this page: priced_count, median_price, p25, p75, median_price_per_sqft. On rentals, prices are monthly rents. |
result.data[].source | string | Which source the row came from. New sources may be added, so handle values you don't know. |
result.data[].source_id | string | The source's own ID for the home or building. On Zillow, a home's ID is its zpid; on Redfin, its property ID. |
result.data[].source_url | string | Page for this home or building on the source site. |
result.data[].listing_kind | string: home, building | home for one home; building for an apartment building whose units are listed together. |
result.data[].status | string: for_sale, pending, for_rent, sold, off_market | Listing status. |
result.data[].list_price | Money or null | Asking price. Null on rentals, and when the source shows no price ("Contact agent"). |
result.data[].rent_monthly | Money or null | Monthly rent. For a building, the lowest rent listed. Null on sale listings, and when the source shows no price ("Contact Landlord"). |
result.data[].rent_is_from_price | boolean | True when rent_monthly is the lowest of several unit rents. |
result.data[].list_date | string or null | Date the current listing started (YYYY-MM-DD). Null when the source does not say. |
result.data[].days_on_market | integer or null | Days since the current listing started. Null when the source does not say. |
result.data[].price_per_sqft | number or null | List price or rent divided by living area. Null when either is missing. |
result.data[].beds | number or null | Bedrooms. Null for a building with mixed units. |
result.data[].baths | number or null | Bathrooms as the source counts them. |
result.data[].living_area_sqft | integer or null | Living area in square feet. |
result.data[].property_type | string or null: single_family, condo, townhouse, multi_family, land, manufactured, apartment, other | Home type. |
result.data[].address | Address | Address of the home or building. |
result.data[].location | Location or null | Map point. |
result.data[].broker_name | string or null | Listing brokerage. |
result.data[].agent_name | string or null | Listing agent. Null when the source hides it. |
result.data[].photo_count | integer or null | How many photos the listing has. We never return or store the photos. |
result.data[].extras | object | Fields only this source has. Each source lists its own on its docs page. {} when there are none. |
result.data[].extras.property_type_code | integer or null | Redfin's own property type code, like 6 for a single-family home. |
result.data[].extras.mls_status | string or null | The MLS status Redfin shows, like Active, Coming Soon or Closed. |
result.data[].extras.year_built | integer or null | Year built. |
result.data[].extras.lot_area_sqft | integer or null | Lot area in square feet. |
result.data[].extras.hoa_fee_monthly | Money or null | Monthly HOA dues Redfin shows on the search card. |
result.data[].extras.building_name | string or null | Building name, for listing_kind: building. |
result.data[].extras.units_available | integer or null | Units available, on rentals. |
result.data[].extras.rent_max | Money or null | Highest rent, when the units differ. rent_monthly is the lowest. |