US License Verification (Contractors & Professionals)
Pricing
from $30.00 / 1,000 license verifieds
US License Verification (Contractors & Professionals)
Verify & normalize US professional and contractor licenses across 11 states (CO, TX, WA, OR, IL, NY, CT, DE, AR, VA, VT) into one clean schema: number, status, classification, bond, expiration, disciplinary flag.
Pricing
from $30.00 / 1,000 license verifieds
Rating
0.0
(0)
Developer
Mario Barrios
Maintained by CommunityActor stats
1
Bookmarked
3
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
US License Verification API — Contractors & Professionals (11 States)
Verify and normalize US professional & contractor licenses across 11 states into one clean, consistent schema. Send a license number (or a name) for any supported state and get back a normalized record — status, classification, expiration, bond, and a disciplinary flag — straight from the official state licensing-board public records, with a source link and verification timestamp on every result.
A single contractor license verification API and license lookup API for bulk checks, KYB / vendor onboarding, and compliance monitoring. Stop writing and maintaining a different scraper for every state board. One input shape, one output shape, eleven states — built for lenders, sureties, insurers, vendor-onboarding and compliance teams, contractor lead-gen, and AI agents that need a fast, auditable license check.
Why this Actor
- One normalized schema across every state.
licenseNumber,licenseeName,status(active / inactive / expired / suspended / revoked / unknown),classification,bondStatus,disciplinaryFlag,issueDate,expirationDate,sourceUrl,verifiedAt. - You only pay when we find a match. No charge for a clean "not found", an unsupported state, or a source error — ever.
- Auditable by design. Every record carries the exact
sourceUrlit was derived from and averifiedAttimestamp. - Two ways to query: by license number, or by licensee / business name.
- Two pricing tiers: a full record, or a cheaper status-only check for recurring renewal/compliance monitoring.
Coverage (11 states)
| State | Source (official) |
|---|---|
| CO | Colorado DORA — professional & occupational licenses |
| TX | Texas TDLR — regulated licensees |
| WA | Washington L&I — registered contractors |
| OR | Oregon CCB — construction contractors (incl. bond) |
| IL | Illinois IDFPR — professional licenses (incl. disciplinary flag) |
| NY | New York — contractor registry |
| CT | Connecticut eLicense — all credentials |
| DE | Delaware — professional regulation |
| AR | Arkansas Contractors Licensing Board |
| VA | Virginia DPOR — contractors (Class A/B/C) |
| VT | Vermont Division of Fire Safety — electrical, plumbing & trade licenses |
Coming soon: Florida (DBPR construction), North Carolina, West Virginia. More states are added continuously — need one that isn't here yet? Request it.
Why not just build it yourself?
Verifying licenses across states is death by a thousand scrapers. Every board ships its data in a different shape — some as open-data APIs, some as 40 MB CSVs, some only behind a JavaScript form — and they break silently when a column gets renamed or a portal moves. You'd write one scraper per board, then maintain all of them forever.
This Actor collapses that into one call. We absorb the per-state format drift, normalize everything into a single schema, and run a daily health canary against every source so breakage is caught before it reaches your results — never returned to you as a misleading "no match." You pay only when we deliver a verified record.
Input
{"queries": [{ "route": "CO", "params": { "licenseNumber": "711991" } },{ "route": "WA", "params": { "licenseNumber": "ECOSTSC758NN" } },{ "route": "TX", "params": { "name": "ABC Plumbing" } }],"mode": "full"}
queries— one or more lookups. Each is{ "route": <2-letter state>, "params": { "licenseNumber": "…" } }, or use"name"to search by licensee/business name.mode—full(default, complete record) orstatus(status-only, cheaper).maxResultsPerQuery(optional) — a license number can match more than one license type; default 50.socrataAppToken(optional) — a free Socrata token raises rate limits for high-volume runs.
Output
One flat row per result.
{"result": "found","state": "OR","licenseNumber": "100215","licenseeName": "BRUCE HUIE","status": "active","classification": "RGC (Residential General Contractor)","bondStatus": "$25,000 bond with WESTERN SURETY COMPANY (expires 2028-02-06)","bondAmount": 25000,"bondCompany": "WESTERN SURETY COMPANY","bondExpirationDate": "2028-02-06","disciplinaryFlag": null,"issueDate": "1994-06-20","expirationDate": "2028-02-06","asOf": null,"sourceUrl": "https://data.oregon.gov/resource/g77e-6bhs.json?$where=…","verifiedAt": "2026-05-31T12:00:00.000Z"}
result is found, not_found, or source_error. Only found rows are billed.
Pricing
Pay-per-event — you pay per successful verification:
| Event | What you get | Price |
|---|---|---|
license-verified | Full normalized record | $0.03 |
status-check | Status-only result (use mode: "status") | $0.01 |
No subscription, no charge on misses. For comparison, dedicated verification APIs typically charge $0.20–$0.50+ per lookup.
How it works
For each query the Actor routes to that state's official open-data source, fetches the matching record(s), and normalizes them into the shared schema. Where a board doesn't publish an explicit status, status is derived from the expiration date against the current public roster (i.e. "present and unexpired", not a positively-asserted flag) — this is noted per record's source.
FAQ
Is the data official? It comes from official state licensing-board public records, but this Actor is unofficial and not affiliated with any board. Always confirm directly with the board before relying on a result.
How fresh is it? Each record shows verifiedAt (when we fetched it) and, where the source exposes it, asOf (the source's own refresh date). Some states publish daily; bulk-file states refresh on the board's own schedule.
Can I bulk-verify? Yes — pass many items in queries. A license number that maps to multiple license types returns multiple rows.
Can I use this for employment, tenant, credit, or insurance screening? No. See the disclaimer below.
Legal & acceptable use
NOT A CONSUMER REPORT / NOT FCRA-COMPLIANT. This Actor and its output are not a consumer report and the operator is not a consumer reporting agency under the Fair Credit Reporting Act (15 U.S.C. § 1681 et seq.). Do not use this data, in whole or in part, to establish eligibility for employment, credit, insurance, housing/tenancy, or any other FCRA-covered purpose. For those purposes, obtain a consumer report from a properly licensed consumer reporting agency.
Source & accuracy. Data is sourced from official state licensing-board public records and reflects the source as of each record's
verifiedAttimestamp. It may be incomplete, delayed, or out of date, and is an unofficial reflection — always confirm license status directly with the relevant state board before relying on it. Provided as-is, with no warranty of accuracy, completeness, or fitness for a particular purpose; not legal or compliance advice.
Unofficial / no affiliation. This Actor is not affiliated with, sponsored by, endorsed by, or certified by any state licensing board, government agency, or data provider.
Your responsibility. You are solely responsible for ensuring your use complies with the terms of use, open-data license, and applicable open-records / anti-solicitation laws of each source jurisdiction. Prohibited uses include FCRA-covered screening, unsolicited marketing/solicitation to licensees, building competing databases where source terms forbid it, and any unlawful, harassing, or stalking purpose.
Categories: Business, Developer tools. Tags: license-verification, contractor-license, compliance, kyb, due-diligence.