Medicare Advantage Competitive Intelligence Monitor avatar

Medicare Advantage Competitive Intelligence Monitor

Pricing

from $5.00 / 1,000 competitive signals

Go to Apify Store
Medicare Advantage Competitive Intelligence Monitor

Medicare Advantage Competitive Intelligence Monitor

Track Medicare Advantage plans, enrollment, county market share, Star Ratings and competitor changes from public CMS data. Detect plan launches, exits, growth, rating changes and geographic expansion.

Pricing

from $5.00 / 1,000 competitive signals

Rating

0.0

(0)

Developer

Kenny Ha

Kenny Ha

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Share

Track Medicare Advantage plans, enrollment, county market share, Star Ratings and competitor changes from public CMS data. Detect plan launches, exits, growth, rating changes and geographic expansion.

Turn public CMS Medicare Advantage data into competitor signals.

CMS publishes everything you need to understand the Medicare Advantage market — and publishes it in a form that answers nothing. The monthly county enrollment file is 3.4 million rows with no history, no market share, no rank, no carrier rollup and no comparison against last month. 94.5% of its cells are suppressed to an asterisk. This Actor does the joining, the arithmetic and the month-over-month diff, and hands you the findings.

KelseyCare Advantage Signature (HMO) · UnitedHealth Group · contract H0332-009
Harris County, TX · 26,596 members · 6.499% of the county's 409,243 MA enrollees
County rank 1 of 160 reporting plans · 1,064 more competitors below CMS's reporting threshold

Every number above is from the live 2026-08 CMS release and hand-checked against the source files.

What does this Actor do?

It reads six public CMS files for two consecutive monthly releases, normalizes and joins them, and returns one of four views:

  • Competitive signals (default) — only what changed, ranked by significance.
  • Plans — one row per Medicare Advantage plan, with enrollment trend, Star Ratings and footprint.
  • County market — one row per plan per county, with market share, rank and the county's competitive picture.
  • Carriers — one row per parent organization, rolled up.

It also remembers what it showed you last time, so a scheduled run can return only what is new to you. On a day when CMS has published nothing new, it finishes in about seven seconds.

Who is it for?

  • Medicare Advantage insurers — track competitors' enrollment, county footprint and rating movement without a data team.
  • Brokers and agencies — see which plans are growing in the counties you sell in, and which carriers just entered or left.
  • Healthcare consultants and strategy teams — county-level market share and rank across every US county, refreshed monthly.
  • Insurtech and healthcare SaaS — a normalized MA plan and enrollment feed without building six CMS parsers.
  • Healthcare investors and analysts — carrier-level share shifts and Star Rating changes as they publish.
  • Provider-network teams — which plans actually have members in your counties.
  • Competitive intelligence teams — a monitored feed instead of a quarterly spreadsheet exercise.

What can you monitor?

  • Which Medicare Advantage plans are gaining or losing enrollment
  • Which carriers are gaining or losing county market share
  • Which carriers entered or exited a county's approved service area
  • Which plans launched, and which disappeared
  • Which contracts' Star Ratings went up or down
  • Which plans are growing fastest in a given state or county
  • Who dominates a county, and how many competitors sit below CMS's reporting threshold
  • How a carrier's footprint is expanding across states and counties

Data sources

All public CMS files. No login, no API key, no personal or beneficiary data.

SourceWhat it providesRequired
Monthly Enrollment by Contract/Plan/State/CountyEnrollment per plan per countyYes
CPSC Contract InfoPlan name, type, carrier, parent organization, SNP and employer-group flagsYes
MA Contract Service Area by State/CountyWhich counties each contract may sell inYes
MA State/County PenetrationOfficial county Medicare Advantage totals — the market-share denominatorYes
Part C and Part D Star Ratings (current + prior year)Contract-level overall, Part C and Part D ratingsOptional
SNP Comprehensive ReportSNP subtype, specialty diseases, integration status, plan segmentsOptional

The newest available release is discovered automatically, along with the previous comparable month. An optional source failing costs only the fields it would have filled; it is reported in the run summary and never fabricated. Full detail, including every column quirk, is in docs/SOURCES.md.

Signals

SignalMeaning
NEW_PLANA plan appeared in CMS data
PLAN_EXITA plan disappeared from CMS data
NEW_COUNTYA carrier added a county to a contract's approved service area
COUNTY_EXITA carrier dropped a county from a contract's approved service area
COUNTY_ENROLLMENT_STARTA plan rose above CMS's county reporting threshold
COUNTY_ENROLLMENT_STOPA plan fell below CMS's county reporting threshold
ENROLLMENT_GROWTH / ENROLLMENT_DECLINEEnrollment moved past both your thresholds
MARKET_SHARE_GAIN / MARKET_SHARE_LOSSCounty or national share moved, in percentage points
STAR_RATING_UP / STAR_RATING_DOWNA contract's overall Star Rating changed

