License Verification API — Nurses, MDs & OIG Exclusions avatar

License Verification API — Nurses, MDs & OIG Exclusions

Pricing

from $5.50 / 1,000 results

Go to Apify Store
License Verification API — Nurses, MDs & OIG Exclusions

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

Kyle Maloney

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

0

Monthly active users

4 days ago

Last modified

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 thisWhy it matters
Names the boards it could not reachA 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–100125 Texas RNs are named "Mary Smith". A surname hit is not an identification, and the output says so.
Cross-walks to the NPI registryThe provider's self-reported license number in NPPES pins the exact board record — collapsing those 125 candidates to one.
Screens the federal exclusion listHHS-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 vocabularyTexas publishes CURRENT (C), not "Active". A substring guess marks 434,301 active nurses as inactive. This doesn't.

Verdicts

verdictMeaning
LICENSED_ACTIVEConfidently identified, license in good standing.
LICENSED_NOT_ACTIVEConfidently identified; expired, inactive, revoked, surrendered or deceased. See status_class.
AMBIGUOUSRecords found, but identity is not confirmed (weak score or a tie). Supply a first name, middle name, state or license number.
NOT_FOUNDEvery board answered, none had a record.
INCONCLUSIVE_SOURCE_ERRORA 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 IDStateAgencyWhat it actually covers
ILIllinoisIDFPRAll professions — medical, nursing, real estate, cosmetology, engineering. Includes disciplinary flag.
CTConnecticutCT DCP eLicenseAll state credentials — health, trades, professional.
COColoradoCO DORAAll professional and occupational licenses. Disciplinary actions inline (case number, action, date) on 59,319 records.
TXTexasTX TDLRTrades only — contractors, electricians, HVAC, cosmetology. Not healthcare.
TX-BONTexasTX Board of NursingRegistered Nurses (RN) — incl. board-action flag, specialty, nursing school.
TX-LVNTexasTX Board of NursingLicensed Vocational Nurses (LVN).
TX-APRNTexasTX Board of NursingAPRN / Nurse Practitioners — incl. prescriptive authority status.
WAWashingtonWA DOHAll health professions — nurses, physicians, dentists, therapists, counselors. Real disciplinary flag.
WA-CPAWashingtonWA Board of AccountancyCertified Public Accountants.
WA-CONTRACTORWashingtonWA L&IRegistered construction contractors + principal names.
OROregonOR CCBConstruction contractors (active only).
OR-BCDOregonOR BCDElectricians, plumbers, boiler, elevator, inspectors.
DEDelawareDE DPRAll DPR boards, incl. city/ZIP and issue date. Disciplinary actions joined from the DPR enforcement dataset.
NYNew YorkNYS Gaming CommissionHorse-racing occupations only. Not a professional or healthcare credential source.
NY-RENew YorkNY DOSReal estate salespersons and associate brokers.
NY-COSNew YorkNY DOSCosmetology, appearance enhancement, barbering.
NY-NOTARYNew YorkNY DOSCommissioned notaries public.
NY-APPRAISERNew YorkNY DOSCertified real estate appraisers.
VT-DFSVermontVT Division of Fire SafetyElectricians, 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.

