Skip to main content
Validate

The OIG Exclusion Check API tells you whether a provider or business is on the federal exclusion list

Send an NPI, a person's name or a business name and get a dated answer from the HHS Office of Inspector General's list of excluded individuals and entities: excluded, needs review, reinstated or clear, with the exclusion type in plain words. 3 credits per completed check.

3 credits per lookupSame credits as every other product
1Lookup OIG Exclusion Check API showing a fictional provider, Sample Q Example, found by name on the federal exclusion list and returned as needs review, with the exclusion type License revoked, suspended or surrendered, the exclusion date and the date of the list

3

Credits per completed check

about $0.01 on Starter, a clear one included

0

Credits for a refused entry

a bad NPI or a lone surname costs nothing

24h

Free repeat of the same check

by the same user

2M

Rows in one CSV file

an NPI or name per row

The OIG's section codes become plain words, and a mandatory exclusion is told apart from a permissive one

A code such as 1128b4 comes back as License revoked, suspended or surrendered, with the date it took effect and whether the basis is mandatory or permissive.

Four exclusion types as the OIG list records them, the section codes 1128a2, 1128a3, 1128b4 and 1128b7, beside the plain words 1Lookup returns for each, two marked mandatory and two marked permissive

A provider comes back as a dated answer with the reason in plain words

The answer comes from the OIG's own public exclusion list

Every outcome is read from the HHS Office of Inspector General's List of Excluded Individuals and Entities. It is public US government data, and every answer carries the date of the publication that was checked.

  • Excluded, needs review, reinstated or clear
  • The date of the list in every answer
  • A copy up to 10 days old if the OIG is down, marked as stale
  • A failed read is never returned as no match

A name match is flagged for review and never called excluded

A name that matches a listing comes back as needs review, because a name alone does not prove who it is. An NPI that is on the list comes back as excluded, because an NPI is an exact identifier.

  • Needs review for a name, excluded for an NPI
  • primary_action REVIEW on both
  • Weaker look-alikes listed apart, not counted
  • Up to 10 matches, strongest first

Each listing carries what you need to confirm who it is

A listing returns the NPI, the specialty, the city and state, and the birth year the OIG recorded, so you can tell two people with the same name apart without calling anyone.

  • NPI, specialty and location
  • Birth year, never the full date of birth
  • How the match was made and how strong it is
  • state_match when you sent a state

The exclusion type comes back in plain words

A section code such as 1128b4 comes back as License revoked, suspended or surrendered, with the code, the date it took effect and whether the basis is mandatory or permissive, so nobody on your team has to look up the Social Security Act.

  • Plain-English exclusion type
  • The section code kept alongside
  • Mandatory or permissive basis
  • Waiver date and state when the OIG granted one

A clear check says what it checked

A clear answer names the list date and whether it was checked by name or by NPI. Because about 1 in 10 listings carries an NPI, a clear check by NPI alone asks you to also check by name instead of passing it.

  • list_updated on every answer
  • Checked by name, NPI or both
  • VERIFY for a clear NPI-only check
  • State Medicaid lists named as separate

An entry that cannot be checked costs nothing

You are charged 3 credits for every completed check. A bad NPI check digit, a lone surname, a malformed entry and a list that could not be read cost 0, and that holds for bulk CSV jobs as well as the API.

  • Zero credits for a refused entry
  • Zero credits if the list cannot be read
  • Bulk CSV with a provider column
  • The same credits as every other product

An NPI or a name goes in and a dated answer comes out

01

Send an NPI or a name

POST a 10-digit NPI, a first and last name or a business name, with a two-letter state if you have one. The NPI's check digit is verified first, and a malformed entry is refused with a clear error and costs nothing.

request

$ POST /api/v1/oig-exclusion-check

"provider": "Sample Q Example"

"state": "IL"

02

We read the OIG list

The entry is checked against the OIG's list of excluded individuals and entities. An NPI is looked up exactly, and a name is matched on its first and last name in any order, with titles dropped and accents and case ignored.

processing

