The Healthcare Exclusion Check API. OIG, SAM and state Medicaid lists as JSON.
A healthcare exclusion check API for the HHS-OIG List of Excluded Individuals/Entities, the SAM.gov exclusions and the state Medicaid exclusion lists. Send a name and a date of birth and get back every matching list entry as JSON — the authority, whether it rests on a conviction, the exclusion and reinstatement dates — with a link to the publishing list.
One record kind on the criminal records API, returned by the same search call as court, jail, prison and warrant records, on the same key as the sex offender registry search.
curl -X POST \ https://api.offendersearch.app/v1/criminal/search \ -H "X-API-Key: $OFFENDERSEARCH_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": { "firstName": "Alex", "lastName": "Hamilton", "dob": "1989-04-23" }, "include": ["exclusions"] }'
{ "status": "complete", "counts": { "records": 2, "recordsReturned": 2, "sourcesIncomplete": 0, "exclusionsIncluded": true }, "page": 1, "perPage": 50, "totalPages": 1, "records": [{ "recordType": "healthcare_exclusion", "externalId": "leie:c:3f8a9c1e7b2d4056", "name": { "first": "ALEX", "middle": "Q", "last": "HAMILTON", "suffix": "" }, "dob": { "date": "1989-04-23", "birthYear": 1989, "dobPrecision": "full" }, "state": "OH", "county": null, "currentStatus": "excluded", "matchConfidence": 0.99, "matchState": "dob_match", "matchBasis": "lastName:exact firstName:exact dob:match", "exclusion": { "program": "medicare_medicaid", "authority": "1128(a)(1)", "authorityDescription": "Conviction of program-related crimes", "statute": "42 USC 1320a-7(a)(1)", "convictionBased": true, "excludedOn": "2021-03-19", "reinstatedOn": null, "minimumPeriodYears": 5, "excludingAgency": "HHS-OIG", "npi": "1234567890", "profession": "NURSING PROFESSION" }, "cases": [{ "caseNumber": "", "court": "HHS-OIG", "state": "OH", "level": "federal", "filedDate": "2021-03-19", "status": "excluded", "charges": [{ "statute": "42 USC 1320a-7(a)(1)", "description": "Conviction of program-related crimes", "disposition": "convicted", "dispositionDate": "2021-03-19" }] }], "sources": [{ "code": "US-EXCLUSION", "level": "federal", "recordUrl": "https://…", "lastCheckedAt": "…", "live": false }], "lifecycle": { "presentInLastSweep": true, "droppedOut": false, "dropInterpretation": "unknown" } }, { "recordType": "healthcare_exclusion", "externalId": "ohmedicaid:a:9c41d2e7", "currentStatus": "excluded", "matchState": "dob_match", "exclusion": { "program": "state_medicaid", "authority": "Termination", "authorityDescription": "License surrendered", "convictionBased": false, "excludedOn": "2024-07-01" }, "sources": [{ "code": "OH-EXCLUSION", "level": "state" }] }], "legal": { "notice": "Not a consumer report. …" } }
What a healthcare exclusion check API searches. Three government lists, published by three kinds of agency, in one call.
| List | Who publishes it and what it holds | exclusion.program | Public code | Cadence |
|---|---|---|---|---|
| List of Excluded Individuals/Entities (LEIE) | The HHS Office of Inspector General: people excluded from Medicare, Medicaid and the other federal health programs, with the statutory authority, exclusion and reinstatement dates, a full date of birth on most entries, an address, and an NPI where one exists. | medicare_medicaid | US-EXCLUSION | Republished monthly |
| SAM.gov exclusions | Federal agencies through the System for Award Management: debarments, suspensions and other exclusions from federal awards, with the excluding agency, exclusion type, active and termination dates, an address and cross-referenced names. No date of birth. | federal_procurement | US-EXCLUSION | Published daily |
| State Medicaid exclusion and sanction lists | Each state’s Medicaid program-integrity office: providers and individuals excluded or terminated from the state program, with the action, its date and, in many states, the reason, an NPI or a license number. | state_medicaid | <ST>-EXCLUSION | Mostly monthly |
Every entry arrives as one exclusion-list record: the same normalized schema as every other criminal record, with recordType set to healthcare_exclusion and the list’s own facts in an exclusion block. In the source catalog — GET /v1/criminal/sources, no key needed — the lists are the rows whose record type reads Exclusion list.
What the OIG exclusion list API returns. The exclusion block sits on the record next to the fields every criminal record carries. These are the real fields.
| Field | What it holds |
|---|---|
| recordType | healthcare_exclusion on every exclusion-list record. Every other record in the same response keeps its own kind and carries exclusion: null. |
| exclusion.program | Which list family placed the exclusion: medicare_medicaid (the HHS-OIG list), federal_procurement (a SAM.gov exclusion from a federal agency) or state_medicaid (a state Medicaid list). |
| exclusion.authority, authorityDescription, statute | The authority as the list labels it — an OIG code such as 1128(a)(1), a SAM exclusion type, a state action — in words, with the statute cited. |
| exclusion.convictionBased | true when the authority is a criminal conviction. The one field that decides whether the record is returned on every search or only on request. |
| exclusion.excludedOn, reinstatedOn, minimumPeriodYears | When the exclusion took effect, when the person was reinstated where the list says so, and the statutory minimum period in years where the authority sets one. |
| exclusion.excludingAgency, npi, profession | The agency that placed the exclusion, the National Provider Identifier where published, and the profession or provider type as the list records it. |
| currentStatus | excluded while the person is on the list. A person who leaves the list is kept and flagged in lifecycle with dropInterpretation: "reinstated". |
| cases[].charges[] | One case per exclusion, dated by the exclusion date, whose charge carries the authority with disposition "convicted" or "administrative exclusion". |
| sources[].code, level, recordUrl | US-EXCLUSION for the two national lists, <ST>-EXCLUSION for a state list, with the publishing agency’s own link so a result can be confirmed at the list. |
Every field, with a complete example record: exclusion-list records and the Exclusion object.
LEIE search API: conviction-based exclusions and the optional tier. The lists mix exclusions that rest on a conviction with exclusions that do not. The API keeps them apart and lets you ask for both.
The HHS-OIG list labels every entry with its statutory authority. Some authorities are criminal convictions — 1128(a)(1) through (a)(4), the second- and third-conviction codes under 1128(c)(3)(G), and the misdemeanor codes 1128(b)(1) through (b)(3). Others are not: 1128(b)(4) is a license revocation, suspension or surrender; 1128(b)(14) a default on a health-education loan; 1128(b)(5) an exclusion by another program. SAM.gov entries carry no conviction field at all, so a SAM or state entry counts as conviction-based only when its stated reason names a conviction.
Every exclusion-list record says which it is in exclusion.convictionBased, and that one field decides what a search returns. Conviction-based exclusions are returned on every search, like any other record. Administrative exclusions are returned on request: add "exclusions" to the top-level include array and the license actions, debarments and loan defaults come back too, with counts.exclusionsIncluded: true. Without it that tier is left out and the count reads false, so a response always says which answer it is.
| Tier | exclusion.convictionBased | Returned by | Examples |
|---|---|---|---|
| Conviction-based | true | Every search | HHS-OIG 1128(a)(1)–(4), 1128(c)(3)(G), 1128(b)(1)–(3); a SAM or state entry whose reason names a conviction |
| Administrative | false | include: ["exclusions"] | License revocation or surrender (1128(b)(4)), loan default (1128(b)(14)), SAM procurement debarments, state terminations without a stated conviction |
SAM exclusion check: federal debarments without a date of birth. A list entry names a person. Whether that person is your subject is a separate question, and every record answers it explicitly.
| Field | What it holds |
|---|---|
| name, aliases | The person as the list names them, plus cross-referenced names where the list publishes them. |
| dob.date, dob.birthYear, dobPrecision | Most HHS-OIG entries publish a full date of birth. SAM.gov entries and most state lists publish none; dobPrecision says which. |
| matchState | dob_match when the list published a date of birth and it agrees with yours; no_dob_age_year when the list published none. |
| unverified | true on a record the list publishes no birth evidence for. The record is kept, flagged and ranked below records with birth evidence — never silently dropped. |
| address | The address the list publishes, where it publishes one — the HHS-OIG and SAM.gov lists carry a street address on most entries — so city, zipcode and address filters narrow those records. |
| matchConfidence, matchBasis, matchDetail | The score, the fields that agreed, and one plain sentence explaining the match. |
Send a full date of birth whenever you have one. Most HHS-OIG entries publish one, so the LEIE side of the check reaches dob_match. SAM.gov publishes none, and neither do most state lists: those records come back unverified: true, ranked below every record with birth evidence, and the address the list publishes is carried on the record so a zipcode or address in the query narrows them. A record is only dropped when it has birth evidence that conflicts with yours. See matching for the thresholds.
Medicaid exclusion list check, state by state. Each state publishes its own list in its own shape. The API normalizes them to one record and one code pattern.
| What to check | A state Medicaid list entry | A national list entry |
|---|---|---|
sources[].code | <ST>-EXCLUSION, for example OH-EXCLUSION | US-EXCLUSION for both the HHS-OIG list and SAM.gov |
exclusion.program | state_medicaid | medicare_medicaid or federal_procurement |
exclusion.authority | The state’s action as it labels it — Termination, Exclusion, Suspension — with the reason where the state publishes one | An OIG statutory code such as 1128(a)(1), or a SAM exclusion type |
cases[].level | state | federal |
dob.dobPrecision | Usually none; a few states publish a date of birth | full on most HHS-OIG entries, none on SAM.gov |
Many people on a state list also appear on the HHS-OIG list, because states report their exclusions to the OIG. Both entries are returned, each under its own code, so a reader can see the state action and the federal exclusion side by side. To list the exclusion sources that exist before you search, call GET /v1/criminal/jurisdictions?recordKind=exclusion, optionally with a state; the data sources page renders the same catalog.
Healthcare exclusion check API code samples. Plain REST and JSON, your key in X-API-Key.
Plain REST and JSON, with your key in the X-API-Key header. The person goes inside query, query.lastName is required, and include sits at the top level of the body next to page and perPage.
- One call — exclusion-list entries come back alongside court, custody and warrant records for the same person.
- One filter —
recordType === "healthcare_exclusion"keeps the exclusions;exclusionisnullon everything else. - Lists —
POST /v1/criminal/batchtakes a CSV or a JSON list, withincludeas a batch-wide default. - Stable reference — store
sources[].codewithexternalIdto recognise the same entry on a later search.
curl -X POST \
https://api.offendersearch.app/v1/criminal/search \
-H "X-API-Key: $OFFENDERSEARCH_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": {
"firstName": "Alex",
"lastName": "Hamilton",
"dob": "1989-04-23"
},
"include": ["exclusions"]
}'Healthcare exclusion checks in an FCRA order. On FCRA Partner Access each criminal search carries an exclusions option, and a furnished exclusion-list record keeps its exclusion block.
curl -X POST https://api.offendersearch.app/v1/fcra/orders \ -H "X-API-Key: $OFFENDERSEARCH_KEY" \ -H "Idempotency-Key: 8f1c2a7e-order-912" \ -H "Content-Type: application/json" \ -d '{ "endUserId": "eu_0b44acbeefeaa7d7", "permissiblePurpose": "employment", "consent": { "obtainedAt": "2026-10-19T13:55:00Z", "method": "esign", "documentRef": "auth-55120" }, "subject": { "firstName": "Alex", "lastName": "Hamilton", "dob": "1989-04-23", "addresses": [{ "state": "OH", "city": "Columbus", "from": "2019-01", "to": null }] }, "useLocation": { "state": "OH" }, "searches": [{ "type": "criminal", "exclusions": "all" }] }'
{ "recordId": "crim:US-EXCLUSION:leie:a:7d2e40c19b3f8a65", "type": "criminal", "recordType": "healthcare_exclusion", "matchBasis": { "state": "dob_match", "identifiers": ["name", "dob"] }, "dispositionStatus": "sanction", "exclusion": { "program": "medicare_medicaid", "authority": "1128(b)(4)", "authorityDescription": "License revocation, suspension or surrender", "convictionBased": false, "excludedOn": "2023-11-02", "reinstatedOn": null }, "cases": [{ "court": "HHS-OIG", "level": "federal", "filedDate": "2023-11-02", "charges": [{ "description": "License revocation, suspension or surrender", "disposition": "administrative exclusion", "fcraDisposition": "sanction" }] }], "retrievedAt": "2026-10-19T14:02:11Z", "verifiedAt": "2026-10-19T14:02:40Z" }
searches[].exclusions takes conviction_only (the default), all or none. conviction_only furnishes the exclusions whose basis is a criminal conviction, as convictions dated by the exclusion date. all also furnishes the administrative tier — license actions, debarments, loan defaults — each with dispositionStatus: "sanction" and fcraDisposition: "sanction" on the charge. none furnishes no exclusion-list records.
An FCRA order furnishes exact date-of-birth matches only, so a list entry that publishes no date of birth — most SAM.gov and state entries — is withheld as insufficient_identifiers whatever the setting. The option is documented on orders, the controls on controls and reason codes, and the furnished shape on results.
Exclusion list monitoring: an alert when a person is added. A criminal person monitor watches the same records, so a new exclusion, a change to one, or a reinstatement arrives as an alert.
Nothing changes on the monitor request. When a matched record is an exclusion-list entry the alert’s record.recordType reads healthcare_exclusion and record.exclusion carries the authority, convictionBased and excludedOn, so the email and the webhook can say “added to an exclusion list, authority 1128(a)(1)”. new is a person added to a list, changed an exclusion updated on the list, removed a person reinstated or whose term ended. Only conviction-based exclusions alert, matching what a default search returns. See alerts.
Healthcare exclusion check API pricing. One price per search, whatever comes back. The exclusion lists ride inside the criminal search at no extra charge.
No per-state fee, no seats, no platform fee, no minimum: a fraction of what legacy screening platforms charge.
| Item | Price |
|---|---|
| Free to start | 25 searches, no card |
| Healthcare exclusion check (cached answer) | $0.15 per search |
| Volume rate | $0.11 per search past 2,000 searches in a calendar month |
| Live re-verification | +$0.02 per completed source, capped at $2.00 per search; a failed live check is not billed |
| Batch (CSV or JSON list) | Each row billed as one search |
| FCRA workflows | Contact us for pricing |
Worked examples by volume: background check API pricing · all rates: pricing.
Making a hiring decision? Use an FCRA workflow.
FCRA workflows are built primarily for tenant screening and hiring decisions. If a result will help decide whether to hire someone, the check has to run as an FCRA-regulated consumer report, with a permissible purpose, consent, accuracy controls and a dispute path for the person. Our standard search and API are not a consumer report. FCRA workflows run through FCRA Partner Access, for background check companies and screening platforms under a written FCRA agreement. FCRA pricing is quoted per partner, so contact us for pricing.
Healthcare sanctions screening API questions
What is a healthcare exclusion check API?
It is a way to check a person against the government exclusion lists from your own software instead of each list’s own lookup page. You send a name and, ideally, a date of birth; you get back the entries that match the person on the HHS-OIG List of Excluded Individuals/Entities, the SAM.gov exclusions and the state Medicaid exclusion lists, as JSON, each with its authority, dates and a link to the publishing list. Ours is one endpoint, POST /v1/criminal/search, on the same key as the rest of the OffenderSearch API.
Which exclusion lists does the API cover?
Three families. The HHS Office of Inspector General’s List of Excluded Individuals/Entities — people excluded from Medicare, Medicaid and the other federal health programs — which the OIG republishes monthly. The SAM.gov exclusions placed by federal agencies — debarments and suspensions from federal awards — published daily. And the state Medicaid exclusion and sanction lists, mostly monthly. GET /v1/criminal/sources lists the exclusion-list sources that exist right now with their record type "Exclusion list"; build against that list rather than a number on this page.
Is there a separate OIG exclusion list API endpoint?
No. Exclusion-list records come back from the same search call as jail bookings, prison records, court cases and warrants, in one schema. An exclusion-list record is the one with recordType "healthcare_exclusion" and a non-null exclusion block, so keeping only exclusions is a one-line filter in your own code.
Why are some exclusions only returned when I ask for them?
Because the lists mix two kinds of entry. Some exclusions rest on a criminal conviction — the OIG’s 1128(a) codes and 1128(b)(1)–(3), or a SAM or state entry whose stated reason names a conviction — and those are returned on every search like any other record. Others rest on a license action, an administrative debarment or a loan default. Those carry convictionBased: false and are returned only when the request includes "exclusions"; counts.exclusionsIncluded tells you which answer you got.
Can I run an LEIE search by date of birth?
Yes. Most entries on the HHS-OIG list publish a full date of birth, so a dob in the query reaches matchState "dob_match" and the record is scored like any other record with the same evidence. One dob is compared against whatever each list published, and each record comes back labelled with the strength of that comparison.
How does a SAM exclusion check match without a date of birth?
SAM.gov entries publish a name and an address but no date of birth, as do most state Medicaid lists. Those records are kept and flagged unverified: true, ranked below records with birth evidence, and never dropped for a date they could not disagree with. Where the list publishes an address it is carried on the record, so a city, zipcode or address in the query narrows them.
What happens when a person is reinstated?
The record is kept and flagged, not deleted. When a person leaves a list, lifecycle.droppedOut becomes true with dropInterpretation "reinstated" — the person was reinstated or the exclusion term ended — and a reinstatement date the list adds to its own entry appears as exclusion.reinstatedOn. A criminal monitor reports the same event as "removed".
How much does a healthcare exclusion check cost?
$0.15 per search, dropping to $0.11 past 2,000 searches in a calendar month. A search covers every record type at once, so the exclusion-list entries, court cases, custody records and warrants for one person cost one search. The first 25 searches are free and need no card.
Can I use exclusion-list results from this API for a hiring decision?
Not through the standard search. Standard results are not a consumer report. A hiring decision has to run as an FCRA order through FCRA Partner Access, where each criminal search carries an exclusions option — conviction_only, all or none — and a furnished exclusion-list record arrives with its exclusion block and a dispositionStatus of conviction or sanction.
Run your first healthcare exclusion check
25 free searches on one key. No card, no sales call.