Not a government site. Check details with your plan.

Use the Data

Back to Source Data

All of the data on this site is free to download, with no sign-up. To see how it was gathered, read Source Data.

May I reuse it?

Yes, you're welcome to. A formal license has not been chosen yet. If you use the data, please say where it came from and link back, so people can check the source.

Data files

The simplest way in: the same JSON files this site reads. They need no key.

Each state file starts with exported_at, the date the file was made.

API

For custom queries, use the read-only REST API.

The API runs on a free database that can go to sleep when idle. If it is asleep, use the data files.

What to expect

Endpoint reference

Generated from the project's API documentation. Add the two headers from the API section above to every request. Query syntax is PostgREST's: ?state_id=eq.OH, ?select=plan_name,reward_name, ?limit=100&offset=0.

GET /reward_comparison — Full reward data

The primary endpoint. Returns one row per reward, fully denormalized with plan, category, state, limits, and eligibility data. This is the public API contract — column names will not be renamed or removed.

ColumnTypeDescription
state_idtextTwo-letter state abbreviation (e.g. OH, CA)
state_nametextFull state name
program_nametextState Medicaid program name (e.g. "Mountain Health Trust")
baseline_coveragetextWhat all plans in the state cover by default
plan_iduuidHealth plan identifier
plan_nametextPlan brand name in this state
plan_short_nametextAbbreviated display name
plan_colortextHex color for UI rendering
plan_phonetextMember services phone number
plan_websitetextPlan website URL
parent_companytextNational parent company name, or null
service_area_typetextSTATE, REGION, or COUNTY
service_area_nametextGeographic area the plan covers
category_idtextBenefit category slug (e.g. dental, wellness)
category_nametextHuman-readable category name
category_icontextEmoji icon for the category
category_orderintegerDisplay sort order
category_colortextHex color for the category
reward_iduuidCatalog reward identifier (154-row normalized catalog)
reward_nametextNormalized reward title
short_labeltextShort display label for UI tiles (≤6 words)
shared_summarytextOne-sentence consumer description of the reward
detailtext2–4 sentence comparison guidance for cross-plan evaluation
compare_archetypetextDOLLARS, QUANTITY, VARIANT, or PROVISION — comparison strategy
reward_listing_iduuidPer-plan listing identifier
listing_descriptiontextPer-plan listing description (may differ from catalog)
reward_descriptiontextPer-plan description (alias of listing_description)
qualifiertextWho qualifies: all_members, pregnancy, postpartum, respiratory, metabolic, behavioral, cardiovascular, chronic, disability, housing, reentry, enrollment, needs_based
reward_classtextSERVICE, INCENTIVE, GOODS, ACCESS, or PROGRAM
activitiesjsonbArray of per-activity breakdown objects, or null. See below.
variant_labeltextDistinguishing label for VARIANT archetype rewards, or null
access_notetextAccess instructions (phone, app, vendor) for PROVISION rewards, or null
valuesjsonbArray of structured limit/value objects (v9 native), or null
source_urltextURL of the primary source document
reward_limitsjsonbArray of limit objects (alias of values), or null
reward_eligibilityjsonbArray of eligibility rule objects, or null
redirect_urltextURL to the state's own comparison tool (full redirect), or null
official_resource_urltextURL to the state's official comparison resource (attribution link), or null
official_resource_labeltextDisplay name for the official resource, or null
insurer_iduuidv9 name of plan_id
insurer_brandtextv9 name of plan_name
insurer_shorttextv9 name of plan_short_name
insurer_colortextv9 name of plan_color
insurer_phonetextv9 name of plan_phone
insurer_websitetextv9 name of plan_website
corporate_parenttextv9 name of parent_company
medicaid_brandtextState Medicaid program brand (v9 name of program_name on api_states)
program_iduuidConsumer-facing program the listing belongs to (STAR, CHIP, HIP…)
program_insurer_area_iduuidThe program × insurer × area row the listing hangs on
area_labeltextService-area label of that row, or null
evidence_typetextconfirmed (found in a plan document) or inferred_mandatory
eligibilityjsonbv9 name of reward_eligibility

reward_limits element

FieldTypeValues
amountnumericDollar amount or quantity cap
frequencytextMONTHLY, YEARLY, ONE_TIME, PER_OCCURRENCE, QUARTERLY, BIENNIAL
applies_totextMEMBER, HOUSEHOLD, CHILD
is_maximumbooleanWhether the amount is a cap
limit_quantitynumericNon-dollar quantity limit
limit_unittextUnit for limit_quantity (e.g. visits, items)

activities element

FieldTypeValues
activitytextActivity name (e.g. "Well-child visit", "HPV vaccine")
amountnumericDollar amount or quantity for this activity
unittextdollars, meals, subscription — defaults to dollars
frequencytextannual, per_visit, one-time, monthly, per_pregnancy, etc.
audiencetextTarget population (e.g. "Ages 0-15 months", "adults") — present for audience_split rewards
max_amountnumericCap for per-visit rewards
max_visitsnumericVisit cap for per-visit rewards

