NEWMedicare Advantage 2027 plans are live in the API.Read the changelog

Provider profile

GEThttps://api.inplan.io/v1/providers/{npi}

Who the provider is, from national provider registry records: name and credential, specialties, practice locations, groups and facility affiliations. plan_summary counts the plans that list the provider.

.mdView as MarkdownFree plan and up · 1 call

WHEN TO USE IT

Use it to show a provider before you check plans, or to see in one call how many marketplace and Medicare Advantage plans list them. To list those plans, call GET /v1/providers/{npi}/plans.

PATH PARAMETERS

Path parameters for GET /v1/providers/{npi}
NAMEDESCRIPTION
npi
string · Required
The provider's 10-digit National Provider Identifier. We validate the check digit.
Example: 1184617268

RESPONSE FIELDS

Every response has the envelope request_id, data_as_of, data, sources and notes (details). Fields of data:

Response fields
FIELDDESCRIPTION
npi
string
The NPI you asked for.
profile_found
boolean
true when we hold identity details for this NPI. When false, only npi, plan_summary and links are present.
name
object
The name as published, with a display form.
name.first
string
First name.
name.middle
string
Middle name.
name.last
string
Last name.
name.suffix
string | null
Suffix, for example Jr.
name.display
string
Name and credential ready to show, for example "Michael B. Williard, MD". We never add titles.
credential
string
The credential as published, for example MD, DO, NP or PA.
gender
string
male, female, or null when not published.
status
string
active or deactivated in the national provider registry.
specialties
object[]
Specialties, primary first.
specialties[].name
string
The specialty name.
specialties[].primary
boolean
true for the primary specialty.
education
object
Training details, or null when not published.
education.medical_school
string
The school named in the registry.
education.graduation_year
integer
The graduation year.
locations
object[]
Practice locations.
locations[].address_line_1
string
Street address. null when the provider asked us to hide contact details.
locations[].address_line_2
string | null
Suite or second address line.
locations[].city
string
City.
locations[].state
string
2-letter state code.
locations[].zip
string
5-digit ZIP code.
locations[].phone
string | null
Phone number, digits only. null when not published or hidden at the provider's request.
locations[].latitude
number | null
Latitude of the location, when known.
locations[].longitude
number | null
Longitude of the location, when known.
locations[].group
object
The group practice at this location, or null.
locations[].group.name
string
The group name.
locations[].group.pac_id
string
The group identifier in the national registry.
locations[].telehealth
boolean | null
true when the registry marks telehealth at this location, else null.
groups
object[]
Group practices the provider belongs to.
groups[].name
string
The group name.
groups[].pac_id
string
The group identifier in the national registry.
groups[].members
integer
Number of providers in the group.
affiliations
object[]
Facilities the provider is affiliated with.
affiliations[].facility_type
string
For example Hospital or Home health agency.
affiliations[].ccn
string
The facility's 6-character certification number.
affiliations[].name
string | null
Facility name, when we hold it.
affiliations[].city
string | null
Facility city.
affiliations[].state
string | null
Facility state.
privacy
object
Privacy settings for this record.
privacy.contact_masked
boolean
true when the provider asked us to hide street address and phone. Those fields are then null.
plan_summary
object
Counts of the plans that list this provider. Get the plans from links.plans.
plan_summary.aca
object
Marketplace plans.
plan_summary.aca.plans
integer
Plan and plan-year pairs that list the provider.
plan_summary.aca.issuers
integer
Insurers among those plans.
plan_summary.aca.states
string[]
States of those plans.
plan_summary.aca.plan_years
integer[]
Plan years with a listing.
plan_summary.aca.as_of
date
The newest date we read a directory that lists the provider.
plan_summary.ma
object
Medicare Advantage plans.
plan_summary.ma.plans
integer
Plan and plan-year pairs that list the provider.
plan_summary.ma.organizations
integer
Organizations among those plans.
plan_summary.ma.plan_years
integer[]
Plan years with a listing.
plan_summary.ma.accepting_new_patients_any
boolean
true when at least one directory says the provider accepts new patients, else null.
plan_summary.ma.as_of
date
The newest date we read a directory that lists the provider.
links
object
Related endpoints.
links.plans
string
The path of the full plan list for this provider.

RESPONSES

The profile, shortened here to one location.

