chart-barACA 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.arrow-up-right

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:

Table
Purpose

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

ACA Marketplace 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

Column
Type
Description

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

Column
Type
Description

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

Column
Type
Description

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

Column
Type
Description

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

Column
Type
Description

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

Column
Type
Description

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

Column
Type
Description

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:

Platform
Schema
Example

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.

circle-check
Platform
Action

Snowflake

Coming soon to Snowflake Marketplace

circle-check

Data Sources

Last updated