Medical Expenditure Panel Survey (MEPS)
Datadory delivers medical expenditure panel survey meps data covering twenty-nine years of American health care: 493 published files spanning survey years 1996 through 2024, carrying person-, family-, job-, event- and condition-level microdata on what care Americans used, what it cost, who paid, and which insurance covered them month by month - the civilian noninstitutionalized US population, interviewed in overlapping panels since 1996.
What this dataset is
Medical Expenditure Panel Survey (MEPS) is the Life & Health Insurance catalog's ground-truth record of American health spending: the Agency for Healthcare Research and Quality's continuously fielded survey of households, employers and medical providers, running since 1996 and unmatched on one question - what gets spent on health care in the United States, and who actually pays.
It arrives in three components. The Household Component (HC) samples families drawn from a subsample of prior-year National Health Interview Survey households and interviews them in overlapping rounds across two full calendar years, collecting demographics, health conditions and status, service use, charges and payments, access to care, satisfaction, employment, income and month-by-month insurance coverage; a fresh panel enters the survey every year. The Insurance Component (IC) - the Health Insurance Cost Study - surveys private and public employers about plan types, premiums, employer and employee contributions, eligibility, benefits and firm characteristics. The Medical Provider Component supplements household reports with hospitals, physicians, home health agencies and pharmacies, and works quietly behind the scenes on editing and imputation rather than shipping as a standalone file set.
The published HC library spans 493 files across 1996 through 2024: person, job, event and condition level sets - dental, hospital inpatient, emergency room, office-based, outpatient, prescribed medicines and other medical expenses - plus full-year consolidated files, longitudinal panel files, NHIS link files and NHEA-aligned expenditure projections. The 2023 Full Year Consolidated Data File (HC-251) alone covers Rounds 3-5 of Panel 27 and Rounds 1-3 of Panel 28, with survey administration, demographics, priority conditions, access, satisfaction, health status, disability days, quality of care, employment, income, use and expenditure variables, and monthly coverage indicators by source - Medicare, Medicaid/SCHIP, TRICARE, private, other public.
What do MEPS rows look like?
Person-grain rows after cleaning - one row per person, illustrative values on the real skeleton:
DUID PID DUPERSID PANEL YEAR AGE SEX RACETHX MONTHLY COVERAGE TOTEXP TOTSLF PERSON WT
---------------------------------------------------------------------------------------------------------
2320034 001 2320034001 27 2023 34 2 6 PRV x12 4,870 920 41,203
2320117 002 2320117002 27 2023 67 1 6 MCR x12 + PRV x12 31,450 2,140 12,876
2320149 001 2320149001 28 2023 8 1 1 MCD x12 1,610 0 58,442Reading the rows: three people, two panels, one calendar year - the overlap is the survey's design, not a duplication bug, and it is what makes two-year spending histories possible. The coverage column is twelve monthly flags rather than one annual label, which is the whole point: a person with employer coverage ten months and Medicaid for two is a churn story, and a single year-end snapshot would flatten it into nothing. The zero in the third row's TOTSLF means nobody in the household paid out of pocket - Medicaid carried it - which is a finding, not a missing value. And the weights differ by a factor of four across just three rows because each sampled person stands in for tens of thousands of Americans; any national figure computed as an unweighted average here is simply wrong.
Which fields does MEPS include?
Core variables from the consolidated full-year person file, defined against the published codebooks with examples drawn from the row shape above:
| Field | Type | Definition | Example |
|---|---|---|---|
| DUID | string | Dwelling-unit identifier assigned at sampling - panel number plus encrypted unit ID; the household anchor every person joins back to. | 2320034 |
| PID | string | Person number within the dwelling unit, assigned at sampling or during CAPI interviewing. | 001 |
| DUPERSID | string | Full person ID concatenating DUID and PID; the primary key for every person-level join. | 2320034001 |
| PANEL | integer | MEPS panel number. Panels overlap within a calendar year, so one year draws two panels. | 27 |
| DATAYEAR | integer | Survey data year the row belongs to. | 2023 |
| AGELAST | integer | Age as of the last round the person was eligible, edited and imputed from round-specific ages. | 34 |
| SEX | integer | Sex of the person. | 2 |
| RACETHX | enum | Edited and imputed race/ethnicity, harmonized to one comparable column across file years. | 6 |
| MCAIDmmX | boolean | Covered by Medicaid or SCHIP in month mm (JA through DE), edited; round-level variants sit alongside the monthly set. | MCDJA23X = 0 |
| MCRmm23X | boolean | Covered by Medicare in month mm, edited. | MCRJA23X = 1 |
| TRImm23X | boolean | Covered by TRICARE/CHAMPVA in month mm, edited. | TRIJA23X = 0 |
| PUBmm23X | boolean | Covered by any public insurance in month mm - the roll-up flag behind public-coverage screens. | PUBJA23X = 1 |
| PEGmm23 | boolean | Covered by employer or union insurance in month mm. | PEGJA23 = 1 |
| TOTEXP/TOTSLF family | number | Total-expenditure and payment-by-source pairs (self/family, Medicare, Medicaid, private, other) at event grain and as annual totals. | TOTEXP23 = 4870, TOTSLF23 = 920 |
| WTPER/WTFINL-style weight | number | Person-level full-year sampling weight for producing national estimates; the exact name varies by file year (WTPER, WTFINL, WTSAQ). | 41203 |
Around the consolidated person file sit the event-level families, each keyed back to DUPERSID:
| File family | Row grain | Carries |
|---|---|---|
| Dental visits | one row per dental event | event counts plus payment-by-source pairs |
| Hospital inpatient stays | one row per admission | charges, payments by payer, nights and discharge detail |
| Emergency room visits | one row per ER event | facility and physician charges split by payer |
| Office-based provider visits | one row per visit | provider specialty, condition linkage, payments by source |
| Outpatient visits | one row per outpatient event | agency type, charges and payments |
| Prescribed medicines | one row per purchase or refill | drug detail, quantity, and payments split across payer and household |
| Other medical expenses | one row per expense episode | equipment, supplies and services outside the visit-based files |
Condition-level files tie diagnoses to the events above, and longitudinal panel files hold the same people across both calendar years - which is where spending-incidence questions get answered.
What does coverage look like across geography, time and granularity?
- Geography: United States, civilian noninstitutionalized population - national estimates with census-region breakdowns; the employer-side tables extend to state, regional and metro levels
- Temporal: survey years 1996 through 2024, with overlapping two-year panels so most people carry two full calendar years of history; the 2025 employer-side tables complete the series into late 2026
- Granularity: person, family, job, event (per medical event or prescription fill) and condition levels, plus monthly insurance-coverage indicators by source - twelve flags per person per year
No commercial feed pairs household-reported spending with provider-edited payments and a month-by-month coverage matrix on the same people. Most substitutes offer one annual coverage flag and call it insurance history.
How is the data delivered?
API, files, or your warehouse. Daily, weekly, or hourly.
You pick the channel and the cadence; codebook archaeology stays our problem. Every coded enum resolves against its file-year's definitions before it reaches you - the monthly coverage flags, the race/ethnicity harmonization, the payment-source splits - and the person-weight variable ships named, typed and documented per file year instead of leaving you to discover that the weight column changed names between releases.
The grain you want decides the shape of the delivery: a consolidated full-year person file for population work, an event-level extract scoped to one service category for utilization studies, or both joined and landed together when the question needs person attributes attached to every prescription fill. Whichever you choose, the field dictionary travels unchanged and a sample ships first either way - real rows for your population before any commitment.
Who uses this data, and for what
- Actuarial and pricing teams at health plans - utilization frequency and spend distributions by event type and condition, the empirical backbone for plan-design pricing and morbidity assumptions.
- Benefits consultants and employer researchers - the employer side of the survey: plan types, premium levels, employer versus employee contributions, eligibility rules and firm characteristics across establishment sizes.
- Policy researchers - month-by-month coverage transitions across Medicare, Medicaid/SCHIP, TRICARE, private and other public sources, which is where churn and continuity get measured instead of guessed.
- Health economists and academics - two-year longitudinal panels connecting conditions to events to payments, citable end to end.
- Investors and quant researchers covering managed care - utilization and payment-mix benchmarks that put a portfolio company's reported trends against the national baseline.
- Market researchers and consultants - sizing for payer, provider and pharmacy-adjacent markets from expenditure totals that reconcile to the National Health Expenditure Accounts.
- Journalists and students - national estimates with a published methodology behind every chart, not a vendor slide deck.
Which personas get the most value, and what should I know first
Data scientists and quant researchers lead fit: this is the canonical corpus for healthcare cost modeling and claims-free expenditure prediction, with survey-weighted training targets no synthetic dataset reproduces - see life & health insurance data for data scientists. Market researchers and consultants get expenditure denominators for sizing work that survives due diligence - see life & health insurance data for market researchers. Journalists, academics and students get citation-grade national estimates on coverage, spending and access going back decades - see life & health insurance data for journalists, academics and students.
Persona fit has edges worth naming. The population is the civilian noninstitutionalized one, so nursing-home residents, the incarcerated and active-duty military sit outside the household universe - pair the Human Mortality Database when your question drifts toward institutional populations or deaths. And the survey measures the nation rather than a single carrier's book, so carrier-specific questions want NAIC insurance data alongside it.
Three notes worth having before requesting a sample. First, panels overlap: any single calendar year draws two panels, so deduplicate on person-year rather than trusting row counts. Second, the person weight changes names across file years - treat it as a lookup, not a constant. Third, employer-side microdata stay confidential and ship only as summary tables, so firm-level premium questions get answered at the aggregate level the survey publishes. Start a sample scoped to your years and service categories, then Get a sample of this dataset.
Notes and adjacent datasets
Methodology note - spending figures begin as household reports and get reconciled against provider records through the Medical Provider Component, which is why MEPS payment fields hold up where pure recall surveys fall apart. The employer side is a separate establishment survey, so household and employer figures answer different questions even when both concern insurance.
Completeness note - national estimates carry census-region breakdowns; state-level detail lives in the employer-side summary tables rather than the household microdata, and the household universe excludes institutional populations by design. Coverage is checked per file before anything ships.
Provenance note - every row traces to an AHRQ-designed instrument with published codebooks, response rates and variance-estimation guidance, and each person carries a sampling weight that makes every estimate reproducible from the public documentation.
Where to go next:
- Human Mortality Database (HMD) - population-level death rates to frame the morbidity and utilization story (how it compares).
- KFF State Health Facts and Health Policy Data - state-level policy and program context beside the national microdata.
- US Census Bureau Health Insurance Coverage - the alternative coverage-count series to benchmark MEPS against.
- NAIC Insurance Data and Regulatory Tools - the carrier financial view once the household view is mapped.
- Society of Actuaries Research Institute and Mortality Tables - the actuarial assumption sets downstream of utilization analysis.
- Kaggle Medical Cost Personal Insurance Dataset - the teaching-scale excerpt when a prototype wants few rows fast.
Browse the rest of the slice on the life & health insurance data hub, read the source profile at AHRQ, or see where this ranks on the best life & health insurance datasets list. Pair it with mortality context at the Human Mortality Database or policy context at KFF State Health Facts.
Field dictionary - Medical Expenditure Panel Survey (MEPS), core person-file variables
| Field | Type | Definition | Example |
|---|---|---|---|
| DUID | string | Dwelling-unit identifier assigned at sampling - panel number plus encrypted unit ID; the household anchor every person joins back to. | 2320034 |
| PID | string | Person number within the dwelling unit, assigned at sampling or during CAPI interviewing. | 001 |
| DUPERSID | string | Full person ID concatenating DUID and PID; the primary key for every person-level join. | 2320034001 |
| PANEL | integer | MEPS panel number. Panels overlap within a calendar year, so one year draws two panels. | 27 |
| DATAYEAR | integer | Survey data year the row belongs to. | 2023 |
| AGELAST | integer | Age as of the last round the person was eligible, edited and imputed from round-specific ages. | 34 |
| SEX | integer | Sex of the person. | 2 |
| RACETHX | enum | Edited and imputed race/ethnicity, harmonized to one comparable column across file years. | 6 |
| MCAIDmmX | boolean | Covered by Medicaid or SCHIP in month mm (JA through DE), edited; round-level variants sit alongside the monthly set. | MCDJA23X = 0 |
| MCRmm23X | boolean | Covered by Medicare in month mm, edited. | MCRJA23X = 1 |
| TRImm23X | boolean | Covered by TRICARE/CHAMPVA in month mm, edited. | TRIJA23X = 0 |
| PUBmm23X | boolean | Covered by any public insurance in month mm - the roll-up flag behind public-coverage screens. | PUBJA23X = 1 |
| PEGmm23 | boolean | Covered by employer or union insurance in month mm. | PEGJA23 = 1 |
| TOTEXP/TOTSLF family | number | Total-expenditure and payment-by-source pairs (self/family, Medicare, Medicaid, private, other) at event grain and as annual totals. | TOTEXP23 = 4870, TOTSLF23 = 920 |
| WTPER/WTFINL-style weight | number | Person-level full-year sampling weight for producing national estimates; the exact name varies by file year (WTPER, WTFINL, WTSAQ). | 41203 |
Event-level file families inside the Household Component, each joining back to DUPERSID
| File family | Row grain | Carries |
|---|---|---|
| Dental visits | one row per dental event | event counts plus payment-by-source pairs |
| Hospital inpatient stays | one row per admission | charges, payments by payer, nights and discharge detail |
| Emergency room visits | one row per ER event | facility and physician charges split by payer |
| Office-based provider visits | one row per visit | provider specialty, condition linkage, payments by source |
| Outpatient visits | one row per outpatient event | agency type, charges and payments |
| Prescribed medicines | one row per purchase or refill | drug detail, quantity, and payments split across payer and household |
| Other medical expenses | one row per expense episode | equipment, supplies and services outside the visit-based files |
Questions buyers ask
What is the Medical Expenditure Panel Survey?
The Agency for Healthcare Research and Quality's continuously fielded survey of US health care since 1996, and the most detailed national source on expenditures, utilization, payments and insurance coverage for the civilian noninstitutionalized population. It runs three components - households interviewed across overlapping two-year panels, employers surveyed on plans and premiums, and a provider component that reconciles household reports against medical records.
What does one MEPS record contain?
A person-grain row carries identifiers, demographics, health status, employment and income, annual use and expenditure totals with payment-by-source splits, twelve monthly insurance-coverage flags by source, and a full-year sampling weight. Event-level files extend the same people to one row per doctor visit, hospital stay, emergency-room event, dental visit or prescription fill.
How far back does MEPS data reach?
Survey years 1996 through 2024 across 493 published files, with overlapping panels meaning most respondents carry two consecutive calendar years of history. Longitudinal panel files preserve that two-year span per person, and expenditure projections align the series to the National Health Expenditure Accounts.
Does MEPS include insurance premiums and employer contributions?
Yes, on the employer side. The Insurance Component surveys private and public establishments on plan types, premium levels, employer and employee contributions, eligibility requirements, benefits and firm characteristics - delivered as national, regional, state and metro summary tables rather than firm-level microdata, which stay confidential by design.
How is MEPS different from claims data?
Claims describe one insurer's book; MEPS describes the whole person, insured or not. It captures out-of-pocket spending, care received without coverage, and month-by-month transitions between coverage sources - including the uninsured spells a claims warehouse never sees - with payments reconciled against provider records rather than taken on recall alone.
Can MEPS support state-level analysis?
The household microdata support national and census-region estimates; state-level detail is published through the employer-side summary tables instead. If your question is state-specific, the state tables answer coverage and premium questions, while the KFF State Health Facts and Health Policy Data companion fills in program context.
Can Datadory deliver a sample scoped to my population?
Yes. Samples are cut to your survey years, service categories and population filters - an event-level extract of prescription fills for one age band, or consolidated full-year person rows for a coverage-transition study. You see real rows and the resolved field dictionary for your slice before any commitment.
See the rows before you pay anything.
Name this dataset and we send real records from it — scoped to the fields you asked for.