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.
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 id | Board | Coverage | How it is queried |
|---|---|---|---|
TX_TDLR | Texas Department of Licensing and Regulation | About 1.0 M licenses: electricians, A/C and HVAC, cosmetologists, barbers, tow operators and more | Socrata open-data API on data.texas.gov |
FL_DBPR | Florida Department of Business & Professional Regulation | Real estate, construction contractors, home inspectors, CPAs, architects, engineers and more | The public "Verify a Licensee" portal, one request per query |
CO_DORA | Colorado Department of Regulatory Agencies | About 1.6 M licenses across every DORA profession, with disciplinary case numbers | Socrata open-data API on data.colorado.gov, updated daily |
WA_DOH | Washington State Department of Health | About 2.5 M health-care credentials, with an "action taken" flag | Socrata open-data API on data.wa.gov, updated daily |
NPI | CMS NPPES NPI Registry (federal) | Every US health-care provider and organization with an NPI | Official 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_QUERYitem 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
| Field | What it holds |
|---|---|
state, board, source | Which registry answered |
licenseNumber, licenseType, licenseSubtype, profession | The license |
holderName, businessName | As the board publishes them |
status, rawStatus, statusDerived | Normalized status (ACTIVE, EXPIRED, SUSPENDED, REVOKED, PROBATION, PENDING, INACTIVE, UNKNOWN) and the board's own value |
issueDate, expirationDate | Where published |
city, county, zip | Where published |
disciplinaryActionFlag | True when the board records an action (Colorado adds case details) |
verified, verificationNotes | Verify mode: found, active and not expired, with plain-English notes |
sourceUrl, sourceRecordId | Where 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.