200 OK · application/json
{  "request_id": "req_fjj3DnMpm3d4ZZNK",  "data_as_of": "2026-10-29",  "data": {    "npi": "1184617268",    "profile_found": true,    "name": {      "first": "Michael",      "middle": "Buttimer",      "last": "Williard",      "suffix": null,      "display": "Michael B. Williard, MD"    },    "credential": "MD",    "gender": "male",    "status": "active",    "specialties": [      {        "name": "Orthopedic Surgery",        "primary": true      }    ],    "education": {      "medical_school": "Ohio State University College of Medicine",      "graduation_year": 1987    },    "locations": [      {        "address_line_1": "605 Crescent Pl",        "address_line_2": null,        "city": "Gahanna",        "state": "OH",        "zip": "43230",        "phone": "6145457900",        "latitude": null,        "longitude": null,        "group": {          "name": "Orthopedic One, Inc.",          "pac_id": "3072598283"        },        "telehealth": null      }    ],    "groups": [      {        "name": "Orthopedic One, Inc.",        "pac_id": "3072598283",        "members": 282      }    ],    "affiliations": [      {        "facility_type": "Home health agency",        "ccn": "368154",        "name": null,        "city": null,        "state": null      },      {        "facility_type": "Hospital",        "ccn": "360035",        "name": "Mount Carmel East & West",        "city": "Columbus",        "state": "OH"      }    ],    "privacy": {      "contact_masked": false    },    "plan_summary": {      "aca": {        "plans": 77,        "issuers": 4,        "states": [          "OH"        ],        "plan_years": [          2025,          2026,          2027        ],        "as_of": "2026-10-28"      },      "ma": {        "plans": 36,        "organizations": 4,        "plan_years": [          2027        ],        "accepting_new_patients_any": true,        "as_of": "2026-10-29"      }    },    "links": {      "plans": "/v1/providers/1184617268/plans"    }  },  "sources": [    {      "type": "provider_registry",      "description": "National provider registry and practice records",      "as_of": "2026-10-29"    },    {      "type": "insurer_directory",      "description": "Provider network directories published by health insurers",      "as_of": "2026-10-29"    },    {      "type": "plan_catalog",      "description": "Published health plan catalogs",      "as_of": "2026-10-28"    },    {      "type": "plan_directory",      "description": "Provider network directories published by Medicare Advantage plans",      "as_of": "2026-10-29"    }  ],  "notes": [    "Network directories change. Confirm with the plan or the provider before care."  ]}

The NPI is not 10 digits or fails its check digit.

400 Bad Request · application/problem+json
{  "type": "invalid_npi",  "title": "Invalid NPI",  "status": 400,  "detail": "\"1234567890\" fails the NPI check digit (Luhn with prefix 80840).",  "instance": "/v1/providers/1234567890",  "request_id": "req_RYHURQjbqOzSrK9m",  "docs": "https://inplan.io/docs/errors#invalid_npi"}

The Authorization header is missing or malformed, or the key is unknown or revoked.

401 Unauthorized · application/problem+json
{  "type": "unauthorized",  "title": "Missing API key",  "status": 401,  "detail": "Send `Authorization: Bearer ip_live_...`.",  "instance": "/v1/providers/1184617268",  "request_id": "req_eQx8WCqv-SXJ-RZw",  "docs": "https://inplan.io/docs/errors#unauthorized"}

We hold no provider record and no plan listing for this NPI.

404 Not Found · application/problem+json
{  "type": "not_found",  "title": "Provider not found",  "status": 404,  "detail": "No provider found for NPI 1999999984.",  "instance": "/v1/providers/1999999984",  "request_id": "req_eHYrIWCixJ4RIl52",  "docs": "https://inplan.io/docs/errors#not_found"}

ERROR FORMAT

Errors use application/problem+json (RFC 7807) with type, title, status, detail, instance, request_id and docs. Other statuses this endpoint can return: 403 (plan, account or demo-key limit), 429 (rate limit or quota) and 503 (busy or timed out; retry after Retry-After). See Errors.

RATE-LIMIT HEADERS

Every response that passes the key and plan checks carries RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, RateLimit-Policy, X-Quota-Limit, X-Quota-Remaining, X-Quota-Reset and X-Request-Id. Limits apply to each key. See Rate limits and quotas.

Limits by plan
PLANREQUESTS A SECONDCALLS A MONTH
Free2500
Builder1025,000
Growth25150,000
ScaleSet with youSet with you