Redfin Real Estate Market Trends API
Get the housing market trend for a city or metro from Redfin's Data Center: median sale price per period with its change, plus homes sold, new and active listings, inventory, days on market and sale-to-list ratio.
- 1 credit per call
- Failed calls are free
- Updated
- redfin.market.trends
{ "change_basis": "percent", "currency": "USD", "frequency": "Rolling 3 Months", "last_updated": "2026-10-07", "metric": "median_sale_price", "region_type": "City", "rows": [ { "change_pct": -2.72, "period_end": "2026-09-30", "period_start": "2026-07-01", "region": "Seattle, WA", "value": 854593, "metrics": { "ACTIVE LISTINGS": 5329, "ACTIVE LISTINGS YOY (%)": 5.13, "AVERAGE SALE TO LIST RATIO (%)": 99.22, "AVERAGE SALE TO LIST RATIO YOY (PPTS)": -0.33, "HOMES SOLD": 1943, "HOMES SOLD YOY (%)": -14.14, "INVENTORY": 2554, "INVENTORY YOY (%)": 20.03, "MEDIAN DAYS ON MARKET (DAYS)": 19, "MEDIAN DAYS ON MARKET YOY (DAYS)": 0, "MEDIAN NEW LISTING PRICE ($)": 829679, "MEDIAN NEW LISTING PRICE PER SQ.FT. ($)": 546.95, "MEDIAN NEW LISTING PRICE PER SQ.FT. YOY (%)": -3.76, "MEDIAN NEW LISTING PRICE YOY (%)": -2.95, "MEDIAN SALE PRICE NSA ($)": 854593, "MEDIAN SALE PRICE NSA YOY (%)": -2.72, "MEDIAN SALE PRICE PER SQ.FT. ($)": 544.5, "MEDIAN SALE PRICE PER SQ.FT. YOY (%)": -3.34, "MONTHS OF SUPPLY": 4, "MONTHS OF SUPPLY YOY (%)": 114.78, "NEW LISTINGS": 3127, "NEW LISTINGS YOY (%)": 4.72, "PENDING SALES": 1936, "PENDING SALES YOY (%)": -17.31, "PERCENT OFF MARKET IN TWO WEEKS (%)": 46.47, "PERCENT OFF MARKET IN TWO WEEKS YOY (PPTS)": 0.12, "REGION ID": 16163, "SHARE SOLD ABOVE ORIGINAL LIST (%)": 20.75, "SHARE SOLD ABOVE ORIGINAL LIST YOY (PPTS)": 0.29 } }, { "change_pct": -2.78, "period_end": "2026-08-31", "period_start": "2026-06-01", "region": "Seattle, WA", "value": 875000, "metrics": { "ACTIVE LISTINGS": 5171, "ACTIVE LISTINGS YOY (%)": 3.19, "AVERAGE SALE TO LIST RATIO (%)": 99.6, "AVERAGE SALE TO LIST RATIO YOY (PPTS)": -0.4, "HOMES SOLD": 2177, "HOMES SOLD YOY (%)": -12.04, "INVENTORY": 2351, "INVENTORY YOY (%)": 19.22, "MEDIAN DAYS ON MARKET (DAYS)": 15, "MEDIAN DAYS ON MARKET YOY (DAYS)": 2, "MEDIAN NEW LISTING PRICE ($)": 802500, "MEDIAN NEW LISTING PRICE PER SQ.FT. ($)": 553.22, "MEDIAN NEW LISTING PRICE PER SQ.FT. YOY (%)": -2.5, "MEDIAN NEW LISTING PRICE YOY (%)": -5.57, "MEDIAN SALE PRICE NSA ($)": 875000, "MEDIAN SALE PRICE NSA YOY (%)": -2.78, "MEDIAN SALE PRICE PER SQ.FT. ($)": 550.79, "MEDIAN SALE PRICE PER SQ.FT. YOY (%)": -4.24, "MONTHS OF SUPPLY": 3.3, "MONTHS OF SUPPLY YOY (%)": 86.84, "NEW LISTINGS": 3008, "NEW LISTINGS YOY (%)": 3.87, "PENDING SALES": 2096, "PENDING SALES YOY (%)": -13.53, "PERCENT OFF MARKET IN TWO WEEKS (%)": 46.71, "PERCENT OFF MARKET IN TWO WEEKS YOY (PPTS)": -0.45, "REGION ID": 16163, "SHARE SOLD ABOVE ORIGINAL LIST (%)": 22.6, "SHARE SOLD ABOVE ORIGINAL LIST YOY (PPTS)": -1.93 } } ]}
| # | From | To | Median sale price | Change % | Homes sold | Pending sales | Inventory | Active listings | Region |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 2026-07-01 | 2026-09-30 | 854,593 | -2.72 | 1943 | 1936 | 2554 | 5329 | Seattle, WA |
| 2 | 2026-06-01 | 2026-08-31 | 875,000 | -2.78 | 2177 | 2096 | 2351 | 5171 | Seattle, WA |
| 3 | 2026-05-01 | 2026-07-31 | 895,000 | -0.56 | 2385 | 2305 | 2372 | 5364 | Seattle, WA |
| 4 | 2026-04-01 | 2026-06-30 | 890,000 | -2.2 | 2487 | 2493 | 2287 | 5347 | Seattle, WA |
| 5 | 2026-03-01 | 2026-05-31 | 880,000 | -2.22 | 2408 | 2551 | 2243 | 5231 | Seattle, WA |
| 6 | 2026-02-01 | 2026-04-30 | 860,000 | -3 | 2166 | 2432 | 2106 | 4830 | Seattle, WA |
| 7 | 2026-01-01 | 2026-03-31 | 838,000 | -1.41 | 1752 | 2125 | 1781 | 4156 | Seattle, WA |
| 8 | 2025-12-01 | 2026-02-28 | 813,000 | -2.11 | 1579 | 1711 | 1622 | 3650 | Seattle, WA |
| 9 | 2025-11-01 | 2026-01-31 | 815,000 | -1.21 | 1574 | 1566 | 1445 | 3483 | Seattle, WA |
| 10 | 2025-10-01 | 2025-12-31 | 850,000 | -0.58 | 1992 | 1760 | 1229 | 3734 | Seattle, WA |
What you send
The input
object of the request, with every field the endpoint accepts.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| region | string | yes | The city or metro as Redfin's Data Center names it, such as Seattle, WA. | Seattle, WA |
| dataset | string | no | One explicitly verified Redfin Data Center download. The default city file uses rolling three-month windows; monthly metro, state and country files use calendar months; the weekly metro file uses a trailing four-week window. Allowed values: monthly_top_50_cities, monthly_top_50_metros, monthly_all_states, monthly_country, weekly_top_50_metros. Default: monthly_top_50_cities. |
monthly_top_50_cities · monthly_top_50_metros ·… |
| end_date | string | no | The last period to include (YYYY-MM-DD). | |
| limit | integer | no | How many periods to return, newest first. | |
| metric | string | no | The headline value of each row. Today that is the median sale price. | median_sale_price |
| property_type | string | no | These five aggregate source files do not contain a property-type dimension. Segmented property types require separate source qualification. Allowed values: aggregate. Default: aggregate. |
aggregate |
| start_date | string | no | The first period to include (YYYY-MM-DD). |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| rows[].period_start | string | The first day of the period. | 2026-07-01 |
| rows[].period_end | string | The last day of the period. | 2026-09-30 |
| rows[].value | integer | The chosen metric's value for the period. | 854,593 |
| rows[].change_pct | number | The change in the chosen metric, in percent. | -2.72 |
| rows[].metrics.HOMES SOLD | integer | Homes sold in the period. | 1943 |
| rows[].metrics.PENDING SALES | integer | Homes under contract in the period. | 1936 |
| rows[].metrics.INVENTORY | integer | Homes for sale at the end of the period. | 2554 |
| rows[].metrics.ACTIVE LISTINGS | integer | Homes listed for sale during the period. | 5329 |
| rows[].metrics | object | Every market figure Redfin publishes for the period. | 29 fields |
| rows[].metrics.ACTIVE LISTINGS YOY (%) | number | Change in active listings from a year earlier, in percent. | 5.13 |
| rows[].metrics.AVERAGE SALE TO LIST RATIO (%) | number | Sale price as a share of list price, on average. | 99.22 |
| rows[].metrics.AVERAGE SALE TO LIST RATIO YOY (PPTS) | number | Change in that ratio from a year earlier, in points. | -0.33 |
| rows[].metrics.HOMES SOLD YOY (%) | number | Change in homes sold from a year earlier, in percent. | -14.14 |
| rows[].metrics.INVENTORY YOY (%) | number | Change in inventory from a year earlier, in percent. | 20.03 |
| rows[].metrics.MEDIAN DAYS ON MARKET (DAYS) | integer | The median days a home was listed before going under contract. | 19 |
| rows[].metrics.MEDIAN DAYS ON MARKET YOY (DAYS) | integer | Change in median days on market from a year earlier. | 0 |
| rows[].metrics.MEDIAN NEW LISTING PRICE ($) | integer | The median price of new listings, in US dollars. | 829,679 |
| rows[].metrics.MEDIAN NEW LISTING PRICE PER SQ.FT. ($) | number | The median new listing price per square foot, in US dollars. | 546.95 |
| rows[].metrics.MEDIAN NEW LISTING PRICE PER SQ.FT. YOY (%) | number | Change in that price per square foot from a year earlier, in percent. | -3.76 |
| rows[].metrics.MEDIAN NEW LISTING PRICE YOY (%) | number | Change in the median new listing price from a year earlier, in percent. | -2.95 |
| rows[].metrics.MEDIAN SALE PRICE NSA ($) | integer | The median sale price, not seasonally adjusted, in US dollars. | 854,593 |
| rows[].metrics.MEDIAN SALE PRICE NSA YOY (%) | number | Change in the median sale price from a year earlier, in percent. | -2.72 |
| rows[].metrics.MEDIAN SALE PRICE PER SQ.FT. ($) | number | The median sale price per square foot, in US dollars. | 544.5 |
| rows[].metrics.MEDIAN SALE PRICE PER SQ.FT. YOY (%) | number | Change in sale price per square foot from a year earlier, in percent. | -3.34 |
| rows[].metrics.MONTHS OF SUPPLY | integer | How many months current inventory would last at the current pace of sales. | 4 |
| rows[].metrics.MONTHS OF SUPPLY YOY (%) | number | Change in months of supply from a year earlier, in percent. | 114.78 |
| rows[].metrics.NEW LISTINGS | integer | Homes newly listed in the period. | 3127 |
| rows[].metrics.NEW LISTINGS YOY (%) | number | Change in new listings from a year earlier, in percent. | 4.72 |
| rows[].metrics.PENDING SALES YOY (%) | number | Change in pending sales from a year earlier, in percent. | -17.31 |
| rows[].metrics.PERCENT OFF MARKET IN TWO WEEKS (%) | number | Share of homes that went under contract within two weeks. | 46.47 |
| rows[].metrics.PERCENT OFF MARKET IN TWO WEEKS YOY (PPTS) | number | Change in that share from a year earlier, in points. | 0.12 |
| rows[].metrics.REGION ID | integer | Redfin's ID for the area. | 16,163 |
| rows[].metrics.SHARE SOLD ABOVE ORIGINAL LIST (%) | number | Share of homes that sold above their first list price. | 20.75 |
| rows[].metrics.SHARE SOLD ABOVE ORIGINAL LIST YOY (PPTS) | number | Change in that share from a year earlier, in points. | 0.29 |
| rows[].region | string | The area the figures are for. | Seattle, WA |
| change_basis | string | How the change is measured. | percent |
| currency | string | The currency of the prices. | USD |
| frequency | string | The length of each period, as Redfin defines it. | Rolling 3 Months |
| last_updated | string | When Redfin last updated the figures. | 2026-10-07 |
| metric | string | The metric the rows track. | median_sale_price |
| region_type | string | The kind of area, such as city or county. | City |
| rows | array | One row per period. | 12 records |
Call it from your code, or ask your agent
Set UPSCRAPE_API_KEY to your key and copy a working request.
curl --request POST \ --url https://data.upscrape.com/execute \ --header "Authorization: Bearer $UPSCRAPE_API_KEY" \ --header "Content-Type: application/json" \ --header "Prefer: wait=30" \ --data '{ "capability": "redfin.market.trends", "input": { "region": "Seattle, WA" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "redfin.market.trends", "input": { "region": "Seattle, WA" }}''')response = requests.post( "https://data.upscrape.com/execute", headers={ "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}", "Content-Type": "application/json", "Prefer": "wait=30", }, json=payload,)response.raise_for_status()print(json.dumps(response.json(), indent=2))
const response = await fetch("https://data.upscrape.com/execute", { method: "POST", headers: { "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`, "Content-Type": "application/json", "Prefer": "wait=30", }, body: JSON.stringify({ "capability": "redfin.market.trends", "input": { "region": "Seattle, WA" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
https://data.upscrape.com/mcp
Using Upscrape, get Redfin's housing market trend for Seattle, WA. Show the median sale price for each period with its year-on-year change, and tell me whether homes are selling faster or slower.
More from the Redfin Real Estate API
Redfin Real Estate Market Trends API FAQ
The short answers. The docs have the long ones.
How much does the Redfin Real Estate Market Trends API cost?
1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.
What do I send?
Send region. The input fields below list every option with its type and limits.
Do I need a Redfin Real Estate login?
No. It reads public Redfin Real Estate data; nothing runs on your account.
Can my AI agent call it?
Yes, over MCP: the agent finds redfin.market.trends, checks its price and runs it with the same credits as the REST API.
Your first Redfin Real Estate call is free.
Up to 100 free credits to start, no card needed.