CFPB Home Mortgage Disclosure Act (HMDA) Data

Datadory delivers cfpb home mortgage disclosure act hmda data data: loan-level records of every covered U.S. mortgage application from 2007 through the 2025 filing year - lender LEI, geography down to census tract, loan terms, rate spread, applicant demographics, underwriting system and denial reasons - millions of rows per year across roughly 100 fields.

What is the CFPB Home Mortgage Disclosure Act (HMDA) Data?

CFPB Home Mortgage Disclosure Act (HMDA) data is the loan-level record of the American mortgage market: every application a covered lender takes and every loan it purchases, reported under HMDA and Regulation C as machine-readable rows rather than press releases. Each record describes one loan application or purchased loan across roughly 100 fields - the lender's Legal Entity Identifier, geography down to the census tract, loan type (conventional, FHA, VA, RHS), purpose, lien status, amount, rate spread, HOEPA status, points and fees, property value, applicant age, ethnicity, race and sex, credit score type, automated underwriting system and principal denial reason, plus Census-appended tract demographics such as minority population share.

Two properties make this franchise hard to replicate. Denials are recorded with the same completeness as originations, so the loans that never funded sit in the table beside the ones that did. And the geography runs finer than almost any commercial mortgage panel reaches - tract-level codes on every row, which turns neighborhood lending maps into a group-by rather than a data-collection project.

Get a sample of this dataset and we will return real loan rows cut to the lenders, states or tracts you name.

What do HMDA rows look like?

One row per application, straight from a 2023 filing - a conventional first-lien cash-out refinance in Harris County, Texas:

activity_year            : 2023
lei                      : 549300WN576XI5QFH005
derived_msa_md           : 26420                  # Houston-The Woodlands-Sugar Land, TX
state_code               : TX
county_code              : 48201                  # Harris County
census_tract             : 48201430800
conforming_loan_limit    : C                      # conforming
derived_loan_product_type: Conventional:First Lien
derived_dwelling_category: Single Family (1-4 Units):Site-Built
derived_ethnicity        : Hispanic or Latino
derived_race             : Race Not Available
derived_sex              : Male
action_taken             : 5                      # closed for incompleteness
loan_type                : 1                      # conventional
loan_purpose             : 32                     # cash-out refinancing
loan_amount              : 495000
loan_term                : 360                    # 30 years
income                   : 155                    # thousands, as reported
applicant_age            : 45-54

Read the row closely and the panel's honesty shows up twice. action_taken is 5 - the application was closed for incompleteness, never became a loan, and is in the table anyway, which is exactly why denial-rate and fall-through work computes cleanly here and nowhere else. And derived_race reads 'Race Not Available': privacy modification replaces sensitive values with explicit categories rather than blanks, so absence is coded, not silent. Scale one row to millions and every lender's year becomes countable by product, tract and outcome.

What fields does each HMDA record carry?

Eighteen documented groups anchor the dictionary below, verified against the released data structure. The spine is identity (activity_year, lei) and a four-step geography ladder (derived_msa-md, state_code, county_code, census_tract) that lets you roll the same rows up to metro, state, county or neighborhood without a separate crosswalk. Outcomes and attributes arrive as documented enumerations - action_taken in eight states, loan_type, loan_purpose, denial_reason-1 - with derived convenience columns such as derived_loan_product_type spelling the combinations out in words:

Where does HMDA coverage run, and at what grain?

Three chips summarize the footprint:

  • Geography: United States - all 50 states, DC, Puerto Rico and the Virgin Islands - geocoded to census tract, with MSA, state and county codes on every row and Census-appended tract demographics riding along.
  • Temporal: 2007 through the latest filing year (filing year 2025) - a historic series from 2007-2017 stitched onto the expanded modern collection from 2017 onward, giving a nineteen-year panel that spans a full housing cycle, crash to recovery to rate shock.
  • Granularity: one row per loan application or purchased loan per institution - no sampling, no aggregation layer. Nationwide first-lien owner-occupied files alone ran roughly 4.8M-8.3M rows per year across the historic era, each carrying around 100 fields.

Set against the wider Datadory catalog - where the average quality score across all 1,744 datasets is 7.81 - this slice scores 9/10, carried by exhaustive official field documentation and a volume no private mortgage panel can match at this geographic depth.

How is the data delivered?

API, files, or your warehouse. Daily, weekly, or hourly.

You choose the channel and the cadence; the field dictionary above travels unchanged across all three. Full-year extracts suit teams loading entire filing periods once and joining them to their own portfolio or servicing tables, scoped feeds suit products surfacing lender or tract metrics inside an app, and warehouse delivery suits analysts running fair-lending and market-share models in SQL. Cadence changes are a settings conversation, not a re-integration project.

Who uses this data, and for what?

  • Lender competitive tracking - LEI-keyed application and origination counts by county, MSA and product line, so a rival's retreat from cash-out refinancing shows up in the rows quarters before it reaches an earnings call.
  • Fair-lending analysis - denial reasons, rate spreads and pricing set beside applicant race, ethnicity, sex and age at tract resolution: the canonical evidence base for disparate-treatment work.
  • Mortgage market sizing - sum loan_amount by geography, product type or lien status to size addressable markets for lenders, insurers and proptech from observed transactions, not survey recall.
  • Credit-model feature engineering - millions of labeled outcomes (originated, denied, withdrawn, incomplete, purchased) with borrower attributes attached, ready for approval-probability modeling.
  • Community lending and CRA narratives - tract minority population share and income measures show where lending reaches and where it stalls, street by street.
  • Expensive-credit surveillance - rate spread and HOEPA flags isolate high-priced lending pockets by lender and neighborhood, historically the earliest warning regulators and journalists both watch.

Which personas get the most value?

