MarketScan (Truven/Merative)
A family of de-identified US commercial claims databases (Commercial Claims and Encounters, Medicare Supplemental, Medicaid Multi-State) pooling employer and insurer records for tens of millions of enrollees annually - the most widely used US claims source in pharmacoepidemiology and health-services research.
On this page
MarketScan pools de-identified medical, pharmacy, and enrollment records from hundreds of US employers and insurers into person-level files spanning commercially insured lives, Medicare-eligible supplementally insured retirees, and Medicaid beneficiaries across selected states. Its decades-long history, large pool, and breadth of published validation studies make it the default choice for many drug-safety and comparative-effectiveness questions in working-age populations.
MarketScan
(originally Truven Health Analytics, now Merative) is a family of de-identified US claims databases: Commercial Claims and Encounters (employer- and health-plan-sourced commercial insurance), Medicare Supplemental and Coordination of Benefits (retirees with Medicare plus supplemental commercial coverage), and Medicaid Multi-State (selected state programs). Person-level linkage of inpatient, outpatient, and pharmacy claims with enrollment timelines supports cohort construction with defined lookback windows.
Why it matters for RWE
MarketScan has been the dominant US commercial claims source for two decades; most standard pharmacoepidemiologic methods (new-user designs, propensity-score matching, self-controlled designs) were routinely applied to it, producing an unusually rich validation literature. Its scale enables rare-outcome safety studies; its multi-payer pooling reduces single-payer idiosyncrasy.
Operational characteristics
- Enrollment-driven: continuous-enrollment gating defines cohorts; typical designs require 6-12 months pre-index lookback.
- Family linkage: enrollment files identify family units, enabling household and pregnancy-partner analyses.
- No results data: no labs or vitals; biomarker endpoints are impossible without external linkage.
- Medicare Supplemental caveat: covers Medicare-eligible retirees with supplemental commercial coverage, not FFS Medicare itself; dual coverage complicates claim attribution.
Common pitfalls
- Employer-group turnover creates non-health-related censoring; treat disenrollment carefully in time-to-event analyses.
- Pool composition shifts year to year as employers join/leave; secular trends can reflect the pool rather than practice.
- Out-of-network care may generate claims only via out-of-pocket reimbursement submissions; completeness varies.
- No clinical results: severity adjustment is limited to coded comorbidities and utilization proxies.
Pros, cons, and trade-offs
- vs Optum Clinformatics: larger pooled multi-payer population vs integrated labs and single-payer consistency.
- vs SEER-Medicare: working-age generalizability vs cancer-registry clinical depth in seniors.
- Trade-off: scale vs depth — MarketScan maximizes sample size and follow-up length but carries pure claims granularity.
When NOT to use
Elderly-focused questions better served by Medicare FFS; biomarker-defined endpoints without external lab linkage; outcomes dominated by care outside covered networks.
Decision diagram
flowchart LR E[Employers] --> P[Payers / insurers] P --> MS[MarketScan pooling - de-identified] MS --> CCAE[Commercial CCAE] MS --> MCR[Medicare Supplemental] MS --> MCD[Medicaid Multi-State] CCAE --> S[Cohort RWE studies] MCR --> S MCD --> S
Worked example
Scenario
New-user cohort study comparing cardiovascular hospitalization risk between two antihypertensive classes in commercially insured adults.
Dataset
New-user design summary statistics.
| cohort | n_new_users | ps_matched_n | hhosp_1yr_pct | adj_hr |
|---|---|---|---|---|
| ACEi - 148220 - 96400 - 0.021 - 1.00 | ||||
| ARB - 112870 - 96400 - 0.018 - 0.87 |
Steps
Result
PS-matched HR 0.87 (95% CI 0.79-0.96) favoring ARBs; negative controls balanced, supporting residual-confounding control.
Trade-offs
Runnable example
New-user cohort construction with PS matching skeleton.
\
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import NearestNeighbors
def new_user_cohort(disp, elig):
first = disp.sort_values(["member_id","rx_date"]).groupby("member_id").first()
idx = first.reset_index().rename(columns={"rx_date":"index_date","drug_class":"cohort"})
# 12-month continuous enrollment gate
ok = []
for _, r in idx.iterrows():
e = elig[elig.member_id == r.member_id]
ok.append(((e.enroll_start <= r.index_date - pd.Timedelta(days=365)) &
(e.enroll_end >= r.index_date + pd.Timedelta(days=365))).any())
return idx[pd.Series(ok, index=idx.index)]
def ps_match(cohort, covariates):
X = cohort[covariates]
ps = LogisticRegression(max_iter=1000).fit(X, cohort.cohort).predict_proba(X)[:,1]
cohort = cohort.assign(ps=ps)
treated = cohort[cohort.cohort=="ARB"]; control = cohort[cohort.cohort=="ACEi"]
nn = NearestNeighbors(n_neighbors=1).fit(control[["ps"]])
_, ix = nn.kneighbors(treated[["ps"]])
return treated.merge(control.iloc[ix.flatten()], on=None, how="left",
left_index=True, right_index=True, suffixes=("_t","_c"))
R version: cohort gate + MatchIt-style PS matching skeleton.
\
library(dplyr); library(MatchIt); library(survival)
new_user_cohort <- function(disp, elig) {
idx <- disp %>% arrange(member_id, rx_date) %>%
group_by(member_id) %>% slice_head(n = 1) %>%
ungroup() %>% rename(index_date = rx_date)
gated <- idx %>% inner_join(elig, by = "member_id") %>%
filter(enroll_start <= index_date - 365, enroll_end >= index_date + 365) %>%
distinct(member_id, .keep_all = TRUE)
gated
}
fit_ps <- function(cohort, covs) {
m <- MatchIt::matchit(as.factor(cohort) ~ ., data = cohort[, c("cohort", covs)],
method = "nearest", ratio = 1)
matched <- MatchIt::match.data(m)
coxph(Surv(time, event) ~ cohort, data = matched,
weights = weights, robust = TRUE)
}
SAS PROC PSMATCH workflow.
\
proc psmatch data=cohort region=cs;
class cohort sex region;
model cohort(Treatment='ARB') = age sex charlson n_comed util_prior;
psweight stw type=attw(ctl='ACEi');
match distance=lps caliper=0.2;
assess lps var=(age charlson) / plots=all;
run;
proc phreg data=matched;
class cohort(ref='ACEi');
model days_to_event*event(0) = cohort / rl covsandwich;
run;
Citations
- [1]Schaefer EW, et al. Truven Health Analytics MarketScan Databases for Clinical Research in Colon and Rectal Surgery. Clinics in Colon and Rectal Surgery. 2019.
- [2]Dahlen AD, et al. Evaluating the generalizability of commercial healthcare claims data. American Journal of Epidemiology. 2025.
- [3]Merative (formerly IBM Watson Health / Truven Health Analytics). MarketScan Research Databases.