License Verification API — Nurses, MDs & OIG Exclusions
Pricing
from $5.50 / 1,000 results
License Verification API — Nurses, MDs & OIG Exclusions
Primary source verification for US professional licenses. Search 19 state boards by name or license number: status, expiration, disciplinary actions. Cross-checks the NPPES NPI registry and screens the HHS-OIG exclusion list. Bulk roster screening. Newly licensed clinicians feed (roster-delta).
Pricing
from $5.50 / 1,000 results
Rating
0.0
(0)
Developer
Kyle Maloney
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
0
Monthly active users
4 days ago
Last modified
Categories
Share
Professional License Verification API — Primary Source Verification, NPI Lookup & OIG Exclusion Screening
Nurse license verification, physician license lookup, and provider credentialing automation in one call. Verify US professional licenses against official state board rosters, cross-check the federal NPPES NPI registry, and screen the HHS-OIG LEIE exclusion list — for a single person or a whole roster. Keyless, no captcha, no anti-bot.
Who it's for
- Healthcare credentialing teams doing primary source verification (PSV) before onboarding or during re-credentialing cycles.
- Payer / provider network teams running monthly OIG exclusion monitoring as a condition of billing Medicare and Medicaid.
- Healthcare staffing and travel-nurse agencies doing bulk license verification for a roster of clinicians.
- HR compliance teams running license expiration monitoring across a workforce on a schedule.
- Insurance producer onboarding teams verifying a batch of agents before appointment.
- AI agents needing a "verify a US professional license" tool, single or batch.
What makes this different
Most license lookups return a list of name matches and leave you to guess. This one returns a verdict.
| It does this | Why it matters |
|---|---|
| Names the boards it could not reach | A failed source lookup is reported as INCONCLUSIVE_SOURCE_ERROR, never as "not licensed". You can tell "we checked and found nothing" apart from "we could not check". |
| Scores identity 0–100 | 125 Texas RNs are named "Mary Smith". A surname hit is not an identification, and the output says so. |
| Cross-walks to the NPI registry | The provider's self-reported license number in NPPES pins the exact board record — collapsing those 125 candidates to one. |
| Screens the federal exclusion list | HHS-OIG LEIE, 83,000+ records. oig_excluded is only ever true on an exact NPI match. A name match is surfaced as a review candidate with its DOB and city attached — because name and state do not identify a person. |
| Uses each board's real status vocabulary | Texas publishes CURRENT (C), not "Active". A substring guess marks 434,301 active nurses as inactive. This doesn't. |
Verdicts
verdict | Meaning |
|---|---|
LICENSED_ACTIVE | Confidently identified, license in good standing. |
LICENSED_NOT_ACTIVE | Confidently identified; expired, inactive, revoked, surrendered or deceased. See status_class. |
AMBIGUOUS | Records found, but identity is not confirmed (weak score or a tie). Supply a first name, middle name, state or license number. |
NOT_FOUND | Every board answered, none had a record. |
INCONCLUSIVE_SOURCE_ERROR | A source could not be reached. This is not evidence the person is unlicensed. See boards_failed and boards_failed_detail. Emitted in both modes — a single search whose boards all failed returns this one row rather than an empty dataset. |
Coverage — what each board actually contains
A bare state code searches every board in that state. "TX" reaches TDLR and all three nursing boards.
| Board ID | State | Agency | What it actually covers |
|---|---|---|---|
IL | Illinois | IDFPR | All professions — medical, nursing, real estate, cosmetology, engineering. Includes disciplinary flag. |
CT | Connecticut | CT DCP eLicense | All state credentials — health, trades, professional. |
CO | Colorado | CO DORA | All professional and occupational licenses. Disciplinary actions inline (case number, action, date) on 59,319 records. |
TX | Texas | TX TDLR | Trades only — contractors, electricians, HVAC, cosmetology. Not healthcare. |
TX-BON | Texas | TX Board of Nursing | Registered Nurses (RN) — incl. board-action flag, specialty, nursing school. |
TX-LVN | Texas | TX Board of Nursing | Licensed Vocational Nurses (LVN). |
TX-APRN | Texas | TX Board of Nursing | APRN / Nurse Practitioners — incl. prescriptive authority status. |
WA | Washington | WA DOH | All health professions — nurses, physicians, dentists, therapists, counselors. Real disciplinary flag. |
WA-CPA | Washington | WA Board of Accountancy | Certified Public Accountants. |
WA-CONTRACTOR | Washington | WA L&I | Registered construction contractors + principal names. |
OR | Oregon | OR CCB | Construction contractors (active only). |
OR-BCD | Oregon | OR BCD | Electricians, plumbers, boiler, elevator, inspectors. |
DE | Delaware | DE DPR | All DPR boards, incl. city/ZIP and issue date. Disciplinary actions joined from the DPR enforcement dataset. |
NY | New York | NYS Gaming Commission | Horse-racing occupations only. Not a professional or healthcare credential source. |
NY-RE | New York | NY DOS | Real estate salespersons and associate brokers. |
NY-COS | New York | NY DOS | Cosmetology, appearance enhancement, barbering. |
NY-NOTARY | New York | NY DOS | Commissioned notaries public. |
NY-APPRAISER | New York | NY DOS | Certified real estate appraisers. |
VT-DFS | Vermont | VT Division of Fire Safety | Electricians, plumbers, gas installers. |
Plus, on every run: NPPES NPI Registry (federal, all US providers) and the HHS-OIG LEIE exclusion list (federal, 83,000+ records, refreshed monthly).
What each board does and does not publish
Boards differ in which columns they expose, so some fields are legitimately empty depending on which board answered. board_coverage on every row states what that board covers, and unsupported_filters names any filter it could not apply.
| Field | Boards that populate it |
|---|---|
city / zip | IL, CO, CT, DE, OR, OR-BCD, NY-RE, NY-APPRAISER, WA-CPA, WA-CONTRACTOR, VT-DFS. Not WA DOH, TX (any), NY, NY-COS, NY-NOTARY. |
county | IL, OR, OR-BCD, TX, TX-BON, TX-LVN, TX-APRN, NY-RE, NY-NOTARY, NY-APPRAISER. |
specialty | IL, CO, TX-BON, TX-APRN, OR-BCD, WA-CONTRACTOR, VT-DFS, and DE (board category). |
ever_disciplined + board_action_found | IL, CO, DE, WA, TX-BON, TX-LVN. null on the rest — meaning not checked, never clear. |
discipline_action / discipline_reason / board_action_date | IL (narrative reason), CO (action type, case number, effective date). DE and NY physician actions arrive via the joined enforcement datasets. |
nursing_school, state_of_original_licensure, practice_setting | TX-BON and TX-LVN only. |
prescriptive_authority_* | TX-APRN only. |
npi and the rest of the NPI block | Any board, when the licensee is in NPPES — i.e. healthcare. Empty for trades, notaries and real estate. |
title | IL, TX-BON, TX-LVN, TX-APRN, OR, OR-BCD, NY-NOTARY, WA-CPA, WA-CONTRACTOR, VT-DFS. |
business_name | IL, CT, CO, TX, NY-RE, NY-APPRAISER, WA-CONTRACTOR. |
Verify a Texas RN license
{ "states": ["TX-BON"], "firstName": "Mary", "lastName": "Smith" }
Verify a Washington nurse credential
{ "states": ["WA"], "firstName": "Mary", "lastName": "Galligan", "licenseType": "Registered Nurse" }
Check OIG exclusion status while verifying
Exclusion screening is on by default (screenExclusions) and costs nothing extra per row.
exclusion_match_basis | oig_excluded | Meaning |
|---|---|---|
npi | true | Exact NPI match. Authoritative. |
name_state_review | false | Someone with this exact name in this state is excluded. This is not an assertion about your licensee. Compare exclusion_candidate_name, exclusion_candidate_dob and exclusion_candidate_city before acting. |
surname_only_review | false | A namesake exists; exclusion_surname_hits says how many. No detail is shown. |
null | false | Clean — nothing matched. |
This distinction is not pedantry. A live check of "Mary Smith, TX, Registered Nurse" matches LEIE record MARY CLAIRE SMITH (DOB 1951-05-18, Kingsville TX, excluded 1992), while the licensee actually identified is MARY L MURRAY SMITH, license 454090, Travis County, licensed 1980. Same name, same state, same profession, different human being. Only the NPI tells them apart.
Find disciplined licensees
{ "states": ["IL", "WA"], "lastName": "Smith", "onlyDisciplined": true }
Supported on IL, CO, DE, WA and the two Texas nursing boards (RN and LVN). Boards without the column report it in unsupported_filters instead of silently ignoring you.
Bulk license verification for a roster
Verify a whole roster in one run — built for healthcare credentialing, provider network management and HR compliance.
{"roster": [{ "firstName": "Mary", "lastName": "Smith", "state": "TX", "profession": "Registered Nurse" },{ "firstName": "Jane", "lastName": "Doe", "middleName": "A", "state": "WA" },{ "firstName": "John", "lastName": "Roe" }]}
firstName/lastName— at least one required. Supplying both is the threshold for a confident verdict.middleName— optional, breaks same-name ties.state— optional. Omit to search every board.profession— optional filter, also adds to the match score.
Each entry produces one verdict row, capped at 200 entries per run.
Key output fields
| Field | Meaning |
|---|---|
verdict | The credentialing decision (table above). |
match_score / match_tier | 0–100 identity confidence and how it was reached (verified_npi_join is strongest). |
candidates_returned / candidates_tied / candidates_truncated | How many people matched, how many tied, and whether the candidate list was capped. |
boards_searched / boards_failed / boards_failed_detail | Exactly what was checked and what failed. |
license_no, license_status, is_active, status_class, expiration_date | The license itself. |
npi, primary_taxonomy, npi_license_number, practice_city, practice_state | NPI cross-walk. |
oig_excluded, exclusion_match_basis, exclusion_type, exclusion_date, exclusion_review_required | Federal exclusion screen. |
board_action_found, board_action_type, board_action_date | Disciplinary actions. null means could not check, not clean. |
checked_at, leie_as_of | Audit trail. |
Newly licensed clinicians feed — mode: "roster-delta" (v1.2)
Who was licensed since last time? Built for healthcare staffing recruiters, travel-nurse agencies, med-device and pharma reps and provider-network growth teams: every credential originally issued in the last sinceDays on the selected boards, one row each, with the NPPES cross-walk and the OIG screen on the same row. Schedule it weekly and you get a lead list of new, verified, not-excluded licensees.
{"mode": "roster-delta","states": ["WA-DOH", "TX-BON"],"professions": ["Registered Nurse"],"sinceDays": 30,"maxResults": 200}
How the delta works (the shape that converted on realtor-license-roster-delta):
- The first run seeds a baseline in a NAMED key-value store (
license-verifier-roster-delta-baseline, key =delta_scope_key, scoped by boards + professions) and emits the whole window asevent_type: "inventory". - Every later run emits only
event_type: "newly_licensed": a credential absent from the saved baseline and issued on/afterdelta_cutoff_date= previous run − 7 days. A credential that merely entered the scan window late (re-issue, late publication, an old licence re-published) is counted indelta_late_records_suppressedand added to the baseline — never sold as new. - A run against unchanged data emits 0 rows and bills nothing. Proven live on the shipped build (D1 seed → D2 zero).
- Changing
statesorprofessionsstarts a new baseline; the old one is untouched.
Boards with an original-issue date (the only ones that can run a delta): WA-DOH (all WA health professions — the largest roster, 2.4M credentials), TX-BON (RN), TX-LVN, TX-APRN, IL-IDFPR (all professions), CO-DORA, CT-DCP, DE-DPR, OR-CCB, WA-CPA, WA-CONTRACTOR, NY-NOTARY, NY-COS, NY-APPRAISER. A requested board without one (TX TDLR, OR-BCD, NY racing, NY-RE, VT-DFS) is listed in run_legs_skipped with the reason; if nothing can run the run fails and bills nothing. Tip: use the hyphenated ids — a bare "WA" also probes WA-CPA and WA-CONTRACTOR.
professions matches the normalised profession exactly or the board's raw credential type as a prefix, case-insensitively: "Registered Nurse" reaches Registered Nurse License and Registered Nurse Temporary Practice Permit but not Advanced Registered Nurse Practitioner License (ask for that separately). Texas BON legs are fixed-profession (Registered Nurse, Licensed Vocational Nurse, Advanced Practice Registered Nurse); a filter that cannot match a fixed-profession leg drops that leg and says so.
maxResults is the TOTAL cap in this mode (newest credentials first). The baseline still records every scanned credential, so a capped seed run will not re-emit the rest later — size the seed run to the window (matched_rows_total / rows_not_emitted_due_to_cap tell you what was left). Every row is one billable Result; a 0-row delta run costs only the actor-start event.
Why the dates are handled the way they are
Washington DOH publishes firstissuedate as TEXT MM/DD/YYYY, not a date. A typed comparison (firstissuedate > '2026-07-01') returns 0 rows at HTTP 200 — a confident empty answer. This actor filters WA (and IL, OR — same shape) with a month pattern server-side and then parses every date client-side, calendar-validated, so a value it cannot place on the calendar is counted in leg_rows_undated, never guessed. Texas BON issue dates are numbers (20260825) and CO/CT/DE/NY/WA-CPA are true dates, so those get real server-side ranges — capped at the run date, because CT, DE and CO publish issue dates in 2029, 2090 and 2177.
Drift gate (runs before any billable row)
Per board, every run: row-count floor (WA ≥ 2,400,000), a bogus year-2100 window must return 0 (an ignored $where returns the whole table at HTTP 200), the issue column must be present, a positive canary (WA credential RN.RN.00174997 must read Joylene Swanberg, issued 09/01/2026) and a negative control must return 0. A measured-wrong probe fails the board as drift; a probe that could not complete fails it as availability (never misreported as drift); the corroborating "window has rows" probe discloses-and-proceeds (drift_gate_status: verified_degraded). If every requested board fails, the run FAILS with 0 rows and nothing billed; if some fail, their rows are absent and run_complete is false with the reason on every row.
roster-delta output fields (appended, all nullable)
| Field | Meaning |
|---|---|
mode, feed | roster-delta on these rows; null on classic rows. |
event_type | inventory (seeding run) or newly_licensed. |
event_basis | Plain-English reason: issue date, cutoff, previous run. |
profession / credential_kind | Normalised profession (Registered Nurse) and kind parsed from the suffix (license, certification, registration, temporary_permit, interim_permit, compact_privilege, probationary, associate, trainee, approval, permit, other). Raw value stays in license_type. |
profession_filter / profession_filter_matched_on | The filter as applied and which entry this row matched. |
employer | Texas BON place_of_employment when reported (RN/LVN); null elsewhere. |
original_issue_date | The credential's first-issue date, ISO. |
county, city, state | As published — TX BON and IL publish county; WA DOH publishes neither city nor county. |
since_days, window_since_date, window_until_date | The window applied. |
delta_scope_key, delta_baseline_seeded, delta_previous_run_at, delta_cutoff_date | Baseline identity, whether one existed, when it was written, the cutoff. |
delta_late_records_suppressed, delta_already_seen | Counts explaining what was NOT emitted. |
run_legs_requested, run_legs_ok, run_legs_failed, run_legs_failed_reason, run_legs_skipped, run_complete | Per-board outcome of the run, on every row. |
matched_rows_total, results_truncated, rows_not_emitted_due_to_cap, max_results_cap | Cap accounting. |
drift_gate_status, drift_gate_note | This board's gate verdict and every probe measurement. |
leg_server_total, leg_rows_in_window, leg_rows_undated, source_data_as_of | The source's exact count for the window, rows kept after client-side date checking, rows with an unparseable date, upstream stamp when published. |
npi_match_confidence | license_number_join · single_candidate · ambiguous (candidates found, none attributable — npi is null) · no_candidate · lookup_failed · not_attempted (an explicit npiMaxLookups budget was spent — by default every emitted row gets one NPPES lookup in this mode) · disabled (npiLookup: false). Newly licensed clinicians frequently have no NPI yet; no_candidate is the honest answer, not a defect. |
npi, primary_taxonomy, practice_*, oig_excluded, exclusion_*, status_class, is_active | Same contracts as the classic modes — oig_excluded is only ever true on an exact NPI match. |
Use as an MCP tool
This Actor is callable directly by any MCP-compatible AI agent through Apify's hosted MCP server. There is no server to run and no integration code to write - the tool schema an agent sees is generated from this Actor's own input and dataset schemas.
Endpoint
https://mcp.apify.com?tools=malonestar/license-verifier
Claude Desktop, Claude Code or Cursor - add to claude_desktop_config.json,
.mcp.json or .cursor/mcp.json respectively:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=malonestar/license-verifier","headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }}}}
Get a token at https://console.apify.com/settings/integrations. Claude Desktop can
also authenticate interactively via OAuth against https://mcp.apify.com with no
headers block. Full reference: https://docs.apify.com/platform/integrations/mcp
Try asking your agent
Verify whether Mary Smith holds an active nursing license in Texas, cross-walk her NPI, and check the HHS-OIG exclusion list.
Chains well with - expose these alongside it by comma-separating the tools
parameter, and the agent can carry results from one into the next:
malonestar/medicaid-exclusion-screenermalonestar/childcare-provider-leads
https://mcp.apify.com?tools=malonestar/license-verifier,malonestar/medicaid-exclusion-screener,malonestar/childcare-provider-leads
Billing is unchanged when called as an MCP tool: this Actor is Pay-Per-Event and an agent pays the same per-result price a human does. A run that cannot answer fails without billing rather than returning an unverified negative.
FAQ
What is primary source verification? Checking a credential directly against the issuing board's own record. Every row carries source_agency and source_url pointing at the official verification page.
Does it include license expiration? Yes — expiration_date on every board that publishes it, normalized to ISO.
Does it include disciplinary and board actions? Yes, where published: IL, CO, DE, WA and the Texas nursing boards carry a flag on the record itself; Colorado adds the case number, action type and effective date inline; Delaware and New York physician actions are also joined from dedicated enforcement datasets. board_action_found is false when the board publishes the column and the licensee is clear, and null when the board publishes no such column at all — so "checked and clear" is never confused with "not checked".
Does it check the OIG exclusion list? Yes — HHS-OIG LEIE, on by default, matched by NPI first. Ideal for monthly exclusion monitoring.
Does it look up NPI numbers? Yes — the NPPES registry, returning NPI, taxonomy and practice address, and using the license number to confirm identity.
Which states? CO, CT, DE, IL, NY, OR, TX, VT, WA across 19 boards, plus two federal sources. See the coverage table.
Any captchas or anti-bot? No. All sources are official open data or public federal APIs.
Can I get a list of newly licensed nurses / physicians every week? Yes — mode: "roster-delta" with states: ["WA-DOH"] (or TX-BON, IL-IDFPR, CO-DORA, CT-DCP, DE-DPR) and professions: ["Registered Nurse"] on a weekly schedule. The first run seeds, every later run emits only credentials issued since the previous run, each with NPI and OIG screen attached.
Source & freshness
State professional-licensing open-data portals (Socrata), the CMS NPPES NPI Registry, and the HHS-OIG LEIE. Official, keyless (optional socrataAppToken raises rate limits). The exclusion list is cached per run and refreshed when OIG publishes a new file — leie_as_of records which edition was used.
Pricing (Pay Per Result)
Billed per row returned.
- A single search that matches nothing returns no rows and costs nothing.
- A roster entry always returns one verdict row and is always billable — including
NOT_FOUNDandINCONCLUSIVE_SOURCE_ERROR. A verified negative is the deliverable. statusOnlyreturns fewer fields at the same price per row. It is a convenience, not a discount.- NPI cross-walk, exclusion screening and disciplinary lookups add no per-row cost.
roster-delta: every emitted credential row is billable;maxResultscaps the whole run. A scheduled delta run against unchanged data emits 0 rows and costs only the actor-start event. Size the seeding run deliberately — a 30-day Washington RN window is ~650 credentials.
Related actors
Lead and registry feeds from the same catalogue whose people and businesses this actor can verify. The Where both cover column lists only the places both actors actually serve (see each actor's own Coverage table).
| Actor | What it adds for you | Example workflow | Where both cover |
|---|---|---|---|
| Realtor License Roster Delta | New real-estate licensees and agents who just changed sponsoring broker | Recruiters get the agent list there, then verify an individual agent's licence status and board discipline here before making an offer | NY (NY-RE), CO, CT, DE |
| KYB Company Verifier | Registry verification of the business entity behind a licensed contractor or firm | Verify the person's licence here and the company they trade under there, for vendor onboarding | CO, CT, DE (business-licence list), NY, OR |
| Secretary of State Business Monitor | Newly formed LLCs and corporations, with registered agent and formation date | A newly formed Connecticut or Colorado company: search its name with businessName to see whether it holds a state credential before you quote or subcontract | CO, CT (the boards that publish a business name); DE, NY, OR are covered by both but their boards here are searched by person name |
| City Business License Leads | Newly licensed businesses in five cities | A new Seattle business licence for a contractor: search its name with businessName against the Washington L&I contractor registry (WA-CONTRACTOR) | Seattle (WA) |
| Medicaid Exclusion Screener | State Medicaid exclusion lists alongside the federal OIG LEIE | Credentialing: this actor covers the board record and the federal list; add state Medicaid exclusions for the same roster | Federal (OIG LEIE); state list: New York (OMIG) |