Market researchers and consultants get the definitive citation for any claim about who originates what, where - when a deck says a metro's refi wave peaked, this is the table that dates it. Competitive intel and product teams get lender-level volume and mix shifts watchable filing period by filing period. Investors and quant researchers get a nineteen-year, cycle-spanning panel of lender behavior for factor construction and event studies. Data scientists and ML engineers get outcome-labeled rows at a scale that makes supervised approval models trivial to train and honest to evaluate. Journalists and academics get the numbers regulators themselves cite, with tract-level geography for neighborhood storytelling.

What should I know before requesting a sample?

Three things worth knowing upfront. First, privacy modification is built in: records are altered to protect applicants and borrowers before they exist in analyzable form - ages arrive in bins, some demographic cells read as explicit 'not provided' categories rather than blanks, and geographic detail carries its own suppression rules. Treat demographic precision as deliberately bounded, not degraded. Second, the analytical load sits in enumerated codes: action_taken runs 1 through 8, loan_type, loan_purpose, applicant_sex and friends each carry their own value lists, and several reserve 'exempt' as a value for filers with partial obligations. Third, the series has two labeling eras: filings before 2017 use plain-language column names and a narrower field set, while 2017 onward uses code-style names and the expanded schema. Long-run panels should be assembled on the fields both eras share; we deliver the mapping either way.

Which notes pair with this dataset?

Notes and adjacent reading:

Browse the whole vertical on the Consumer Finance data hub or the ranked shortlist of the best consumer finance datasets.

Field dictionary

Every field below is documented against real records. The full dictionary ships with the sample.

Field dictionary - identity, geography ladder and documented outcome enumerations on every loan-level row
fieldtypedefinitionexample
activity_yearintegerCalendar year the data submission covers.2023
leistringReporting institution's Legal Entity Identifier - the stable lender key across years.549300WN576XI5QFH005
derived_msa-mdgeoFive-digit derived metropolitan statistical area or metropolitan division code.26420
state_codestringTwo-letter state code.TX
county_codestringState-count FIPS code.48201
census_tractgeoEleven-digit census tract number.48201430800
derived_loan_product_typestringDerived from loan type and lien status, e.g. Conventional:First Lien or FHA:First Lien.Conventional:First Lien
action_takenenumAction taken on the application: 1 originated, 2 approved not accepted, 3 denied, 4 withdrawn, 5 closed for incompleteness, 6 purchased loan, 7 preapproval denied, 8 preapproval approved not accepted.5 (closed for incompleteness)
loan_typeenum1 conventional, 2 FHA insured, 3 VA guaranteed, 4 USDA RHS or FSA guaranteed.1 (conventional)
loan_purposeenum1 home purchase, 2 home improvement, 31 refinancing, 32 cash-out refinancing, 4 other, 5 not applicable.32 (cash-out refinancing)
loan_amountnumberAmount of the covered loan, or amount applied for.495000
rate_spreadnumberDifference between the loan's APR and the average prime offer rate for a comparable transaction when the rate was set.<returned in your sample>
incomeintegerGross annual income in thousands of dollars relied on in making the credit decision.155
applicant_ageenumApplicant age in bins from <25 through >74 (8888 = NA).45-54
applicant_race-1enumRace of the applicant (1 American Indian/Alaska Native, 2 Asian, 3 Black or African American, 4 NHPI, 5 White, 6 information not provided, 7 not applicable).5 (White)
applicant_ethnicity-1enumEthnicity of the applicant (1 Hispanic or Latino, 2 not Hispanic or Latino, 3 information not provided, 4 not applicable).1 (Hispanic or Latino)
applicant_sexenum1 male, 2 female, 3 information not provided, 4 not applicable, 6 selected both.1 (male)
denial_reason-1enumPrincipal reason for denial: 1 debt-to-income, 2 employment history, 3 credit history, 4 collateral, 5 insufficient cash, 6 unverifiable information, 7 incomplete application, 8 mortgage insurance denied, 9 other.3 (credit history)

Questions buyers ask

What is CFPB Home Mortgage Disclosure Act (HMDA) data?

The loan-level record of the U.S. mortgage market collected under HMDA and Regulation C: one row per loan application or purchased loan at every covered institution, carrying the lender's LEI, geography to census tract, loan terms, rate spread, applicant demographics, underwriting details and action taken.

How many loan-level records does the data hold?

Millions per year. In the historic era, nationwide first-lien owner-occupied files alone ranged from roughly 4.8 million to 8.3 million rows annually between 2007 and 2017, and the modern collection adds purchased loans and a wider field set. Counts move with the rate cycle, so any fixed total is a snapshot.

What does the action_taken field tell me?

The outcome of each application across eight documented states: originated, approved not accepted, denied, withdrawn, closed for incompleteness, purchased loan, and two preapproval outcomes. Because non-originated applications are retained with full detail, denial and fall-through rates compute directly from the rows.

Does every record include applicant demographics?

Yes - ethnicity, race, sex and age arrive as reported or derived codes, with explicit 'not provided' categories rather than silent blanks, and co-applicant fields ride along separately. Values are modified to protect applicant privacy before release, most visibly through binned ages.

How far back does the series go, and is it comparable over time?

Filing years from 2007 through the present, spanning a complete housing cycle. Pre-2017 filings use plain-language column names and a narrower field set; 2017 onward uses code-style names and the expanded schema. Panels built on the shared core fields are directly comparable across all nineteen years.

Can Datadory scope a pull to my lender list?

Yes. Name the lenders (by LEI), states, metros, tracts or filing years and the extract comes back scoped to them, decoded to the field dictionary above - delivered by API, files, or your warehouse on the schedule you pick.

See the rows before you pay anything.

Name this dataset and we send real records from it — scoped to the fields you asked for.

See pricing