# OIG LEIE Exclusion Screening — HHS Exclusion List Check (`malekh/oig-leie-exclusion-screening`) Actor

Screen employees, providers, contractors and vendors against the HHS OIG List of Excluded Individuals/Entities (LEIE). Matches by NPI, name, date of birth or business name, and returns graded confidence so a surname collision is never reported as a confirmed exclusion.

- **URL**: https://apify.com/malekh/oig-leie-exclusion-screening.md
- **Developed by:** [Malek H](https://apify.com/malekh) (community)
- **Categories:** Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 record screeneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## OIG LEIE Exclusion Screening — check employees & vendors against the HHS exclusion list

Screen your employees, providers, contractors and vendors against the **HHS OIG
List of Excluded Individuals/Entities (LEIE)** — the federal healthcare exclusion
list. Send a list of people or businesses, get back a graded match report.

Federal healthcare programs require exclusion screening **monthly**. Employing an
excluded individual can trigger civil monetary penalties of up to **$25,000 per
item or service** furnished, plus treble damages. This Actor automates that check.

### What it does

- Downloads the **current** LEIE database directly from `oig.hhs.gov` on every run
  (~84,000 exclusion records, refreshed monthly by OIG)
- Screens each of your records by **NPI**, **name + date of birth**, **name**, or
  **business name**
- Returns **graded confidence** for every hit, so you can separate a definite
  identifier match from a common-surname coincidence
- Filters out reinstated parties by default
- Reports the exact LEIE version used (`leieLastUpdated`) so every screening is
  auditable

### Why the confidence grading matters

OIG's own guidance is explicit: a **name match is a *potential* match**, and must
be verified against SSN or EIN before any adverse action is taken. A tool that
returns a flat "excluded: true" on a surname collision will eventually cost
someone their job by mistake.

So every result carries a `highestConfidence` value:

| `highestConfidence` | Meaning | `excluded` |
|---|---|---|
| `npi_exact` | NPI matched an excluded party | `true` |
| `name_dob_exact` | Name **and** date of birth matched | `true` |
| `business_exact` | Business name matched exactly | `true` |
| `name_exact` | First + last name matched, no DOB to confirm | `false` — verify |
| `business_fuzzy` | Partial business-name overlap | `false` — verify |
| `name_fuzzy` | Surname + initial, or nickname variant | `false` — verify |
| `none` | No match in the current LEIE | `false` |

Records needing human confirmation are flagged with
`requiresManualVerification: true` and a link to the official OIG search.

### Input

```json
{
  "records": [
    { "firstName": "John",  "lastName": "Smith", "npi": "1234567890" },
    { "firstName": "Maria", "lastName": "Garcia", "dateOfBirth": "19670412" },
    { "businessName": "Acme Home Health Services, Inc" }
  ],
  "fuzzyThreshold": 0.85,
  "includeReinstated": false
}
```

| Field | Type | Default | Description |
|---|---|---|---|
| `records` | array | — | People and/or businesses to screen. Required. |
| `records[].firstName` | string | — | Given name (individuals) |
| `records[].lastName` | string | — | Surname (individuals) |
| `records[].npi` | string | — | 10-digit NPI. The strongest identifier available. |
| `records[].dateOfBirth` | string | — | `YYYYMMDD`. Upgrades a name match to confirmed. |
| `records[].businessName` | string | — | Entity name (organizations) |
| `fuzzyThreshold` | number | `0.85` | 0–1. Lower catches more, with more noise. |
| `includeReinstated` | boolean | `false` | Include parties already reinstated. |

Any extra fields you pass on a record (employee ID, department, hire date) are
echoed back untouched in `input`, so results reconcile against your HR system.

### Output

One dataset item per screened record:

```json
{
  "input": { "firstName": "John", "lastName": "Smith", "npi": "1234567890" },
  "screenedAt": "2026-07-29T04:30:00+00:00",
  "leieLastUpdated": "Fri, 10 Jul 2026 12:35:14 GMT",
  "leieRecordCount": 83665,
  "matchCount": 1,
  "highestConfidence": "npi_exact",
  "excluded": true,
  "requiresManualVerification": false,
  "guidance": "Identifier-grade match. Treat as excluded and follow your compliance process.",
  "matches": [
    {
      "lastName": "SMITH", "firstName": "JOHN", "npi": "1234567890",
      "generalCategory": "INDIVIDUAL", "specialty": "NURSE",
      "exclusionType": "1128a1", "exclusionDate": "20190315",
      "state": "TX", "matchType": "npi_exact", "matchScore": 1.0
    }
  ]
}
```

Export as JSON, CSV, or Excel, or pull it from the API for your compliance record.

### Typical uses

- **Monthly workforce screening** — run your full employee roster on a schedule
- **Pre-hire checks** — screen candidates before an offer
- **Vendor and contractor due diligence** — screen business entities
- **Payer / provider network validation** — screen a provider roster by NPI

### Data source

[HHS OIG LEIE](https://oig.hhs.gov/exclusions/exclusions_list.asp) —
`UPDATED.csv`, a US Government work in the public domain. Downloaded fresh on
every run; nothing is cached between runs, so you are always screening against
the current list.

### Limitations — read before relying on this

- The LEIE is the **federal** exclusion list. It does **not** include state
  Medicaid exclusion lists or the SAM.gov debarment list. Full compliance
  programs screen those separately.
- OIG updates the LEIE monthly, so an exclusion can be up to ~30 days old.
- A name-only match is **not** proof of exclusion. Verify at
  [exclusions.oig.hhs.gov](https://exclusions.oig.hhs.gov/) using SSN/EIN before
  acting.
- This Actor is a screening aid, not legal advice.

# Actor input Schema

## `records` (type: `array`):

People and/or businesses to screen against the HHS OIG LEIE. Individuals: firstName + lastName (plus npi and/or dateOfBirth for a confirmed match). Organizations: businessName. Any extra fields you include are echoed back in the results so they reconcile with your HR or credentialing system.

## `fuzzyThreshold` (type: `number`):

0 to 1. How close a non-exact name must be to be reported as a potential match. Lower values catch more spelling variants but produce more noise to review. 0.85 is a good default.

## `includeReinstated` (type: `boolean`):

The LEIE retains parties who have since been reinstated. By default these are filtered out, since they are no longer excluded. Enable to see them anyway.

## Actor input object example

```json
{
  "records": [
    {
      "firstName": "John",
      "lastName": "Smith",
      "npi": "1234567890"
    },
    {
      "firstName": "Maria",
      "lastName": "Garcia",
      "dateOfBirth": "19670412"
    },
    {
      "businessName": "Acme Home Health Services, Inc"
    }
  ],
  "fuzzyThreshold": 0.85,
  "includeReinstated": false
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "records": [
        {
            "firstName": "John",
            "lastName": "Smith",
            "npi": "1234567890"
        },
        {
            "firstName": "Maria",
            "lastName": "Garcia",
            "dateOfBirth": "19670412"
        },
        {
            "businessName": "Acme Home Health Services, Inc"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("malekh/oig-leie-exclusion-screening").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "records": [
        {
            "firstName": "John",
            "lastName": "Smith",
            "npi": "1234567890",
        },
        {
            "firstName": "Maria",
            "lastName": "Garcia",
            "dateOfBirth": "19670412",
        },
        { "businessName": "Acme Home Health Services, Inc" },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("malekh/oig-leie-exclusion-screening").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "records": [
    {
      "firstName": "John",
      "lastName": "Smith",
      "npi": "1234567890"
    },
    {
      "firstName": "Maria",
      "lastName": "Garcia",
      "dateOfBirth": "19670412"
    },
    {
      "businessName": "Acme Home Health Services, Inc"
    }
  ]
}' |
apify call malekh/oig-leie-exclusion-screening --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=malekh/oig-leie-exclusion-screening",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/HtMEP6mnhwNnZJWtj/builds/DBTjaiITEq5Zq4pnx/openapi.json
