Credentialing & Verification

State License Verification Automation

Verify a provider’s license against the state board’s own register: license status, issue and expiration dates, and any disciplinary actions, with an evidence screenshot of the board’s record. Primary-source verification, built board by board.

This workflowState medical / nursing board portals (~50)
StatusAvailable today
AccessBrowser agent
AuthPublic source

Overview

What this workflow does

License verification is board-by-board work because the sources are board-by-board: roughly fifty state boards per profession, each with its own register, search flow, and status vocabulary. A browser agent runs the check a credentialing coordinator runs today: it opens the board’s own license search, finds the license, and reads the full record back, status normalized to active, expired, inactive, revoked, or suspended, plus the license number and type, issue and expiration dates, and the board’s disciplinary-action history.

The workflow is built per board and per license type, California RN today via the state’s DCA license search, and extended board by board the same way the state Medicaid exclusion coverage grows. A request for a board that isn’t built yet ends with a clear scoped error naming what’s supported, never a wrong answer.

Step by step

How the check actually runs

  1. 01The agent opens the state board’s own license register, the primary source, not an aggregator’s copy of it. Board sites often sit behind bot protection, so the agent runs with a residential-proxy and captcha-solving profile, and it never fabricates a challenge token: if verification genuinely can’t complete, the run errors rather than sneaking past.
  2. 02It confirms the request is in scope for the board and license type it’s built for; anything else returns the scoped error.
  3. 03It searches by license number when you have it, the most precise path, or by first and last name.
  4. 04It opens the license detail and reads the record: status, license number and type, issue and expiration dates, and every disciplinary action with its date, type, and description, or the register’s explicit statement that there are none.
  5. 05It screenshots the board’s record as audit evidence, timestamps the check, and returns one structured record.

An expired, revoked, or suspended license is a reported finding, not a failed run, same as every check in this library.

Structured output

What comes back

Every run ends as a record like this in your system, not a portal screenshot someone transcribes. This is the part your team stops doing by hand.

structured output · json
{
"source": "CA DCA License Search",
"status": "found",
"checked_at": "2026-07-16T14:02:11Z",
"result": {
"license_status": "Current",
"license_number": "RN •••482",
"license_type": "Registered Nurse",
"name": "SAMPLE, JANE",
"issue_date": "2014-06-12",
"expiration_date": "2027-06-30",
"disciplinary_actions": []
},
"evidence_screenshot_url": "https://…/evidence/run_51de….png"
}

For many license types, the board’s website is the API

National aggregators like Nursys and the FSMB Physician Data Center cover nurses and physicians, and if your roster stops there, they’re a reasonable rail. It usually doesn’t. Psychologists, LCSWs, LPCs, LMFTs, and most of the behavioral-health license mix have no national aggregator at all, so verification for them is the board’s own register or nothing. And even where an aggregator exists, the board’s register is the primary source, which is the standard credentialing files are held to. This workflow runs against the primary source directly, and captures the disciplinary history most aggregate feeds flatten into a flag.

Pair it with the NPPES NPI lookup to pin the provider’s identity before a name-based board search.

At scale

One license, or the whole roster’s renewal calendar

A single run verifies one license on one board. As a program, verifications run on the roster’s renewal cycle, licenses expire on the board’s schedule, not yours, and the exceptions, expirations, disciplinary actions, unmatched licenses, land with your credentialing team with the board’s own record attached. License verification is part of the credentialing and verification workflow library. The same primary-source discipline covers DEA registration verification and, outside the US, AHPRA registration in Australia.

Human in the loop

What escalates to a human

License checks run on SOC 2 Type II, HIPAA-compliant infrastructure, each with a logged result per board, which is what a delegated-credentialing audit wants to see. See the security page.

A disciplinary action on the record.

Reported with its date, type, and description; what it means for the provider is a judgment, and it’s yours.

Multiple matches on a name.

Reported for a person to resolve, or re-run with the license number for an exact answer.

Bot protection that won’t clear.

The run errors honestly, never fabricates a token, and never records a check that didn’t happen.

A board that isn’t built yet.

A clear scoped error naming what’s supported.

Questions

Frequently asked questions

California RN today, through the state’s DCA license search, and the family grows board by board, the same way the state Medicaid exclusion coverage does. A request for an unsupported board fails with a clear scoped error rather than a wrong answer. If your license mix spans specific boards, scoping those builds is the fastest path.

License verification is one workflow in the credentialing and verification workflow library. A license that expired on the board’s schedule, not yours, is a finding you want first, not one you want explained to you.

Disclaimer

Third-party names, including government agencies and registries, are used only to identify systems commonly involved in healthcare operations workflows. Asteroid is not affiliated with, endorsed by, sponsored by, or certified by those third parties unless expressly stated. Workflow availability depends on customer authorization, account permissions, configuration, and applicable system terms.