Two of these are deliberately split apart. CMS measures "which counties a contract may sell in" and "does this plan have more than 10 members here" in two different files. Only the first is a market event, so it gets NEW_COUNTY / COUNTY_EXIT. A plan crossing the reporting threshold — 10 members to 11, or 11 back to 10 — gets COUNTY_ENROLLMENT_START / STOP instead. Calling a threshold crossing a county exit would tell you something the data does not say.

Each signal carries a signalScore from 0 to 100 so you can sort by significance. It is a deterministic formula over the size of the enrollment move, the market-share shift, the rating change and the kind of event — no model, no AI, fully documented in docs/METHODOLOGY.md. It ranks what deserves attention; it does not predict business outcomes.

enrollmentChange and enrollmentChangePercent compare the current CMS month against the previous one. Both are withheld, with enrollmentComparable: false, when either month's cell was suppressed — a plan could have moved from 1 to 200 or from 10 to 200 behind the same asterisk, and no honest delta exists.

A suppressed value is null, never 0. CMS suppresses any county cell with 10 or fewer members: 3,204,775 of 3,390,880 rows in the 2026-08 file. Treating those as zero would fabricate 3.2 million facts.

County-level market intelligence

County market share divides plan enrollment by CMS's official county Medicare Advantage total, not by a sum of the visible plan rows. With 94.5% of rows suppressed, summing what is visible undercounts a county by up to 10 members per hidden plan — in Harris County, Texas, 1,064 sub-threshold plans sit alongside the 160 that report, against an official total of 409,243. Each county row also carries:

  • countyVisibleEnrollment — the sum that is visible, so the gap is inspectable
  • countySuppressedPlanCount — how many competitors are present but below the threshold
  • countyRank, previousCountyRank, rankChange — position among reporting plans
  • marketShareChangePp — movement in percentage points, not percent
  • countyPenetrationPercent — how much of the county's Medicare population is in MA
  • inServiceArea — whether the contract is approved to sell there

Star Ratings

Contract-level overall, Part C and Part D ratings for the current rating year, compared against the prior year. Ratings are published annually, so a rating signal fires once — on the run that first sees a new rating year — and once per contract, not once per plan. The rating values stay on every plan and county row on every run.

Contracts with no rating keep null. "Not rated" is a category — a plan too new to be measured — not a low score, and no rating filter removes those rows.

Input examples

Every example below has been run against live CMS data.

Latest competitive signals, nationwide — the default:

{ "outputMode": "signals" }

Monitor one carrier:

{ "outputMode": "signals", "organizations": ["Humana"], "stateStoreName": "humana-monitor" }

Texas county market:

{ "outputMode": "county-market", "states": ["TX"] }

Star Rating changes only:

{ "outputMode": "signals", "signalTypes": ["STAR_RATING_UP", "STAR_RATING_DOWN"] }

Enrollment growth above 20%, meaningful plans only:

{
"outputMode": "signals",
"signalTypes": ["ENROLLMENT_GROWTH"],
"minEnrollmentChangePercent": 20,
"minEnrollmentChangeAbsolute": 100
}

Special Needs Plans, 4 stars and up:

{ "outputMode": "plans", "snpOnly": true, "minStarRating": 4 }

Carrier league table:

{ "outputMode": "carriers" }

Output examples

A signal row, from a real 2026-08 production run:

{
"recordKind": "signal",
"signalType": "ENROLLMENT_GROWTH",
"signalGrain": "plan",
"signalScore": 40.1,
"headline": "SCAN Strive (HMO C-SNP) (H1822-006) grew +23.18% to 1185 members",
"contractId": "H1822",
"planId": "006",
"planName": "SCAN Strive (HMO C-SNP)",
"planType": "HMO",
"organizationName": "SCAN DESERT HEALTH PLAN, INC.",
"parentOrganization": "SCAN Group",
"stateCode": "AZ",
"currentEnrollment": 1185,
"previousEnrollment": 962,
"enrollmentChange": 223,
"enrollmentChangePercent": 23.18,
"starRating": 4.5,
"previousStarRating": 3.5,
"starRatingChange": 1,
"dataPeriod": "2026-08",
"previousDataPeriod": "2026-07",
"monitoringChangeType": "NEW"
}

A county-market row:

{
"recordKind": "county-market",
"contractId": "H0332",
"planId": "009",
"planName": "KelseyCare Advantage Signature (HMO)",
"organizationName": "KS PLAN ADMINISTRATORS, LLC",
"parentOrganization": "UnitedHealth Group, Inc.",
"stateCode": "TX",
"county": "Harris",
"countyFips": "48201",
"currentEnrollment": 26596,
"previousEnrollment": 26583,
"enrollmentChange": 13,
"enrollmentComparable": true,
"countyTotalMaEnrollment": 409243,
"countyVisibleEnrollment": 408469,
"countySuppressedPlanCount": 1064,
"marketSharePercent": 6.499,
"countyRank": 1,
"rankChange": 0,
"inServiceArea": true,
"dataPeriod": "2026-08"
}

Each run also writes a RUN_SUMMARY record to the key-value store with the periods compared, per-source health, signal counts by type, and exactly what was charged.

Dataset views

