healthcare.dev docs
API referenceMedicare Advantage

Medicare Advantage organizations with internal criteria postings

GET /v1/medicare-advantage/plans

GET https://api.healthcare.dev/v1/medicare-advantage/plans

Pro plan and up (below: a few preview calls a month, then 403 plan-upgrade-required). Preview: not available yet. Medicare Advantage organizations whose public internal coverage criteria posting we hold, with the contracts we know for each (any of them can be looked up), how many services and procedure codes the posting covers, and its pages. Filter by text (q: organization name or id, or a contract such as H1036). Sorted by name. Then GET /v1/medicare-advantage/{plan_id}/criteria.

Requires an API key: Authorization: Bearer hdev_live_.... See Authentication.

Query parameters

NameTypeRequiredDescriptionExample
qstringnoOrganization name or id, or a contract (H1036)humana
limitintegernoPage size (max 100)25
cursorstringnoOpaque cursor from links.next
view"compact" | "standard" | "full"noHow much of each record to return (default full). compact: id, name, contracts (fewest tokens, for agents). standard: every field except posting_urls. full: every field.compact
fieldsstringnoComma-separated fields to return instead of a view. Valid fields: id, name, applies_to, contracts, service_count, code_count, posting_urls, updated_date.id,name,contracts

Examples

curl

curl "https://api.healthcare.dev/v1/medicare-advantage/plans?q=humana&limit=25" \
  -H "Authorization: Bearer $HDEV_API_KEY"

TypeScript

const res = await fetch("https://api.healthcare.dev/v1/medicare-advantage/plans?q=humana&limit=25", {
  headers: { Authorization: `Bearer ${process.env.HDEV_API_KEY}` },
});
const { data, meta } = await res.json();

Python

import os
import requests

res = requests.get("https://api.healthcare.dev/v1/medicare-advantage/plans?q=humana&limit=25", headers={"Authorization": f"Bearer {os.environ['HDEV_API_KEY']}"})
body = res.json()

Try it

GEThttps://api.healthcare.dev/v1/medicare-advantage/plans?q=humana&limit=25&view=compact&fields=id%2Cname%2Ccontracts
Get a free key
Copy as curl
curl "https://api.healthcare.dev/v1/medicare-advantage/plans?q=humana&limit=25&view=compact&fields=id%2Cname%2Ccontracts" \
  -H "Authorization: Bearer $HDEV_API_KEY"

Response

Organizations, by name

{
  "data": [
    {
      "id": "string",
      "name": "string",
      "applies_to": "all_ma_plans",
      "contracts": [
        "string"
      ],
      "service_count": 1,
      "code_count": 1,
      "posting_urls": [
        "string"
      ],
      "updated_date": "2026-10-01"
    }
  ],
  "meta": {
    "source": "cms-icd10",
    "data_version": "2026.1",
    "retrieved_at": "2026-10-24T12:00:00Z",
    "license": "Public domain (CMS). Reference data, not medical advice."
  },
  "links": {
    "self": "/v1/medicare-advantage/plans?q=humana&limit=25",
    "next": "/v1/medicare-advantage/plans?q=humana&limit=25&cursor=eyJrIjoiRTExLjkifQ"
  }
}

Fields

FieldTypeAlways presentDescription
idstringyesOrganization id, e.g. humana
namestringyes
applies_to"all_ma_plans"yes
contractsstring[]yesIts Medicare Advantage contracts we know; each can be looked up by its id too
service_countintegeryesServices (policies) we serve for it
code_countintegeryesDistinct procedure codes its posting lists
posting_urlsstring (uri)[]yesIts public pages listing the policies
updated_datestring | null (date)yesThe most recent policy date its posting shows

Errors

Errors are application/problem+json (RFC 9457). Branch on type, not on title. See Errors.

StatustypeWhen
400invalid-requestA parameter or the body failed validation; errors lists each field.
401unauthorizedMissing, malformed or revoked API key.
403plan-upgrade-requiredThe plan doesn't include this feature; required_plan names the plan that does.
404not-foundNo record with that id (retired records are still returned).
429rate-limited / quota-exceededToo many requests per second (retry after Retry-After), or the monthly quota is used up.
503dataset-unavailable / unavailableThe dataset has no published version yet, or the service is degraded.

On this page