FieldBoards that populate it
city / zipIL, 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.
countyIL, OR, OR-BCD, TX, TX-BON, TX-LVN, TX-APRN, NY-RE, NY-NOTARY, NY-APPRAISER.
specialtyIL, CO, TX-BON, TX-APRN, OR-BCD, WA-CONTRACTOR, VT-DFS, and DE (board category).
ever_disciplined + board_action_foundIL, CO, DE, WA, TX-BON, TX-LVN. null on the rest — meaning not checked, never clear.
discipline_action / discipline_reason / board_action_dateIL (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_settingTX-BON and TX-LVN only.
prescriptive_authority_*TX-APRN only.
npi and the rest of the NPI blockAny board, when the licensee is in NPPES — i.e. healthcare. Empty for trades, notaries and real estate.
titleIL, TX-BON, TX-LVN, TX-APRN, OR, OR-BCD, NY-NOTARY, WA-CPA, WA-CONTRACTOR, VT-DFS.
business_nameIL, 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_basisoig_excludedMeaning
npitrueExact NPI match. Authoritative.
name_state_reviewfalseSomeone 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_reviewfalseA namesake exists; exclusion_surname_hits says how many. No detail is shown.
nullfalseClean — 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

FieldMeaning
verdictThe credentialing decision (table above).
match_score / match_tier0–100 identity confidence and how it was reached (verified_npi_join is strongest).
candidates_returned / candidates_tied / candidates_truncatedHow many people matched, how many tied, and whether the candidate list was capped.
boards_searched / boards_failed / boards_failed_detailExactly what was checked and what failed.
license_no, license_status, is_active, status_class, expiration_dateThe license itself.
npi, primary_taxonomy, npi_license_number, practice_city, practice_stateNPI cross-walk.
oig_excluded, exclusion_match_basis, exclusion_type, exclusion_date, exclusion_review_requiredFederal exclusion screen.
board_action_found, board_action_type, board_action_dateDisciplinary actions. null means could not check, not clean.
checked_at, leie_as_ofAudit 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):

  1. 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 as event_type: "inventory".
  2. Every later run emits only event_type: "newly_licensed": a credential absent from the saved baseline and issued on/after delta_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 in delta_late_records_suppressed and added to the baseline — never sold as new.
  3. A run against unchanged data emits 0 rows and bills nothing. Proven live on the shipped build (D1 seed → D2 zero).
  4. Changing states or professions starts 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)

FieldMeaning
mode, feedroster-delta on these rows; null on classic rows.
event_typeinventory (seeding run) or newly_licensed.
event_basisPlain-English reason: issue date, cutoff, previous run.
profession / credential_kindNormalised 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_onThe filter as applied and which entry this row matched.
employerTexas BON place_of_employment when reported (RN/LVN); null elsewhere.
original_issue_dateThe credential's first-issue date, ISO.
county, city, stateAs published — TX BON and IL publish county; WA DOH publishes neither city nor county.
since_days, window_since_date, window_until_dateThe window applied.
delta_scope_key, delta_baseline_seeded, delta_previous_run_at, delta_cutoff_dateBaseline identity, whether one existed, when it was written, the cutoff.
delta_late_records_suppressed, delta_already_seenCounts explaining what was NOT emitted.
run_legs_requested, run_legs_ok, run_legs_failed, run_legs_failed_reason, run_legs_skipped, run_completePer-board outcome of the run, on every row.
matched_rows_total, results_truncated, rows_not_emitted_due_to_cap, max_results_capCap accounting.
drift_gate_status, drift_gate_noteThis board's gate verdict and every probe measurement.
leg_server_total, leg_rows_in_window, leg_rows_undated, source_data_as_ofThe 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_confidencelicense_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_activeSame 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-screener
  • malonestar/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_FOUND and INCONCLUSIVE_SOURCE_ERROR. A verified negative is the deliverable.
  • statusOnly returns 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; maxResults caps 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.

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).

ActorWhat it adds for youExample workflowWhere both cover
Realtor License Roster DeltaNew real-estate licensees and agents who just changed sponsoring brokerRecruiters get the agent list there, then verify an individual agent's licence status and board discipline here before making an offerNY (NY-RE), CO, CT, DE
KYB Company VerifierRegistry verification of the business entity behind a licensed contractor or firmVerify the person's licence here and the company they trade under there, for vendor onboardingCO, CT, DE (business-licence list), NY, OR
Secretary of State Business MonitorNewly formed LLCs and corporations, with registered agent and formation dateA newly formed Connecticut or Colorado company: search its name with businessName to see whether it holds a state credential before you quote or subcontractCO, 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 LeadsNewly licensed businesses in five citiesA 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 ScreenerState Medicaid exclusion lists alongside the federal OIG LEIECredentialing: this actor covers the board record and the federal list; add state Medicaid exclusions for the same rosterFederal (OIG LEIE); state list: New York (OMIG)