Only present on rewards with structured per-activity breakdowns. Most rewards will have activities: null.

reward_eligibility element

FieldTypeValues
rule_typetextAGE_RANGE, CONDITION, PROGRAM, MATERNITY, ENROLLMENT_REQUIRED
age_minintegerMinimum age in years
age_maxintegerMaximum age in years
condition_nametextRequired health condition (e.g. "Diabetes", "Asthma")

GET /api_states — State directory

One row per state. Use this to build a state picker or discover which states have data.

ColumnTypeDescription
state_idtextTwo-letter abbreviation
state_nametextFull name
medicaid_brandtextState Medicaid program brand (e.g. "AHCCCS", "Medi-Cal")
program_nametextBackward-compat alias of medicaid_brand
flow_typetextEnrollment flow archetype for this state
is_regionalizedbooleanWhether the state has regional plan areas
official_resource_urltextURL to the state's official comparison resource, or null
redirect_urltextURL to the state's own comparison tool (full redirect), or null
agency_labeltextState Medicaid agency name (e.g. "Kentucky DMS")
agency_phonetextState Medicaid agency phone number
agency_urltextState Medicaid agency website
insurer_countintegerNumber of active insurers in the state
plan_countintegerBackward-compat alias of insurer_count
reward_countintegerTotal reward listings across all insurers
avg_rewards_per_plannumericMean reward listings per insurer (backward-compat name)
disclosure_tiertextData coverage classification (see below)
data_completeness_scorenumericComputed data quality score

Disclosure tiers

Computed from live data — updates automatically as coverage improves.

TierCriteriaMeaning
externalState has own comparison toolRedirect: state provides its own plan comparison with extra benefits
greenMulti-plan, avg ≥ 15 rewards/planWell-covered: rich per-plan data, strong comparison
yellowMulti-plan, avg 10–14.9 rewards/planAdequate: meaningful data, some gaps likely
redMulti-plan, avg < 10 rewards/planThin: managed care state with sparse extraction
graySingle plan entityStructural: FFS/PCCM, no plan comparison possible

GET /api_categories — Benefit categories

One row per category, ordered by display position.

ColumnTypeDescription
category_idtextSlug identifier (e.g. dental, rewards)
category_nametextHuman-readable name
category_icontextEmoji icon
category_colortextHex color
display_orderintegerRecommended sort position
reward_countintegerTotal rewards in this category

GET /api_plans — Insurer directory

One row per insurer per state, with reward counts and contact info. Column names use plan_* for backward compatibility (v9 entities are "insurers" internally).

ColumnTypeDescription
state_idtextState abbreviation
state_nametextFull state name
plan_iduuidInsurer identifier (backward-compat name)
plan_nametextFull brand name
plan_short_nametextShort display name
plan_colortextHex color
plan_phonetextMember services phone
plan_websitetextWebsite URL
parent_companytextCorporate parent, or null
service_area_nametextGeographic area label
reward_countintegerNumber of reward listings

GET /api_universal_rewards — Federal benefits

Federal mandates that apply to all Medicaid members regardless of plan (NEMT, Free Cell Phone). Sourced from the federal_benefits table.

[
  {
    "id": "...",
    "reward_name": "Non-Emergency Medical Transportation (NEMT)",
    "category": "Transportation",
    "description": "Free rides to and from medical appointments...",
    "authority": "42 CFR § 431.53",
    "is_active": true
  }
]
ColumnTypeDescription
iduuidUnique identifier
reward_nametextFederal benefit title
categorytextReward category name
descriptiontextConsumer-facing description
authoritytextFederal regulatory authority citation
is_activebooleanWhether currently active

GET /rpc/api_health — Health check and data stats

Returns API status, data freshness, and endpoint list. No parameters needed; GET and POST both work.

{
  "status": "ok",
  "api_version": "2.1",
  "data": {
    "total_rewards": <live count>,
    "total_reward_definitions": <live count>,
    "total_universal_rewards": <live count>,
    "total_plans": <live count>,
    "total_states": <live count>,
    "total_sources": <live count>,
    "total_extractions": <live count>,
    "categories": <live count>,
    "newest_update": "<timestamp>",
    "oldest_record": "<timestamp>"
  },
  "endpoints": [
    "reward_comparison",
    "api_states",
    "api_categories",
    "api_plans",
    "api_universal_rewards",
    "rpc/api_health"
  ]
}
data keyMeaning
total_rewardsreward_listings row count (per-plan instances)
total_reward_definitionsrewards catalog row count
total_universal_rewardsfederal_benefits row count
total_plansDistinct active insurers (program_insurer_areas.status IS DISTINCT FROM 'exited')
total_statesstates row count
total_sourcessources row count
total_extractionsextractions row count
categoriesreward_categories row count
newest_updateMax reward_listings.last_changed
oldest_recordMin rewards.created_at

api_health() runs as SECURITY INVOKER, so every count reflects only what the anon role can read under RLS — it is not a privileged snapshot of the full table.