REAL ESTATE · UNITED STATES
Redfin: US Real Estate Listings
Redfin API for US homes for sale and sold homes.
About this data
Redfin API for US homes for sale and sold homes. Paste any Redfin search URL or pick cities and ZIP codes; get one record per home with price USD, address, beds, baths, square feet, home type, photos and the listing URL, plus optional sale and tax history.
From the actor’s Apify Store listing. The per-call endpoint may return a bounded subset; its own description is below.
Buy per call over x402
One endpoint at api.ssh.autos. Each call is one JSON POST, paid in USDC with no account or API key, and answered in the same HTTP response.
POST /v1/us/redfin/listings
Live Redfin property listings for one US city (Austin by default), optionally by property type or sold search: price in USD, address, city, state, bedrooms, bathrooms, floor area in square feet, property type where shown, images and listing URL.
For sold searches, the card price is the last asking price.
First results page only, no detail history, up to 20 listings per call; the residential proxy is included in the price.
Input
Send a JSON body to POST https://api.ssh.autos/v1/us/redfin/listings.
| Field | Type | Required | Notes |
|---|---|---|---|
city | string | optional | one of Austin, TX, Seattle, WA, San Francisco, CA, Los Angeles, CA, Chicago, IL; default "Austin, TX" |
propertyType | string | optional | one of house, condo, townhouse, apartment, multi-family, land, mobile |
sold | boolean | optional | default false |
maxResults | integer | optional | 1–20; default 10 |
Returned fields
The answer is JSON: records, a list of up to 20, and summary, the run status and counts. Each record has these 16 fields; a field the source does not publish comes back null.
16 fields per record
| Field | Type | Notes |
|---|---|---|
listing_key | string | Stable record key 'redfin.com:{homeId}', or the canonical URL when the id is unknown. |
url | string | Canonical listing detail URL on www.redfin.com (/{ST}/{City}/{addr}/home/{id}); query strings and fragments removed. |
price_usd | integer | Asking price in integer USD ('$625,000' → 625000, '$849K' → 849000, '$1.2M' → 1200000). Null for monthly rent figures ('$2,900/mo') and missing prices. |
address | string | Street address ('123 Main St Unit 4, Austin, TX 78704' → '123 Main St Unit 4'). |
city | string | City, from the listing address or the /{ST}/{City}/.../home/{id} detail URL. |
state | string | Two-letter US state code from the detail URL path or the listing address. |
beds | integer | Bedrooms from the 'N bd' card stat. Null when absent (Studio). |
baths | number | Bathrooms from the 'N ba' card stat (halves allowed: 2.5). |
sqft | integer | Living area in sq ft from the 'N,NNN sqft' card stat. |
property_type | string | Home type: house, condo, townhouse, apartment, multi-family, land or mobile. Set from the search's home type filter when it has exactly one; otherwise from the listing data, which labels most homes '… |
images | array of strings | Listing image URLs (ssl.cdn-redfin.com / cdn.cdn-redfin.com). |
history | array of objects | Property-history events from the listing's detail page (issue #251, present only on includeHistory-enriched records): {date (ISO-8601), event, price} rows — Listed/Sold/Price change/… newest-first; a… |
tax_history | array of objects | Tax-assessment rows from the detail page's taxHistoryPanel: {year, property_tax_usd, land_additions_usd}. |
last_sold | object | The newest Sold event from the detail-page history: {date, price} (price null for pre-internet '*' sales). Null when the property has no Sold event. |
source | string | Source slug 'redfin.com'. |
scraped_at | string | UTC ISO-8601 collection timestamp. |
Example call
npx agentcash@latest fetch https://api.ssh.autos/v1/us/redfin/listings -m POST -b '{"city": "Austin, TX", "maxResults": 3}'
The example values come from the API spec or the actor’s own sample input. Running it is a paid call.
What is and isn’t charged
You pay the call price for
- An answer, including a definitive “not found” or an empty result.
- Confirmed no matches returns records: [] (charged: it is an answer).
Free
- Invalid input (422), busy (503), source failure (502), timeout (504) and calls whose client hung up are never charged.
- Invalid input and source failures are not charged.
Prefer a subscription? Run it on Apify
This data source is a public actor on the Apify Store: Redfin Scraper: US Real Estate Listings API. Run it with your Apify account and plan for larger, scheduled or exported runs; it may offer more input options than the per-call endpoint.
How x402 payment works
- Your client sends the request. The API answers
402 Payment Requiredwith the price and where to pay. - The client pays from its own wallet: USDC on Base or Solana over x402, or over MPP on Tempo. No account, sign-up or API key.
- The client retries with the payment attached and gets the JSON answer in the same call. You are only charged for answers.
The AgentCash CLI in the example does all three steps for you and pays from your AgentCash wallet. Any x402 or MPP client works the same way.
Machine-readable: openapi.json · llms.txt