US Professional License Lookup & Verification API avatar

US Professional License Lookup & Verification API

Pricing

from $4.00 / 1,000 license records

Go to Apify Store
US Professional License Lookup & Verification API

US Professional License Lookup & Verification API

Look up and verify professional licenses by name or license number from official public records: Texas TDLR, Florida DBPR, Colorado DORA, Washington DOH and the federal NPI Registry. Normalized status, expiration and discipline flags. Pay per license record.

Pricing

from $4.00 / 1,000 license records

Rating

0.0

(0)

Developer

Owlabee

Owlabee

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Look up and verify professional licenses by name or license number from official public records, and get one normalized JSON record per license: state, board, license number and type, profession, normalized status (ACTIVE, EXPIRED, SUSPENDED, REVOKED, PROBATION, PENDING, INACTIVE, UNKNOWN) plus the board's raw status, issue and expiration dates, city, county, zip, a disciplinary-action flag and a link back to the source. In verify mode every record also carries verified: true|false and plain-English verificationNotes.

What it does

The Actor queries only official, public license registries, over plain HTTP, with no login, browser or proxy:

Source idBoardCoverageHow it is queried
TX_TDLRTexas Department of Licensing and Regulation~1.0 M licenses: electricians, A/C & HVAC technicians and contractors, cosmetologists, barbers, salons, tow operators, behavior analysts, property tax professionals, auctioneers, water well drillers, elevator and boiler inspectors, …Socrata open-data API on data.texas.gov (dataset 7358-krk7)
FL_DBPRFlorida Department of Business & Professional RegulationReal estate, construction contractors, community association managers, home inspectors, cosmetology and barbers, CPAs, architects, engineers, veterinarians, hotels & restaurants, …The public "Verify a Licensee" portal on myfloridalicense.com (one HTML request per query, 1 request/second)
CO_DORAColorado Department of Regulatory Agencies, Division of Professions and Occupations~1.6 M licenses across every DORA profession: nurses, physicians, dentists, pharmacists, CPAs, cosmetologists, electricians, plumbers, real estate, … including disciplinary case numbersSocrata open-data API on data.colorado.gov (dataset 7s5z-vewr, updated daily)
WA_DOHWashington State Department of Health~2.5 M health-care credentials: RNs, LPNs, ARNPs, nursing assistants, physicians, EMTs, counselors, pharmacists, … with an "action taken" flagSocrata open-data API on data.wa.gov (dataset qxh8-f4bd, updated daily)
NPICMS NPPES NPI Registry (federal)Every US health-care provider and organization with an NPI; includes the self-reported state license number and taxonomyOfficial JSON API at npiregistry.cms.hhs.gov

It is built for compliance teams, staffing agencies, insurers, marketplaces and procurement teams that need to check contractor, cosmetology, real-estate or healthcare licenses in bulk, and for AI agents that need a structured answer to "is this license active?". Results arrive in the dataset as they are found and can be downloaded as JSON, CSV or Excel, read through the API, pushed to a webhook, or consumed through the Apify MCP server.

How to use

  1. Enter Queries, one per line, e.g. TX:3365:Master Electrician, FL:SEC17708, name:Jane Smith:CO, npi:1003000126. For exact fields (city, board) use Lookups (structured) instead: [{"state": "CO", "name": "Smith, John", "licenseType": "RN", "city": "Denver"}].
  2. Pick the Mode: lookup lists every matching license; verify adds verified and verificationNotes. Optionally narrow Sources and set Max records per query.
  3. Click Start. For scheduled monitoring, turn on Monitor mode so later runs emit only licenses whose status or expiration changed.

Query routing

  • A query with a state (TX:…, name:…:FL) is answered by that state's board(s) only.
  • A query without a state (name:Jane Smith) is answered by every enabled source, including the NPI Registry.
  • A board (npi:…, tdlr:…, dbpr:…, dora:…, doh:…) pins the query to one source. A bare 10-digit number is treated as an NPI.
  • License numbers repeat across license types in Texas and Colorado; add the type (TX:3365:Master Electrician, CO:RN.123456) to get a single record.

Input

FieldTypeRequiredDescription
queriesstring[]one of queries / lookupsLenient one-line queries: STATE:NUMBER[:TYPE], name:NAME[:STATE], npi:NUMBER, npi:NAME[:STATE], BOARD:…
lookupsobject[]one of queries / lookupsStructured queries: state, licenseNumber, name, licenseType, city, board
modelookup | verifynoverify adds verified and verificationNotes (default lookup)
sourcesstring[]noSubset of TX_TDLR, FL_DBPR, CO_DORA, WA_DOH, NPI (default all)
maxResultsPerQueryintegernoCap per query across sources, 1–200 (default 25)
maxResultsintegernoCap on dataset items per run (default 500)
monitorbooleannoEmit only changes since the last run (default false)
stateStoreNamestringnoKV store for monitor snapshots (default us-license-verifier-state)
socrataAppTokenstring (secret)noOptional Socrata app token to raise rate limits on the TX/CO/WA datasets
maxConcurrencyintegernoParallel queries, 1–5 (default 3)
webhookUrlstringnoPOST target for the run summary and emitted items