Four views, one per output mode: Competitive signals, Plans, County market and Carriers. Each puts the business fields first and the technical metadata last, so any of them exports cleanly to CSV or Excel on its own.

Scheduling

Point a monthly schedule at it and leave it. CMS publishes a month around the 7th–14th, so a schedule on the 15th will normally catch each new release.

Daily is also fine and costs almost nothing: skipWhenNoNewCmsPeriod is on by default, so a run that finds nothing new finishes in about seven seconds and charges only the Actor start fee. Changing any filter counts as a different question and always runs in full.

Use a distinct stateStoreName per monitor, and set deltaMode to changes-only or new-only for an alerting feed.

Pricing

Pay-per-event, with tiered discounts for higher Apify plans. Measured on real runs against the 2026-08 release:

RunRowsCost (FREE tier)
Competitive signals, nationwide, first run290$2.95
Carriers, nationwide166$0.06
Plans, nationwide6,458$0.37
County market, one state (Texas)8,028$0.45
County market, nationwide120,475$6.07
Scheduled run, no new CMS release0$0.05
Monthly signals monitor, quiet month~33~$0.38

Unchanged rows and findings you have already been given are never charged, which is what makes recurring monitoring cheap. A first run against a new monitoring name is billed at a reduced baseline rate.

A nationwide county-market run is the one large one — 120,475 rows. Set a cost limit on the run if you want a hard ceiling, or filter to the states you care about. Full breakdown in docs/MONETIZATION.md.

API

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client
.actor('huykenny/medicare-advantage-competitive-intelligence')
.call({ outputMode: 'signals', organizations: ['Humana'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("huykenny/medicare-advantage-competitive-intelligence").call(
run_input={"outputMode": "signals", "states": ["TX"]}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Output formats

JSON, JSON Lines, CSV, Excel, XML, RSS — via the Apify dataset API or the Console. Every view exports independently.

Integrations

Anything Apify connects to: Google Sheets, Slack, webhooks, Zapier, Make, or your own service polling the dataset API.

Reliability

  • The newest CMS release is discovered rather than assumed, and the two months CMS never published (2019-11 and 2023-07) are skipped automatically.
  • Sources are split into required and optional. An optional source failing degrades the output explicitly and is recorded in the run summary; it never fabricates a value and never fails the run.
  • Nothing claims a disappearance unless the download was complete, the run was unfiltered, the two periods are adjacent and row counts clear a completeness floor. Details under Limitations.
  • The 170 MB enrollment file is streamed, never buffered. Peak memory on a nationwide run is about 550 MB.
  • 176 unit tests plus a live suite that asserts the CMS file shapes this Actor depends on.

Limitations

Honest ones, all of them consequences of what CMS publishes.

  • 94.5% of county enrollment cells are suppressed. CMS withholds any cell with 10 or fewer members. Those plans are present in a county but their size is unknowable, so enrollment is null and no delta is computed. County market share therefore covers reporting plans only, against the correct official denominator.
  • No plan segments in enrollment data. CMS publishes SEGMENT_ID only in the SNP Comprehensive Report. Plan identity is contract + plan; segments appear as a segmentIds array. Segment-level enrollment does not exist publicly.
  • Service area is contract-level, not plan-level. NEW_COUNTY and COUNTY_EXIT are therefore contract facts. CMS does not publish a plan-by-county approved service area.
  • Star Ratings are annual and contract-level. They cannot be attributed to an individual plan, and a rating change is news once a year.
  • Carrier totals include employer-group Medicare Advantage, because the CMS enrollment file does not separate it. Use the plan-level isEghp flag to isolate the individual market.
  • No premiums or benefit detail. Those are not in this CMS dataset family.
  • Mid-year months are quiet. Plan rosters and service areas change at the annual boundary, so most launches, exits and footprint changes land between October and January.
  • nationalMarketSharePercent is share of observed enrollment, not of the true national total, which suppressed data makes unknowable.
  • Standalone Part D, PACE and Cost plans are excluded by default. They share these CMS files but are different markets; set planUniverse: "all" to include them.

Data methodology

Every derived figure — enrollment deltas, market share, rank, carrier rollups, the signal score and the removal-safety rules — is specified in docs/METHODOLOGY.md, including the exact formulas and what each one does not claim.

Disclaimer

This is an independent, community-built Actor. It is not affiliated with, endorsed by, or sponsored by the Centers for Medicare & Medicaid Services, Medicare, the U.S. Department of Health and Human Services, or any health insurance company.

All data is derived from publicly available CMS datasets and is intended for research, analytics and competitive intelligence. Figures are only as current and as complete as the CMS files they come from, and CMS suppresses small counts by design.

This Actor does not provide insurance, medical, legal or financial advice. It processes aggregate plan-level data only and collects no beneficiary names, addresses, Medicare numbers, patient records, health records or claims.

Support

Open an issue on the Actor's Apify page. When reporting a data problem, include the run ID — the run summary records which CMS files were used, which sources succeeded and which periods were compared, which is usually enough to pinpoint it.