NPI check digit verified

OIG list read

Name or NPI matched

Exclusion type spelled out

03

Get the answer, flat and structured

The outcome, match count, closest listing, exclusion type and the date of the list arrive in one JSON payload. Every completed check bills 3 credits, and an entry that is refused or a list that cannot be read bills nothing.

200 OK

resultNeeds review

exclusionLicense revoked

list published2026-10-09

NPI and birth year of the listing3 credits, 0 if refused

One endpoint checks a provider and works like every other 1Lookup call

Same authentication, same credit balance, and the same response envelope as every other 1Lookup product. If you have already integrated one endpoint, this one is a URL change.

POST /v1/oig-exclusion-check
curl -X POST https://app.1lookup.io/api/v1/oig-exclusion-check \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "provider": "Sample Q Example", "state": "IL" }'
200 OK
{
  "classification": {
    "found": true,
    "outcome": "needs_review",
    "result_label": "Needs review",
    "excluded": false,
    "query_type": "name",
    "match_count": 1,
    "similar_count": 0,
    "name": "Sample Q Example",
    "business_name": null,
    "npi": "1999000015",
    "exclusion_type_code": "1128b4",
    "exclusion_type_text": "License revoked, suspended or surrendered",
    "excluded_on": "2024-01-15",
    "reinstated_on": null,
    "city": "Springfield",
    "state": "IL",
    "specialty": "Registered nurse",
    "list_updated": "2026-10-09",
    "list_stale": false
  },
  "insights": {
    "oig_exclusion_result": {
      "query_type": "name",
      "total_matches": 1,
      "matches": [
        {
          "name": "Sample Q Example",
          "npi": "1999000015",
          "general_category": "Nursing profession",
          "specialty": "Registered nurse",
          "city": "Springfield",
          "state": "IL",
          "exclusion_type_code": "1128b4",
          "exclusion_basis": "permissive",
          "excluded_on": "2024-01-15",
          "birth_year": 1975,
          "match_basis": "name",
          "state_match": true
        }
      ],
      "other_candidates": [],
      "data_source": "hhs_oig_leie"
    }
  },
  "recommendations": {
    "primary_action": "REVIEW",
    "secondary_actions": ["confirm_with_npi_or_date_of_birth", "check_state_medicaid_lists"],
    "user_message": "The name matches 1 entry on the OIG exclusion list published Oct 9, 2026: Sample Q Example (Springfield, IL), excluded Jan 15, 2024. A name alone is not proof it is the same person or business. Confirm with the NPI or date of birth before acting."
  },
  "metadata": { "credits_used": 3, "cache_hit": false }
}

A column of providers goes in and one row per provider comes out

Upload a CSV with a provider column that holds an NPI, a name or a business name and download a result file with each provider's Result, the closest listing and the date of the list. The three rows here are invented.

providers.csvYou upload
  1. 1provider
  2. 2sample q example
  3. 31234567893
  4. 4sample supply nowhere
oig-exclusion-check-results.csvYou download
providerResultMatchesNameNPIExclusion TypeExcluded OnList PublishedCredits Used
sample q exampleNeeds review1Sample Q Example1999000015License revoked, suspended or surrendered2024-01-152026-10-093
1234567893Clear02026-10-093
sample supply nowhereClear02026-10-093

Eight more result columns in the file: Business Name, Exclusion Type Code, Reinstated On, State, City, Specialty, Similar Entries and Checked By.

A word on every row

The Result column always holds Clear, Needs review, Excluded or Reinstated, so a provider who is on no list never reads as a blank row.

Every completed row is dated

Each row carries the date of the OIG list that was read, so the file is a record of what was checked and when.

A refused row is free

A row that is not a valid NPI or name, such as a lone surname or a bad check digit, fails without a charge, so cleaning a roster never bills for the typos.

One call returns a dated exclusion answer for a provider

One call turns an NPI, a name or a business name from an application, an invoice or a roster into an answer from the OIG list: whether it is excluded, needs review, was reinstated or is clear, with the exclusion type in plain words, the date it took effect and the date of the list that was read, and the raw JSON your code receives beside it.

