Get Landscape
get_landscapeReturns the CMS Landscape view of a Medicare plan: monthly premium, in-network MOOP, overall star rating, plan type, and the county/state service-area breadth. Filter by contract_id (required) + optional plan_id (1 to 3 digits, zero-padded), segment_id and year; omit plan_id to list all plans on a contract.
RETURNS a detail payload, not a plan-year count: value.plans is the actual PLAN LIST, ONE ROW PER PLAN SEGMENT (report_year, plan_id, segment_id, segment_count, plan_name, org_name, parent_org_name, plan_type, category, snp_type, total_premium, total_premium_basis, premium_as_filed, consolidated_premium, part_c_premium, part_d_premium, moop_in_network, overall_star_rating, overall_star_status, service_area_county_count / state_count), sorted premium ascending so the cheapest lead; value.summary rolls it up (plan_count = distinct plans, segment_row_count, segmented_plan_count, total premium min / median / max, zero-premium count, premium basis counts, star min / max, total distinct counties); value.row_counts carries matched / returned / truncated and value.query the filters applied. limit bounds the row list (default 200, max 2000); a truncated list always carries a caveat.
READING THE PREMIUM. total_premium is the plan's monthly premium on one basis per row, named in total_premium_basis: 'consolidated' (CMS's Part C plus Part D figure), 'part_c_only_no_drug_coverage' (from CY2025 CMS prints the consolidated premium as 'Not Applicable' on every plan without drug coverage, so the Part C premium is the whole premium), 'part_d_only' (a PDP), or null when CMS filed no figure. CMS's own text is carried in premium_as_filed; its '$-' token (CY2014, 2015, 2019-2023) is a $0 premium, never missing. A segment is its own filed design: a segmented plan has one row per segment with its own premium and MOOP.
Covers ALL plan categories (MA, PDP, SNP, MMP, Cost), 2007-2027; the CY2027 file loaded 2026-09-28. The Landscape drops ~early September, ahead of the October benefits drop, so it is the first official view of the upcoming plan year. Stars for 2013-2020 are read from CMS's text form ('3.5 Stars'); a CMS message in place of a star is carried in overall_star_status. Pair with get_pbp_benefit (benefits) for the full picture. A contract / plan / year with no Landscape rows returns found=false with a not_found_reason.
SOURCE: CMS MA/Part-D Landscape source files.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| limit | No | ||
| plan_id | No | ||
| segment_id | No | ||
| contract_id | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | ||
| as_of | No | ||
| value | Yes | ||
| source | Yes | ||
| status | No | complete | |
| caveats | No | ||
| failure | No | ||
| quality | No | ||
| refusal | No | ||
| vintage | No | as_restated | |
| audit_id | Yes | UUID; ties to medicare_silver.audit_log row. | |
| signature | No | ||
| tenant_id | No | Calling tenant slug, resolved by the binding and stamped via the per-call tenant context. Defaults to the bootstrap 'internal' tenant for local/in-process callers. | |
| timestamp | Yes | ||
| confidence | No | ||
| data_as_of | No | ||
| request_id | Yes | ||
| methodology | No | ||
| snapshot_set | Yes | {table_fqn → iceberg_snapshot_id (int64)}. Per M-2 §2.2. | |
| tool_version | Yes | ||
| response_hash | Yes | SHA-256 of canonicalized form per M-2 §2.4. | |
| result_status | Yes | ||
| vintage_basis | No | default_unmeasured | |
| as_of_asserted | No | ||
| as_of_observed | No | ||
| parse_revision | No | ||
| as_of_effective | No | ||
| freshness_state | No | unknown | |
| methodology_era | No | ||
| confidence_basis | No | ||
| semantic_version | Yes | ||
| invariants_applied | No | ||
| finality_confidence | No | ||
| cms_vintage_sequence | Yes | ||
| parser_artifact_hash | Yes | ||
| methodology_blend_factors | No | ||
| parser_artifact_hash_basis | No | not_evaluated |