# CMS rate review site (ratereview.healthcare.gov): ACA individual and small-group rate filings, requested and final average rate change, PY2019-2027

`medicare_silver.fact_urr_submission_history` · Insurer negotiated rates · status live · 11,095 rows

CMS's public summary of every ACA single-risk-pool rate filing, captured from the site's public JSON service: the issuer's requested average rate change, the final change once the state or CMS finishes review, the range across the filing's products, review status and determination, and links to the redacted actuarial memorandum and the consumer justification narrative. The only national source of next year's requested changes before the URR PUF posts, and of FINAL changes per filing (the PUF carries filed changes only). Rates are percent points.

**Grain.** One row per element of one capture bundle: record_type 'submission' (one filing: issuer x state x market x effective date x review period) or 'product' (one product in a filing; captured for PY2026-2027 only). Never add the two. 11,095 rows: 7,372 submissions PY2019-2027 + 3,723 products (PY2026 2,156, PY2027 1,567), one capture per plan year, all taken 2026-10-26 (Athena 178ad67a, 2026-10-26).

| column | type | meaning |
|---|---|---|
| plan_year | int |  |
| record_type | string |  |
| capture_line | bigint |  |
| element_index | int |  |
| state_code | string |  |
| submission_id | bigint |  |
| issuer_hios_id | string |  |
| issuer_name | string |  |
| market | string |  |
| effective_date | date |  |
| review_period | string |  |
| review_status | string |  |
| review_status_code | string |  |
| final_determination | string |  |
| current_status_date | date |  |
| rate_change_requested_pct | double |  |
| rate_change_final_pct | double |  |
| rate_change_range_min_pct | double |  |
| rate_change_range_max_pct | double |  |
| product_count | int |  |
| includes_exchange_plan_flag | int |  |
| product_id | string |  |
| product_name | string |  |
| actuarial_memo_url | string |  |
| consumer_justification_url | string |  |
| reviewer_comments | string |  |
| request_url | string |  |
| fetched_at | string |  |
| response_sha256 | string |  |
| raw_record_json | string |  |
| raw_record_sha256 | string |  |
| artifact_id | string |  |
| source_bundle_bytes | bigint |  |
| bundle_responses | bigint |  |
| expected_artifact_rows | bigint |  |
| capture_started_at | string |  |
| requested_zero_placeholder | int |  |
| response_meta_json | string |  |
| content_fingerprint | string |  |
| observed_period | date |  |
| asserted_at | date |  |
| effective_period_start | date |  |
| effective_period_end | date |  |
| cms_vintage_sequence | int |  |
| parse_revision | int |  |
| parser_artifact_hash | string |  |
| source_url | string |  |
| sha256_content_hash | string |  |
| source_id | string |  |
| is_current | boolean |  |
| bronze_object_key | string |  |
| s3_version_id | string |  |
| vintage_tag | string |  |
| drug_source_version_id | string |  |

Query it: `query_substrate` with `SELECT ... FROM medicare_silver.fact_urr_submission_history WHERE ... LIMIT 100`; read `describe_data_source("medicare_silver.fact_urr_submission_history")` first.