app.1lookup.io/api/v1Needs review
  • ResultNeeds review
  • Matches1
  • ListingSample Q Example
  • Exclusion typeLicense revoked, suspended or surrendered
  • Excluded on2024-01-15
  • NPI on the listing1999000015
  • SpecialtyRegistered nurse
  • LocationSpringfield, IL
  • Birth year1975
  • Checked byName
  • List published2026-10-09
  • Next stepREVIEW
200 OK, 3 credits
{
  "classification": {
    "found": true,
    "outcome": "needs_review",
    "match_count": 1,
    "name": "Sample Q Example",
    "npi": "1999000015",
    "exclusion_type_text": "License revoked, suspended or surrendered",
    "excluded_on": "2024-01-15",
    "list_updated": "2026-10-09"
  },
  "insights": {
    "oig_exclusion_result": {
      "matches": [{ "birth_year": 1975, "match_basis": "name" }],
      "data_source": "hhs_oig_leie"
    }
  },
  "recommendations": { "primary_action": "REVIEW" },
  "metadata": { "credits_used": 3 }
}

Every exclusion check returns the same fields at one flat price

A field the OIG list does not hold comes back as null and never as a guess, and every completed check costs the same 3 credits.

Outcome

  • found
  • outcome
  • result_label
  • excluded
  • query_type
  • match_count
  • similar_count

Closest listing

  • name
  • business_name
  • npi
  • specialty
  • city
  • state
  • general_category
  • birth_year

Exclusion

  • exclusion_type_code
  • exclusion_type_text
  • exclusion_basis
  • excluded_on
  • reinstated_on
  • waiver_on
  • waiver_state

How it matched

  • match_basis
  • score
  • state_match
  • name_agrees
  • matches[]
  • other_candidates[]

The list that was read

  • list_updated
  • list_stale
  • list_checked_at
  • list_entries
  • total_matches
  • total_candidates
  • npi_listed

Healthcare employers, staffing agencies and payers check the list before they hire or pay

Healthcare employers screening candidates and staff

Check each candidate before an offer and each employee on a monthly schedule, and keep the dated answer with the file as the record of what was checked.

Staffing agencies placing clinicians

Check a nurse, therapist or physician by name or NPI before a placement, and hold a placement that comes back as needs review until someone confirms with the NPI.

Payers and billing companies checking vendors

Run the vendor, contractor and billing-company names on a payee file through a bulk job before payments go out, and review only the rows that come back as needs review or excluded.

Credentialing teams verifying a provider file

Start from the NPI on the file, check it against the list, then check the name too, since most listings carry no NPI, and attach the answer to the credentialing record.

Practices and clinics onboarding contractors

Check a locum, a contractor or a new practice partner the day they are added to payroll, instead of waiting for the next audit.

Compliance teams running a monthly roster check

Upload the roster as a CSV each month after the OIG publishes, and review the rows whose Result is not Clear, with the list date written on every row.

Every completed check is billed, and an entry that cannot be checked is free

An NPI on the list is excluded, a name that matches is needs review, and a check that finds nothing is clear and still billed because the dated answer is what you pay for. A refused entry and an unreadable list cost nothing.

Four results of an OIG exclusion check: an NPI on the list is excluded and billed, a name that matches a listing is needs review and billed, a check that finds nothing is clear and still billed, and an entry that cannot be checked, such as a lone surname, is not billed

These are the questions people ask before they run their first exclusion check

What does the OIG Exclusion Check API return?

Send a provider's NPI, a person's name or a business name and it returns one of four outcomes: excluded, needs review, reinstated or clear. With it come the match count, the closest listing's name, NPI, exclusion type in plain words, exclusion date, specialty and location, and the date of the list that was read. Every listing found is under insights, with the birth year the OIG recorded and how the match was made.

Where does the exclusion data come from?

