Get analysis-ready Redfin data with geocoded, listing-level records — pricing, beds, baths, days on market, and more. Explore the dataset dashboard free.
Housing markets move faster than most reporting cycles can keep up with. A ZIP code can shift from a seller's market to a buyer's market in a single quarter, and by the time a monthly summary lands, the story has already changed. That gap is why so many teams now work directly with Redfin data at the listing level instead of waiting on aggregated indices.
The problem is rarely finding listings. The problem is turning thousands of scattered listing pages into something a query can actually run against. This guide covers what structured Redfin data contains, who uses it, and how to skip the collection work entirely.
When people say "Redfin data," they usually mean one of two things. The first is Redfin's own published market summaries, available through the Redfin Data Center, which reports metrics like median sale price and inventory at the metro level. Useful for context, but aggregated.
The second is listing-level data, where every row is a single property. That is where the analytical value sits, because aggregates hide the variation you usually care about. A metro-level median tells you nothing about how a three-bedroom in one neighborhood prices against a similar three-bedroom two miles away.
A structured Redfin dataset gives you that granularity in a consistent schema. Every record carries its source URL, stable identifiers, a full location breakdown, and typed fields ready for querying.
You can see the Redfin Dataset – Real Estate Listings or read the grouped breakdown below.
url, property_id, listing_id, mls_id, mls_status, status, data_source_id, market_id, business_market_id
These matter more than they first appear. Stable property and listing IDs are what let you join across snapshots, dedupe reliably, and build genuine time series from repeated pulls rather than guessing whether two records describe the same home.
address, street, unit, city, state, zip, country, neighborhood, latitude, longitude, time_zone
Coordinates come attached to every record, so radius searches, spatial joins, and mapping work immediately. No geocoding pass, no API quota, no address-matching failures on unit numbers.
price, price_per_sqft, hoa_fee, hoa_frequency_known, last_sold_date
Price per square foot arrives precomputed, and HOA fees are broken out as their own field. That second one is quietly valuable, since HOA costs are one of the least visible drivers of true monthly carrying cost.
beds, baths, full_baths, partial_baths, sqft, lot_size_sqft, stories, year_built, garage_spaces, parking_spaces, pool_type_id, property_type_id, ui_property_type_id, listing_type_id, is_new_construction, community_name, builder_name
Full and partial baths are separated rather than collapsed into a decimal, which saves a parsing step and avoids the ambiguity that "2.5 baths" introduces in modeling.
is_redfin_listing, is_hot, days_on_market, time_on_redfin_ms, open_house, open_house_start, open_house_end
Days on market is the closest thing listing data has to a demand thermometer. Tracked across a ZIP code over several months, it often turns before price does.
description, key_facts, listing_tags, sashes, photos, photo_count, has_virtual_tour, has_video_tour, has_3d_tour, has_floorplan
Full listing text is preserved rather than truncated. This is what separates a dataset useful for NLP from one that only supports tabular statistics.
listing_agent, listing_broker_phone
Real estate analysts and investors track pricing trends, price-per-square-foot movement, inventory levels, and days on market across ZIP codes, cities, and states. Listing-level Redfin data lets them segment by property type or construction status instead of accepting whatever cut a published report happens to offer.
Data scientists and ML engineers treat it as training data for price prediction models, automated valuation engines, and recommendation systems. The retained description and key-facts fields also support text feature extraction, where phrasing in listing copy carries signal that structured fields miss.
Proptech teams use Redfin data to seed a new product with real inventory on day one, benchmark their own coverage, or power search and comparison features without first building a collection pipeline.
Researchers, journalists, and policy teams study affordability, new construction activity, HOA prevalence, and regional supply patterns. Row-level evidence makes findings reproducible in a way that summary statistics cannot.
Marketing and lead-generation teams combine listing metadata, brokerage details, and geographic segmentation to size markets and target campaigns.
Schema documentation only tells you so much. Field coverage, value distributions, and how the records behave across regions are things you have to look at.
There is a ready-made Redfin dashboard and dataset overview that lets you explore the structure, inspect sample records, and check coverage before downloading anything. It is the fastest way to confirm the dataset fits your use case, and it saves the usual cycle of buying a sample, loading it, and discovering the one field you needed is sparse.
Teams that have built their own collection pipeline know where the time goes. Very little of it is the initial script.
Maintenance is the real cost. Page structures change without notice, and a scraper that worked last month starts returning nulls. Normalization is another sink, since "2,450" and "2450 sq ft" and "2450" all mean the same thing but none of them are a number until you make them one. Then come the edge cases, the units, the missing ZIPs, the addresses that geocode to the wrong county.
A pre-normalized dataset removes all of it. Numeric fields arrive as numbers, booleans as booleans, dates in one consistent format. Raw payloads stay preserved, so anything the schema does not surface is still recoverable.
Delivery is flexible. Export as CSV, JSON, JSONL, Excel, or Parquet, and take a one-off snapshot or scheduled refreshes depending on how current your work needs to be. Records can be filtered before delivery by state, city, ZIP, price band, property type, bed and bath count, construction status, or listing status.
Scale is a choice rather than a constraint. Pull a single ZIP code for a focused study or nationwide volume for large-scale modeling, and the schema stays identical either way. Pipelines built against one export keep working against the next.
Listing data answers what is on the market. It does not answer who lives there or what the mortgage environment looks like, so most serious analysis joins it against something else.
The U.S. Census Bureau's American Community Survey provides demographic and household characteristics that join cleanly on ZIP or tract. The FHFA House Price Index gives a repeat-sales benchmark for validating price trends against a methodology built for that purpose. Freddie Mac's mortgage rate survey supplies the rate context that explains a lot of demand-side movement.
A common pattern: use Redfin data for current supply and pricing, ACS for demand-side context, and rate data to explain timing.
Choose your geography and filters, pick an output format, and download. Three suggestions from teams who have done this before.
Start narrow. A single city or a handful of ZIP codes is enough to validate your assumptions and far faster to iterate on than a national pull.
Decide your refresh cadence early. Days-on-market analysis needs frequent snapshots. A one-time valuation model training set does not. This decision shapes your storage and pipeline design more than anything else.
Keep the raw payloads. Preserved raw fields cost almost nothing to store and will save a re-pull the first time you need something the schema does not expose.
How current is the data? Depends on how you pull it. One-off snapshots capture a point in time; scheduled refreshes keep pace with the market. Choose based on whether you are training a model or monitoring inventory.
Can I filter before download? Yes. State, city, ZIP, price band, property type, bed and bath count, construction status, and listing status can all be applied before delivery, so you are not paying to move rows you will discard.
What formats are available? CSV, JSON, JSONL, Excel, and Parquet. Parquet is the usual choice for anything above a few million rows.
Will the schema change between pulls? It stays consistent, which is the point. Code written against one export continues to run against the next.
This is an independently compiled dataset of publicly visible real estate listing information. It is not affiliated with, endorsed by, or an official product of Redfin Corporation. Buyers are responsible for ensuring their use complies with applicable laws, terms, and data protection regulations in their jurisdiction.
Real estate analysis lives or dies on the quality of its inputs. Structured, geocoded, analysis-ready Redfin data removes the least interesting part of the job and leaves you with the part that actually produces answers.