OIG Exclusion List (LEIE) Scraper
parseforge/hhs-oig-leie-exclusions-scraper
Lead generationDeveloper tools
Search and download the HHS OIG List of Excluded Individuals/Entities: 83,000+ excluded providers with NPI, DOB, address, exclusion authority and date, monthly new exclusions and reinstatements, roster screening, NPI registry and geocoding enrichment.
- Total runs
- 24
- Bookmarked
- 0
- Last modified
- 8 days ago
This scraper was last updated on .
What does the OIG Exclusion List (LEIE) Scraper return?
OIG Exclusion List (LEIE) Scraper
Search, filter and download the HHS OIG exclusion list, the List of Excluded Individuals/Entities (LEIE), and screen your own roster against it. Every excluded provider with name, category, specialty, NPI, UPIN, date of birth, address, the exclusion authority with its meaning and minimum period, and the exclusion date. Monthly new exclusions and reinstatements as their own feeds. Optional NPI registry profile and geocoded address. No login, no API key, no browser. Export to CSV, JSON, Excel, or XML.
The OIG publishes the LEIE as a 15 MB CSV plus monthly supplement files, and an online search that only takes one name at a time and shows fewer fields than the file. This Actor reads the same public files, normalises them into clean rows, applies your filters, and can check a list of employees, vendors or NPIs against the whole database in one run.
| Who uses it | What they use the LEIE for |
|---|---|
| Healthcare compliance and HR teams | Monthly screening of staff, contractors and vendors, as CMS and state Medicaid programs require |
| Credentialing and provider-enrollment teams | Checking an NPI or a physician before onboarding, with the NPPES profile beside the exclusion |
| Pharmacies, DME suppliers and billing companies | Watching the monthly new exclusions in their state and specialty |
| Healthcare law firms and investigators | Exclusion history by authority, date and location; reinstatements as they happen |
| Compliance-software and data vendors | A normalised monthly feed of exclusions and reinstatements with stable record keys |
What it does
The LEIE holds about 83,800 currently excluded individuals and entities (80,400 people and 3,400 businesses). OIG refreshes the file around the 10th of each month with the actions of the previous month, and publishes each month's new exclusions (about 250) and reinstatements (40–80) as separate supplement files, kept online for roughly the last 19 months.
The Actor returns one row per record:
- 🧾 The exclusion record: last, first and middle name or business name, OIG's general category and specialty, NPI and UPIN, date of birth, street address, city, state and ZIP, the exclusion type code, and the exclusion date.
- ⚖️ The authority, decoded: each
1128b4-style code becomes1128(b)(4), its class (mandatory or permissive exclusion), the plain-English reason ("License revocation, suspension, or surrender") and the statutory minimum period. - 🗓️ Monthly feeds: choose the new-exclusions supplement, the reinstatements supplement (with the reinstatement date), or both, for the last N months.
- 🔍 Screening mode: paste a list of names ("LAST, FIRST" with an optional date of birth), business names or NPIs; the Actor returns one row per subject with
matched, the match quality, and the matching records embedded. - 🏥 NPI registry profile (optional): for records with an NPI, the CMS NPPES profile: active/deactivated status, enumeration date, credential, sex, primary taxonomy and licence, practice and mailing address with phone and fax, and the authorized official for organisations.
- 📍 Geocoded address (optional): latitude, longitude, the standardised address and the state, county, tract and block FIPS codes from the U.S. Census Bureau geocoder.
Filters run on the downloaded list, so combining name, state, city, ZIP, category, specialty, authority, class, date range, NPI and entity type costs nothing extra. Rows are sorted newest first by default.
Every row contains: recordKey, recordType, source, supplementMonth, entityType, fullName, lastName, firstName, middleName, businessName, generalCategory, specialty, upin, npi, dateOfBirth, address, city, state, zip, exclusionType, exclusionAuthority, exclusionClass, exclusionDescription, minimumPeriod, exclusionDate, daysSinceExclusion, reinstatementDate, waiverDate, waiverState, dataAsOf, sourceUrl, scrapedAt: plus npiRegistry, npiStatus, npiPrimaryTaxonomy, npiPracticePhone with the NPI profile, and geocode, latitude, longitude with geocoding. Screening rows contain subject, subjectType, parsedSubject, matchMode, matched, matchCount, matchQuality and matches.
What you can do with OIG exclusion data
Screen your workforce every month.
A hospital compliance officer schedules a monthly run with screenSubjects set to the employee roster ("DOE, JANE, 1980-05-14") and vendor list, and routes every row with matched: true to review. Dates of birth resolve common names; NPIs resolve providers exactly.
Watch new exclusions in your state.
A pharmacy chain runs source: "new-exclusions" with states: ["TX"] on the 15th of each month and gets the providers excluded in Texas last month, decoded authority included.
Verify a provider before enrollment.
A credentialing team passes the NPI with includeNpiRegistry: true and sees the exclusion beside the current NPPES profile: is the NPI still active, which licence and taxonomy, which practice address.
Track reinstatements.
A law firm pulls source: "reinstatements" for the last 12 months to find clients and counterparties whose exclusions ended, with the exact reinstatement date.
Build a map of excluded providers.
An investigative team filters exclusionClass: "mandatory" with includeGeocode: true and plots the coordinates by county FIPS.
Why choose this scraper
| What you get | |
|---|---|
| The whole list, normalised | 83,800 records with clean nulls (no 0000000000 NPIs or 00000000 dates), ISO dates and a stable recordKey for deduplication across months |
| The authority explained | Class, reason and minimum period for every exclusion code, straight from OIG's authorities table |
| Monthly feeds | New exclusions and reinstatements per month, each row tagged with its supplement month |
| Screening with match quality | npi, exact (name and date of birth), name, first-initial, business-exact, business-partial, last-name-only |
| Two enrichments | CMS NPPES profile and Census geocoding, charged only where they return data |
| Server-side nothing, client-side everything | Fifteen filters combine freely; a run costs one 15 MB download plus the rows you keep |
| No browser, no proxy | Plain HTTP against public files; runs in seconds |
How it compares
| Feature | ParseForge | Typical LEIE screening actors |
|---|---|---|
| Full list with 15 combinable filters | Yes | Usually name or NPI lookup only |
| Monthly new exclusions and reinstatements as feeds | Yes | Not listed |
| Exclusion authority decoded (class, reason, minimum period) | Yes | Code only |
| Roster screening with dates of birth and match quality | Yes | Some |
| NPPES profile per NPI | Yes | Some |
| Geocoded address with FIPS codes | Yes | Not listed |
| Price per record | $0.004 | $0.002 – $0.10 |
Configure the run
Pick a source, add filters or a list of subjects to screen, and set the maximum number of records. The two enrichments are opt-in because each costs a request per record.
A first run with the defaults (the 100 most recent exclusions):
{
"source": "full-list",
"maxItems": 100,
"sortBy": "newest"
}
Last month's new exclusions in two states:
{
"source": "new-exclusions",
"supplementMonths": 1,
"states": ["TX", "OK"],
"maxItems": 1000
}
Screen a roster:
{
"screenSubjects": ["SMITH, JOHN, 1970-06-08", "GONZALEZ, MARIA", "1346474764", "Benimar Medical Center Inc"],
"screenMatchMode": "standard",
"maxItems": 500
}
Excluded physicians with an NPI, with the NPPES profile and coordinates:
{
"generalCategories": ["PHYSICIAN", "MEDICAL PRACTICE"],
"hasNpi": true,
"excludedAfter": "2025-01-01",
"includeNpiRegistry": true,
"includeGeocode": true,
"maxItems": 2000
}
Reinstatements over the last year:
{
"source": "reinstatements",
"supplementMonths": 12,
"maxItems": 2000
}
Limits
- The LEIE is a monthly file:
dataAsOfon each row is the date OIG last published it. Exclusions taken after that date are not in the list yet, on oig.hhs.gov or anywhere else. - OIG truncates names and addresses (last name 20 characters, business name 30, address 30). Screening compensates for truncated business names; a person's full first name may appear shortened in the record.
- A date of birth is published for 95% of individuals; an NPI for about 8,800 records (most exclusions predate NPIs or concern people who never had one).
hasNpiandhasDateOfBirthkeep only records that carry them. - Screening uses the full list only, so a subject reinstated last month correctly comes back unmatched. Up to 25 matching records are embedded per subject;
matchCountreports the true number. - OIG keeps about the last 19 monthly supplements online; older months are not available on the site.
- The Census geocoder does not resolve P.O. boxes, "C/O" addresses or foreign addresses (
state: "XX"); those rows returngeocode.matched: falseand are not charged. - The full list downloads and parses in a few seconds; 5,000 records write in under 10 seconds, the whole list in a couple of minutes. Use the filters or
maxItemsfor routine runs. - Apify gives every run a cost ceiling derived from your balance (
maxTotalChargeUsd). The Actor checks it before each batch and stops cleanly at it, so you only receive rows that were paid for; the status message says "run cost limit reached".
Free users
Free-plan runs return up to 10 records (or 10 screened subjects) as a preview. Upgrade your Apify plan to pull the whole list.
Run it
- Create a free Apify account with $5 in credit.
- Open the OIG Exclusion List (LEIE) Scraper.
- Pick a source, set filters or paste the subjects to screen, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab, or schedule the run monthly.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to the OIG exclusion list through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/hhs-oig-leie-exclusions-scraper"
Then ask: "Is NPI 1346474764 on the OIG exclusion list, and under which authority?"
FAQ
Is the data public? Yes. OIG publishes the LEIE for anyone to download and requires health care providers to check it; the Actor reads only those public files.
How current is it? OIG updates the LEIE by the middle of each month with the previous month's actions. dataAsOf on every row tells you which release you are looking at.
Why does my search on exclusions.oig.hhs.gov show a person this Actor does not return? The online search and the downloadable file are refreshed together, so the two agree; check the spelling and the lastName prefix. If the person was reinstated, they leave the list: use source: "reinstatements" to see when.
Can it verify an SSN or EIN? No. OIG's "Verify" step needs the SSN/EIN entered on its own site and returns only a yes/no; the Actor matches on name, date of birth and NPI instead.
What input does the OIG Exclusion List (LEIE) Scraper accept?
| Field | Type | What it does | Default |
|---|---|---|---|
| source | string (4 options) | The full LEIE (about 83,800 currently excluded individuals and entities, refreshed by OIG around the 10th of each month), or the monthly supplement files: the exclusions added in a month, the reinstatements (people removed from the list) in a month, or both. | full-list |
| supplementMonths | integer | For the monthly supplement sources: how many of the most recent monthly files to read (1 = the latest month). OIG keeps about the last 19 months online. | 1 |
| maxItems | integer | Stop after this many records (or screened subjects). Free-plan runs return up to 10 as a preview. | 100 |
| sortBy | string (3 options) | Newest exclusions first (default), oldest first, or alphabetical by name. | newest |
| screenSubjects | array | Screening mode: one line per person, business or NPI to check against the list. Individuals as "LAST, FIRST" (optionally ", YYYY-MM-DD" for the date of birth), businesses as their name, NPIs as 10 digits. When this list is filled the Actor returns one row per subject with its matches instead of listing the database. | not set |
| screenMatchMode | string (2 options) | Standard: last name equal and first name equal or abbreviated (J. / JOHN), date of birth must agree when both sides have one; businesses match on the normalised name. Broad: also returns last-name-only and partial business-name matches, flagged with a lower match quality. | standard |
| search | string | Text contained anywhere in the individual's name or the business name, e.g. "PHARMACY" or "GONZALEZ". | not set |
| lastName | string | Individuals whose last name starts with this text (the same behaviour as the online LEIE search). | not set |
| firstName | string | Individuals whose first name starts with this text. | not set |
| businessName | string | Entities whose business name contains this text. | not set |
| npis | array | One or more 10-digit National Provider Identifiers. Only about 8,800 LEIE records carry an NPI; the rest predate NPIs or belong to people who never had one. | not set |
| entityType | string (3 options) | Individuals (about 80,400 records) or business entities (about 3,400). | all |
| states | array | Two-letter state or territory codes of the record's address, e.g. ["CA", "FL"]. "XX" is used by OIG for addresses outside the United States. | not set |
| city | string | City of the record's address (contains). | not set |
| zip | string | ZIP code or ZIP prefix, e.g. "331" for Miami. | not set |
| exclusionTypes | array | LEIE exclusion type codes. 1128(a) authorities are mandatory exclusions (convictions), 1128(b) are permissive (licence actions, defaults, kickbacks…). | not set |
| exclusionClass | string (4 options) | Mandatory exclusions (section 1128(a): convictions, 5-year minimum), permissive exclusions (section 1128(b)), or the remaining authorities (civil monetary penalties, QIO/PSRO findings, breaches of agreements). | all |
| generalCategories | array | OIG's general category of the excluded party, matched as contains: e.g. "NURSING", "PHARMACY", "PHYSICIAN", "DME", "HOME HEALTH", "HOSPITAL", "SKILLED NURSING", "BUS OWNER". | not set |
| specialty | string | Specialty text, e.g. "NURSE", "PHARMACIST", "DENTIST", "INTERNAL MEDICINE", "OWNER/OPERATOR". | not set |
| excludedAfter | string | YYYY-MM-DD. Exclusion date on or after this day. | not set |
| excludedBefore | string | YYYY-MM-DD. Exclusion date on or before this day. | not set |
| hasNpi | boolean | Keep only records that carry a real National Provider Identifier. | false |
| hasDateOfBirth | boolean | Keep only individuals whose date of birth is published. | false |
| includeNpiRegistry | boolean | For records with an NPI, look the number up in the CMS NPPES registry and add the provider's current status, enumeration date, credential, sex, primary taxonomy and licence, practice and mailing address with phone, and the authorized official for organisations. One request per NPI. | false |
| includeGeocode | boolean | Resolve the record's address with the U.S. Census Bureau geocoder: latitude, longitude, the standardised address, and the state, county, tract and block FIPS codes. P.O. boxes and foreign addresses do not resolve and are not charged. | false |
| proxyConfiguration | object | oig.hhs.gov serves the files without any anti-bot layer, so no proxy is used by default. If the download is refused the Actor retries once through the Apify datacenter proxy on its own. | not set |
How much does the OIG Exclusion List (LEIE) Scraper cost?
from $2.67 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.0178 to $0.02 |
| Exclusion record | One record from the full LEIE: name, category, specialty, NPI, UPIN, date of birth, address, exclusion authority with its description and minimum period, and exclusion date. | $0.00356 to $0.004 |
| Monthly new exclusion | One record from a monthly exclusions supplement: a provider added to the LEIE that month, with the same fields as the full list. | $0.00356 to $0.004 |
| Reinstatement record | One record from a monthly reinstatements supplement: a provider removed from the LEIE that month, with the reinstatement date. | $0.00356 to $0.004 |
| Supplement file | One monthly supplement file (exclusions or reinstatements) downloaded and parsed. | $0.0089 to $0.01 |
| Screening check | One subject (person, business or NPI) screened against the full LEIE; the row states whether it matched and how. | $0.00712 to $0.008 |
| Screening match | One LEIE record embedded in a screening row as a match, with its match quality (up to 25 per subject). | $0.00356 to $0.004 |
| NPI registry profile | Optional. The CMS NPPES profile for a record with an NPI: status, enumeration date, credential, taxonomy and licence, practice and mailing address with phone, authorized official. Charged only when NPPES returned the profile. | $0.00445 to $0.005 |
| Geocoded address | Optional. The record address resolved by the U.S. Census geocoder: latitude, longitude, standardised address, state, county, tract and block FIPS codes. Charged only for matched addresses. | $0.00267 to $0.003 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
How do I call the OIG Exclusion List (LEIE) Scraper API?
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~hhs-oig-leie-exclusions-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"source": "full-list",
"supplementMonths": 1,
"maxItems": 100,
"sortBy": "newest",
"screenMatchMode": "standard"
}' What example inputs can I use?
Use these inputs to see how a run is configured.
{
"source": "full-list",
"supplementMonths": 1,
"maxItems": 100,
"sortBy": "newest",
"screenMatchMode": "standard"
} What do users say about the OIG Exclusion List (LEIE) Scraper?
No reviews yet. Be the first.
How do I report an issue with the OIG Exclusion List (LEIE) Scraper?
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
