ACA Marketplace Analytics Dataset
About the Dataset
The ACA Marketplace Analytics Dataset (Affordable Care Act / Obamacare) provides comprehensive, analytics-ready access to the CMS Health Insurance Exchange Public Use Files (Exchange PUFs) from the Centers for Medicare & Medicaid Services, spanning Plan Years 2014 through 2026. Seven government data files from HealthCare.gov and the Federally Facilitated Exchange (FFE) are combined into a single, query-ready Snowflake database: the Rate PUF (premium rates by age and geography), Plan Attributes PUF (deductibles, out-of-pocket maximums, metal levels), Benefits and Cost Sharing PUF (copays, coinsurance, EHB status), Plan ID Crosswalk PUF (year-over-year plan mappings), Service Area PUF (issuer geographic coverage), Business Rules PUF (rate application rules), and Network PUF (provider network references). Built for health insurance analysts, actuaries, health policy researchers, benefits consultants, and anyone working with Qualified Health Plan (QHP) data from the ACA individual marketplace.
🔗 Find the ACA Marketplace Analytics Dataset on the Snowflake Marketplace.
Quick Access
Tables: RATES, PLAN_ATTRIBUTES, BENEFITS_COST_SHARING, PLAN_CROSSWALK, SERVICE_AREAS, BUSINESS_RULES, NETWORK Sources: 7 CMS Exchange Public Use Files from cms.gov Update Frequency: Annual initial release (~October), with 2-3 mid-year corrections Coverage: Federally Facilitated Exchange (FFE) states (~30 states for PY2026)
Overview
The ACA Marketplace Analytics Dataset provides comprehensive access to CMS Exchange PUF data including:
RATES (Rate PUF) - Premium rates by plan, age band, tobacco use, and geographic rating area (~2.2M rows per plan year)
PLAN_ATTRIBUTES (Plan Attributes PUF) - Plan-level details: metal level, plan type, deductibles, MOOP, HSA eligibility, SBC scenario costs (~22K plan variants per year)
BENEFITS_COST_SHARING (Benefits & Cost Sharing PUF) - Benefit-level copays, coinsurance, and coverage details per plan variant (~1.5M rows per year)
PLAN_CROSSWALK (Plan ID Crosswalk PUF) - Year-over-year plan mappings for multi-year trend analysis (~159K rows per year)
SERVICE_AREAS (Service Area PUF) - Geographic coverage by issuer, county, and ZIP code (~8.8K rows per year)
BUSINESS_RULES (Business Rules PUF) - Rate application rules: age determination, tobacco use, dependent rules (~5.1K rows per year)
NETWORKS (Network PUF) - Provider network names and URLs per issuer (~550 rows per year)
All tables include 13 plan years (PY2014-PY2026) of historical data, enabling longitudinal trend analysis across the full history of the ACA marketplaces.
Metadata Tables
Every Dataplex data product includes these standard metadata tables:
FEEDS
Dataset catalog — available tables, descriptions, update dates
FEEDS_FILES
Batch load history with is_latest flag for data freshness
CHANGELOG
Change log — data loads, schema changes, corrections
DATA_DICTIONARY
Column descriptions for all tables
Entity Relationship Diagram