Output example

A verified Texas master electrician (verify mode, query TX:3365:Master Electrician):

{
"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",
"city": null,
"county": "Walker",
"zip": null,
"disciplinaryActionFlag": null,
"continuingEducationRequired": false,
"sourceUrl": "https://www.tdlr.texas.gov/LicenseSearch/",
"sourceRecordId": "MASTER ELECTRICIAN#3365",
"fetchedAt": "2026-10-16T13:18:49.662Z",
"query": "TX:3365:Master Electrician",
"queryKey": "tx:3365:master-electrician-9e1c2a7b",
"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."
]
}

A Colorado nurse with a board action (CO_DORA) adds licenseTypeCode, licenseCategory, lastRenewedDate, disciplinaryActionFlag: true and disciplinaryAction: { caseNumber, action, effectiveDate, completedDate }. Washington records add disciplinaryActionPending. Florida records add nameType and addressState. NPI records add enumerationType, taxonomyCode, stateLicenseNumber, stateLicenseState and allTaxonomies.

Other item shapes:

  • Not found: { "query": "FL:ZZZZ99999", "found": false, "state": "FL", "sourcesQueried": ["FL_DBPR"], "verified": false, "verificationNotes": ["No matching record …"] }
  • Error: { "query": "CA:123456", "found": false, "error": "INVALID_QUERY", "errorMessage": "State CA is not supported yet. Supported: TX, FL, CO, WA …" }. Error codes: SOURCE_UNAVAILABLE (timeout, 5xx), SOURCE_BLOCKED (403/429/block page), INVALID_QUERY (unsupported state or board, missing number and name, rejected filter).
  • Monitor change: a normal license record plus changeType (new / changed / removed), changedFields, previousStatus, previousExpirationDate.

Pricing

Pay per event. You only pay for what the Actor produces; set a maximum cost per run in the run options to cap spend.

EventPriceNotes
License record (license-verified)$0.004Per dataset item in lookup or verify mode: each license found, each not-found result and each error item
Monitor re-check (monitor-check)$0.002Per query re-checked in monitor mode (not on the baseline run); changed records are charged as license records on top
Actor start$0.00005Apify platform event

Example: 1,000 verifications ≈ $4.00. A daily monitor of 100 licenses costs $0.20 per run when nothing changed, plus $0.004 per changed record. The first monitor run is a baseline that emits and charges every current record.

Limits and fair use

  • Each source is rate-limited to about one request per second; Socrata datasets accept an optional free app token for higher limits. Very large inputs take proportionally longer (expect roughly 1–3 s per query per source).
  • Name searches on common names can match hundreds of licenses; maxResultsPerQuery (default 25, max 200) caps them. Narrow with a state, license type or city.
  • Florida returns the first 50 matches of the portal's result page; Texas, Colorado and Washington return up to maxResultsPerQuery matches.
  • Texas publishes no status column, so the Texas status is derived from the expiration date (statusDerived: true). Texas and Colorado open-data extracts are refreshed by the boards (Colorado and Washington daily, Texas less often); results may lag the board's live database.
  • Only public records are accessed; no login, no proxies, no personal data beyond what the board publishes.

Other pay-per-event Actors from the same account, all limited-permission and agent-friendly:

FAQ

Does this need proxies or an API key? No. All five sources are public and reachable from Apify's standard datacenter infrastructure. A free Socrata app token is optional and only raises rate limits.

How is cost controlled? Set maxResultsPerQuery, maxResults and the run's maximum total charge. The Actor charges each item the moment it is saved and stops cleanly when any limit is reached.

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 federal NPI Registry. Unsupported states return an INVALID_QUERY item naming the supported ones. California's DCA and CSLB lookups sit behind Cloudflare Turnstile and are not included.

What does verified mean exactly? found and status === "ACTIVE" and the expiration date is today or later. Statuses such as "Active - With Conditions" normalize to PROBATION and therefore do not verify; the raw status is always kept in rawStatus and explained in verificationNotes.

Can an AI agent call it? Yes. It is pay-per-event, uses limited permissions and is discoverable through the Apify MCP server. Example prompts: "Verify Texas master electrician license 3365 and tell me when it expires", "Find every active Colorado RN named Smith, John in Denver", "Check whether NPI 1003000126 is active and which state license it lists".

How does monitor mode work? Each query's current licenses are fingerprinted (status + expiration date) in the named key-value store. Later runs emit only new, changed or removed records and charge one monitor-check per query. If a source errors during a run, that query's snapshot is kept so licenses are not reported as removed by mistake.

This Actor queries only official public license registries and reproduces what they publish; records may lag the issuing board's live database and should be confirmed with the board before any decision is based on them (every record links back to the official lookup in sourceUrl).

FCRA disclaimer. This Actor is not a consumer reporting agency and its output is not a consumer report. The data must not be used, in whole or in part, to determine eligibility for employment, credit, insurance, housing or any other purpose covered by the Fair Credit Reporting Act or similar laws. Verify with the issuing board. Use the data in compliance with each source's terms of use and applicable law.