Government and public records

Professional License Lookup: TDLR, DBPR, DORA, WA DOH, NPI

State licensing boards publish their license records in different places and formats. This Actor queries five official public registries by name or license number and returns one normalized record per license, with a status, an expiration date and a disciplinary-action flag.

Open the Actor on Apify Store

License Verification API — TDLR, DBPR, DORA, WA DOH, NPI. Pay per result; see the Store page for current pricing.

The source and its limits

Source idBoardCoverageHow it is queried
TX_TDLRTexas Department of Licensing and RegulationAbout 1.0 M licenses: electricians, A/C and HVAC, cosmetologists, barbers, tow operators and moreSocrata open-data API on data.texas.gov
FL_DBPRFlorida Department of Business & Professional RegulationReal estate, construction contractors, home inspectors, CPAs, architects, engineers and moreThe public "Verify a Licensee" portal, one request per query
CO_DORAColorado Department of Regulatory AgenciesAbout 1.6 M licenses across every DORA profession, with disciplinary case numbersSocrata open-data API on data.colorado.gov, updated daily
WA_DOHWashington State Department of HealthAbout 2.5 M health-care credentials, with an "action taken" flagSocrata open-data API on data.wa.gov, updated daily
NPICMS NPPES NPI Registry (federal)Every US health-care provider and organization with an NPIOfficial JSON API at npiregistry.cms.hhs.gov

Queries are one line each: TX:3365:Master Electrician, name:Jane Smith:FL, npi:1003000126, or pinned to a board with tdlr:, dbpr:, dora:, doh:. A query with a state goes only to that state's board; a query without one goes to every enabled source.

Limits worth knowing

  • Texas publishes no status column, so its status is derived from the expiration date (statusDerived: true).
  • Open-data extracts can lag the board's live database: Colorado and Washington refresh daily, Texas less often.
  • Florida returns the first 50 matches of the portal's result page. Common names can match hundreds of licenses; narrow with a state, license type or city.
  • Other states return an INVALID_QUERY item that names the supported ones. California's DCA and CSLB lookups are not included.
  • Each record notes that you should confirm with the issuing board before relying on it.

Fields you get

FieldWhat it holds
state, board, sourceWhich registry answered
licenseNumber, licenseType, licenseSubtype, professionThe license
holderName, businessNameAs the board publishes them
status, rawStatus, statusDerivedNormalized status (ACTIVE, EXPIRED, SUSPENDED, REVOKED, PROBATION, PENDING, INACTIVE, UNKNOWN) and the board's own value
issueDate, expirationDateWhere published
city, county, zipWhere published
disciplinaryActionFlagTrue when the board records an action (Colorado adds case details)
verified, verificationNotesVerify mode: found, active and not expired, with plain-English notes
sourceUrl, sourceRecordIdWhere to confirm the record

Example output

A Texas master electrician in verify mode, query TX:3365:Master Electrician (from the Actor's README):

{
  "state": "TX",
  "board": "TDLR",
  "source": "TX_TDLR",
  "licenseNumber": "3365",
  "licenseType": "Master Electrician",
  "licenseSubtype": "ME",
  "profession": "Electrical",
  "status": "ACTIVE",
  "rawStatus": null,
  "statusDerived": true,
  "holderName": "Womack, Thomas F",
  "businessName": null,
  "issueDate": null,
  "expirationDate": "2027-03-19",
  "county": "Walker",
  "disciplinaryActionFlag": null,
  "sourceUrl": "https://www.tdlr.texas.gov/LicenseSearch/",
  "sourceRecordId": "MASTER ELECTRICIAN#3365",
  "query": "TX:3365:Master Electrician",
  "found": true,
  "verified": true,
  "verificationNotes": [
    "Active; expires 2027-03-19.",
    "Status derived from the expiration date because the source publishes no status field.",
    "Confirm with the issuing board before relying on this result."
  ]
}

Use cases

Check a contractor's trade license

Look up an electrician or HVAC contractor by number in TDLR, or a Florida contractor in DBPR, and read the status and expiration date.

Bulk provider lookups

Send a list of NPIs or names to the NPI Registry and get taxonomy codes and the self-reported state license number for each.

Status-change watch

Turn on monitor to write only licenses that are new, changed (status or expiration) or removed since the last run.

How to run it

You need an Apify account and its API token (Console → Settings → API & Integrations). Each run is billed per result to your account; set a maximum total charge for the run to cap spend.

With curl

The sync endpoint starts a run, waits up to 300 seconds and returns the dataset items. One NPI and one Texas name search in verify mode (the Actor's own quick-start input):

export APIFY_TOKEN=<your Apify API token>

curl -sS -X POST \
  "https://api.apify.com/v2/acts/owlabee~license-verification-api/run-sync-get-dataset-items" \
  -H "Authorization: Bearer ${APIFY_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
  "queries": [
    "npi:1003000126",
    "name:John Smith:TX"
  ],
  "lookups": [],
  "mode": "verify",
  "sources": [
    "TX_TDLR",
    "FL_DBPR",
    "CO_DORA",
    "WA_DOH",
    "NPI"
  ],
  "maxResultsPerQuery": 5,
  "maxResults": 20,
  "monitor": false
}'

From an AI agent (MCP)

Apify hosts an MCP server. This config exposes only this Actor to the agent:

{
  "mcpServers": {
    "owlabee-license-verification-api": {
      "url": "https://mcp.apify.com/?tools=owlabee/license-verification-api",
      "headers": {
        "Authorization": "Bearer ${APIFY_TOKEN}"
      }
    }
  }
}

Then ask, for example: Is Texas master electrician license 3365 active, and when does it expire?

Python, Node.js and more examples

Runnable curl.sh, python.py, node.mjs and mcp.json files for this Actor are in examples/license-verification-api on GitHub.

FAQ

Which states are covered?

Texas (TDLR trades and occupations), Florida (DBPR professions), Colorado (all DORA professions) and Washington (health-care credentials), plus every US health-care provider through the NPI Registry.

What does verified mean?

The license was found, its status is ACTIVE and the expiration date is today or later. Statuses such as "Active - With Conditions" normalize to PROBATION and do not verify.

Is this the board's official verification?

No. It reads the boards' public records and links each one. Confirm with the issuing board before relying on a result.

Why do I get several records for one number?

License numbers repeat across license types in Texas and Colorado. Add the type, for example TX:3365:Master Electrician.

Does it need proxies or a key?

No. A free Socrata app token is optional and only raises rate limits on the Texas, Colorado and Washington datasets.