The core join key across RATES, PLAN_ATTRIBUTES, and BENEFITS_COST_SHARING is plan_id. SERVICE_AREAS links via issuer_id + state_code. PLAN_CROSSWALK maps plans across years via plan_id_prior and plan_id_current. Every table includes plan_year for period-partitioned queries and links to FEEDS/FEEDS_FILES via feed_id and feeds_files_id for data lineage tracking.
Data Tables
RATES (Rate PUF)
Premium rate data by plan, subscriber age, tobacco use, and geographic rating area. Each row represents one plan in one rating area for one age/tobacco combination.
Key Features:
~2.2M rows per plan year (PY2026), ~29M rows across all 13 years
Individual and family tier premiums (couple, subscriber+dependents, etc.)
30 FFE states, 359 issuers, 5,144 unique plans (PY2026)
Annual data with mid-year issuer corrections
Column Reference
plan_year
NUMBER
Plan year (2014-2026) — use for period filtering
state_code
VARCHAR
Two-letter state abbreviation (FFE states only)
issuer_id
NUMBER
CMS-assigned issuer identifier
plan_id
VARCHAR
14-character HIOS plan identifier
rating_area_id
VARCHAR
Geographic rating area within state
tobacco
VARCHAR
Tobacco use indicator
age
VARCHAR
Subscriber age band ("0-14", "15", ..., "64", "65 and over", "Family Option")
individual_rate
DECIMAL
Monthly premium for individual subscriber
individual_tobacco_rate
DECIMAL
Monthly premium with tobacco surcharge
couple
DECIMAL
Monthly premium for couple tier
primary_subscriber_and_one_dependent
DECIMAL
Premium for subscriber + 1 dependent
primary_subscriber_and_two_dependents
DECIMAL
Premium for subscriber + 2 dependents
primary_subscriber_and_three_or_more_dependents
DECIMAL
Premium for subscriber + 3+ dependents
couple_and_one_dependent
DECIMAL
Premium for couple + 1 dependent
couple_and_two_dependents
DECIMAL
Premium for couple + 2 dependents
couple_and_three_or_more_dependents
DECIMAL
Premium for couple + 3+ dependents
feed_id
VARCHAR
FK to FEEDS — identifies which dataset this row belongs to
feeds_files_id
VARCHAR
FK to FEEDS_FILES — identifies which batch loaded this data
created_at
TIMESTAMP
When the source data was loaded into the warehouse
updated_at
TIMESTAMP
When the table was last rebuilt
PLAN_ATTRIBUTES (Plan Attributes PUF)
Plan variant-level data including marketing name, metal level, plan type, HSA eligibility, deductibles, maximum out-of-pocket amounts, and SBC scenario costs.
Key Features:
~22,000 plan variants per year across all FFE states
151 columns including cost sharing at multiple tier/network levels
SBC standard scenarios (having a baby, managing diabetes, simple fracture)
Metal level, plan type (HMO/PPO/POS/EPO), and CSR variant classification
Column Reference
plan_year
NUMBER
Plan year (2014-2026)
state_code
VARCHAR
Two-letter state abbreviation
issuer_id
NUMBER
CMS-assigned issuer identifier
standard_component_id
VARCHAR
14-character standard plan component ID
plan_id
VARCHAR
Full HIOS plan ID including variant suffix
plan_marketing_name
VARCHAR
Consumer-facing plan name
plan_type
VARCHAR
Plan network type: HMO, PPO, POS, or EPO
metal_level
VARCHAR
Metal tier: Bronze, Silver, Gold, Platinum, or Catastrophic
is_new_plan
VARCHAR
Whether this plan is new for the current year
is_hsa_eligible
VARCHAR
Whether the plan qualifies for Health Savings Account
mehb_inn_tier1_individual_moop
DECIMAL
Maximum out-of-pocket for in-network individual (MEHB)
mehb_ded_inn_tier1_individual
DECIMAL
Annual deductible for in-network individual (MEHB)
sbc_having_a_baby_deductible
DECIMAL
SBC scenario: total deductible for having a baby
sbc_having_diabetes_deductible
DECIMAL
SBC scenario: total deductible for managing diabetes
csr_variation_type
VARCHAR
Cost-sharing reduction variant type
issuer_actuarial_value
DECIMAL
Actuarial value of the plan
feed_id
VARCHAR
FK to FEEDS — identifies which dataset this row belongs to
feeds_files_id
VARCHAR
FK to FEEDS_FILES — identifies which batch loaded this data
created_at
TIMESTAMP
When the source data was loaded into the warehouse
updated_at
TIMESTAMP
When the table was last rebuilt
BENEFITS_COST_SHARING (Benefits & Cost Sharing PUF)
Benefit-level cost sharing details: copays, coinsurance rates, quantity limits, and EHB status per plan variant and benefit category.
Key Features:
~1.46M rows per plan year (one row per plan variant per benefit)
In-network Tier 1/2 and out-of-network copay and coinsurance
Essential Health Benefit (EHB) classification
Coverage and exclusion indicators
Column Reference
plan_year
NUMBER
Plan year (2014-2026)
state_code
VARCHAR
Two-letter state abbreviation
issuer_id
NUMBER
CMS-assigned issuer identifier
plan_id
VARCHAR
HIOS plan ID with variant — join to PLAN_ATTRIBUTES
benefit_name
VARCHAR
EHB benefit category (e.g., "Primary Care Visit to Treat an Injury or Illness")
copay_inn_tier1
VARCHAR
In-network Tier 1 copay amount
copay_inn_tier2
VARCHAR
In-network Tier 2 copay amount
copay_out_of_net
VARCHAR
Out-of-network copay amount
coins_inn_tier1
VARCHAR
In-network Tier 1 coinsurance rate
coins_inn_tier2
VARCHAR
In-network Tier 2 coinsurance rate
coins_out_of_net
VARCHAR
Out-of-network coinsurance rate
is_ehb
VARCHAR
Essential Health Benefit flag
is_covered
VARCHAR
Whether the benefit is covered by the plan
quant_limit_on_svc
VARCHAR
Whether a quantity limit applies
limit_qty
VARCHAR
Quantity limit value
limit_unit
VARCHAR
Quantity limit unit (e.g., visits, days)
exclusions
VARCHAR
Benefit exclusion notes
feed_id
VARCHAR
FK to FEEDS — identifies which dataset this row belongs to
feeds_files_id
VARCHAR
FK to FEEDS_FILES — identifies which batch loaded this data
created_at
TIMESTAMP
When the source data was loaded into the warehouse
updated_at
TIMESTAMP
When the table was last rebuilt
PLAN_CROSSWALK (Plan ID Crosswalk PUF)
Year-to-year plan mappings at the county/ZIP level. Maps QHPs from the prior plan year to the current year, enabling multi-year trend analysis and plan continuity tracking.
Key Features:
~159K rows per year (PY2015-PY2026; PY2014 has no prior year)
County and ZIP-level geographic granularity
Crosswalk reason codes (renewal, discontinuation, new issuer)
Metal level change tracking and age-off plan mappings
Column Reference
state
VARCHAR
Two-letter state abbreviation
plan_id_prior
VARCHAR
Plan ID from the prior year
plan_id_current
VARCHAR
Mapped plan ID for the current year (NULL if discontinued)
issuer_id_prior
NUMBER
Issuer ID from prior year
issuer_id_current
NUMBER
Issuer ID in current year
metal_level_prior
VARCHAR
Metal tier in the prior year
metal_level_current
VARCHAR
Metal tier in the current year
crosswalk_level
VARCHAR
Match confidence level (plan-to-plan, issuer-level)
reason_for_crosswalk
VARCHAR
Why this mapping exists (renewal, discontinuation, etc.)
fips_code
VARCHAR
5-digit FIPS county code
zip_code
VARCHAR
ZIP code
dental_plan
VARCHAR
Whether this is a dental plan
feed_id
VARCHAR
FK to FEEDS — identifies which dataset this row belongs to
feeds_files_id
VARCHAR
FK to FEEDS_FILES — identifies which batch loaded this data
created_at
TIMESTAMP
When the source data was loaded into the warehouse
updated_at
TIMESTAMP
When the table was last rebuilt
SERVICE_AREAS (Service Area PUF)
Geographic service area coverage by issuer, mapping issuers to the counties and ZIP codes where they offer plans.
Key Features:
~8,800 rows per year
Issuer-to-geography mapping at county and ZIP level
Essential for geographic coverage gap analysis
Column Reference
plan_year
NUMBER
Plan year
state_code
VARCHAR
Two-letter state abbreviation
issuer_id
NUMBER
CMS-assigned issuer identifier
service_area_id
VARCHAR
Issuer's service area code
service_area_name
VARCHAR
Service area display name
county_name
VARCHAR
County name
zip_code
VARCHAR
ZIP code
partial_county
VARCHAR
Whether partial county coverage applies
feed_id
VARCHAR
FK to FEEDS — identifies which dataset this row belongs to
feeds_files_id
VARCHAR
FK to FEEDS_FILES — identifies which batch loaded this data
created_at
TIMESTAMP
When the source data was loaded into the warehouse
updated_at
TIMESTAMP
When the table was last rebuilt
BUSINESS_RULES (Business Rules PUF)
Rate application rules: age determination, tobacco policy, dependent coverage limits, and market coverage scope per standard component.
Key Features:
~5,100 rows per year
Rules define how premiums are calculated and applied
Covers age determination, tobacco-free periods, dependent age limits
Column Reference
plan_year
NUMBER
Plan year
state_code
VARCHAR
Two-letter state abbreviation
issuer_id
NUMBER
CMS-assigned issuer identifier
product_id
VARCHAR
HIOS product identifier
standard_component_id
VARCHAR
Standard component identifier
medical_dental_both
VARCHAR
Whether the rule applies to medical, dental, or both
medical_dental_indicator
VARCHAR
Medical or dental indicator
maximum_underage_dependent
VARCHAR
Maximum age for dependent coverage
dependent_maximum_age_rule
VARCHAR
Rule for maximum dependent age
age_determination_rule
VARCHAR
How age is determined for rating purposes
minimum_tobacco_free_months_rule
VARCHAR
Minimum months tobacco-free to qualify as non-tobacco user
cohabitation_rule
VARCHAR
Cohabitation rule for domestic partners
market_coverage
VARCHAR
Market coverage type (Individual, SHOP, or Both)
dental_only_plan
VARCHAR
Whether this is a dental-only plan
feed_id
VARCHAR
FK to FEEDS — identifies which dataset this row belongs to
feeds_files_id
VARCHAR
FK to FEEDS_FILES — identifies which batch loaded this data
created_at
TIMESTAMP
When the source data was loaded into the warehouse
updated_at
TIMESTAMP
When the table was last rebuilt
NETWORK (Network PUF)
Provider network names and directory URLs for each issuer, enabling consumers to check which network a plan uses and find providers.
Key Features:
~550 rows per year
Maps issuer to network name and provider directory URL
Essential for provider search and network adequacy analysis
Column Reference
plan_year
NUMBER
Plan year
state_code
VARCHAR
Two-letter state abbreviation
issuer_id
NUMBER
CMS-assigned issuer identifier
network_id
VARCHAR
Network identifier
network_name
VARCHAR
Consumer-facing network name
network_url
VARCHAR
URL to the provider directory
feed_id
VARCHAR
FK to FEEDS — identifies which dataset this row belongs to
feeds_files_id
VARCHAR
FK to FEEDS_FILES — identifies which batch loaded this data
created_at
TIMESTAMP
When the source data was loaded into the warehouse
updated_at
TIMESTAMP
When the table was last rebuilt
Data Quality
Standardization
Column normalization: CMS PUF column names are standardized to snake_case across all plan years
Type casting: Premium amounts cast to DECIMAL; IDs maintained as VARCHAR for leading-zero preservation
Schema alignment: PY2014-PY2022 schema differences (TIN/HPID removal, DesignType addition) are normalized to the current schema
UTF-8 BOM handling: Some plan years include BOM markers that are stripped during extraction
Quoting consistency: CSV quoting changed between PY2020 (quoted) and PY2022+ (unquoted) — handled transparently
Coverage Scope
Exchange PUFs cover states on the Federally Facilitated Exchange (FFE) and State-Based Exchanges on the Federal Platform (SBE-FP) — approximately 30 states for PY2026. The following 21 states run fully independent State-Based Exchanges (SBEs) and are not included: CA, CO, CT, DC, ID, KY, ME, MD, MA, MN, NV, NJ, NM, NY, OR, PA, RI, VT, VA, WA.
Data Freshness
Check when data was last updated:
Getting Started
Platform Schema Reference
This dataset is available on both Snowflake and Databricks. Queries use schema-only references — the database is already set by the share or catalog context:
Snowflake
DWV
DWV.RATES
Databricks
aca_marketplace_dwv
aca_marketplace_dwv.rates
Discover Available Data
Start with the FEEDS table to see what's available, and FEEDS_FILES to understand data freshness and load history.
Working with Data Lineage
Every data row links to FEEDS_FILES via feeds_files_id, which tells you exactly which batch loaded that data. Use this to filter to the current data version or trace any row back to its source load.
Premium Rate Benchmarking
Premium Trend Analysis (Multi-Year)
Market Concentration Analysis
Plan Continuity Tracking
Benefit Cost Comparison
Tracking Data Changes Over Time
FEEDS_FILES records every batch load with row_count_delta showing what changed. Use this to monitor source data updates and understand how the dataset evolves.
Ready to access ACA Marketplace data?
Snowflake
Coming soon to Snowflake Marketplace
Databricks
Questions? Contact our team for a walkthrough.
Data Sources
Last updated