From the List of Excluded Individuals and Entities that the HHS Office of Inspector General publishes. Medicare, Medicaid and the other federal health care programs do not pay for anything an excluded person or business furnishes, orders or prescribes, so employers, staffing agencies and payers check it. Every answer carries list_updated, the date of the list that was read.

How current is the list, and can I ask again?

The OIG replaces its list once a month, by the 10th, and list_updated names the publication that was checked. A repeat check of the same provider by the same user within 24 hours comes from the cache at no charge, because a new exclusion should reach a screen within a day. Send bypass_cache: true to run the check again instead of reusing the saved answer.

How much does an exclusion check cost?

3 credits per check, about $0.01 on the Starter plan. Every completed check is charged, including one that finds nothing, because a dated "no match" is the answer you are paying for. A malformed entry, a list that could not be read and a repeat of the same check by the same user within 24 hours cost 0 credits, in the API, the dashboard and bulk jobs.

What does needs review mean?

That the name you sent matches a listing on the OIG list. A name alone is not proof it is the same person or business, so the API never calls a name match excluded. Each listing carries the NPI, birth year, specialty and location the OIG recorded, so you can confirm who it is before you act. primary_action is REVIEW.

When does the API say a provider is excluded?

When the NPI you sent is on the list. An NPI is an exact identifier, so a hit is treated as the provider itself and primary_action is REVIEW. If you send an NPI and a name together and the name does not match the name on the list for that NPI, the answer says so.

Does a clear result mean the provider is fine?

It means nothing on the OIG list matched, and list_updated says which publication was checked. About 1 in 10 listings carries an NPI, so a clear check by NPI alone returns primary_action VERIFY and tells you to also check by name. A clear name check with no look-alike entries returns APPROVE for that list. State Medicaid exclusion lists are separate.

Does the state I send change the result?

No. A state never removes a match, because an exclusion applies in every state and people move. A listing in another state stays in the answer and is marked state_match: false, and the listings in the state you sent rank first.

What can I send, and what is refused?

Send npi (10 digits, with its check digit verified), or provider (a first and last name, or a business name, 2 to 120 characters), and an optional two-letter state. The business field takes a business name of even one word, and matches business listings only. Titles such as Dr and Jr are dropped, and word order, case and accents do not matter. A lone surname, a bad check digit and odd characters are refused with a clear error before anything is charged.

Can it tell two people with the same name apart?

It gives you what the OIG recorded to do that: the NPI, the birth year, the specialty, the city and state, and the exclusion date. It returns the birth year and never the full date of birth, and it takes no date of birth or Social Security number as input. The OIG's own online search can confirm an identity with an SSN or EIN, which this API does not take.

How is the exclusion type described?

In plain words, such as License revoked, suspended or surrendered, together with the section code (1128b4) and whether the basis is mandatory or permissive. The text is written from the OIG's own page on exclusion authorities, and a code the API does not know comes back as the raw code.

Does it cover state Medicaid lists or monitor a provider every month?

No. It checks the OIG list only: state Medicaid exclusion lists and the federal System for Award Management exclusions are separate, and it does not watch a provider over time. To keep a roster current, run the list again each month and compare, or schedule a bulk job.

What happens if the OIG list cannot be read?

The API answers 503 with a Retry-After header, charges nothing and does not save the answer, so a retry is never a second charge. A copy of the list up to 10 days old is used first, and the result then says list_stale: true. A failed read is never returned as no match.

Does it return providers who were reinstated?

Rarely. The OIG removes a provider from its file when it reinstates them, so a reinstated provider normally reads clear. An NPI whose listing still carries a reinstatement date comes back as reinstated, with the date, and primary_action is VERIFY.

Can I check a list of providers at once?

Yes. Upload a CSV with a provider column holding an NPI, a name or a business name and you get a row per provider with a Result word, the match count and the closest listing. A row that is not a valid NPI or name fails without a charge. The price stays at the same credits per completed check, however long the list is.

To check a single provider before you write any code, run it through the free OIG exclusion check.

Check a few providers you work with and see what comes back

Start a free trial, and your credits work across every product in the catalog.