Contractor License Lookup & Verification — 8 US States
Pricing
Pay per usage
Contractor License Lookup & Verification — 8 US States
Verify US contractor licences by number or business name. Normalized JSON with status, classifications, expiration, bond and insurance where the state publishes it.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Bio Verse
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
24 days ago
Last modified
Categories
Share
Contractor License Lookup & Verification API — CA, CT, FL, IL, NYC, OR, TX, WA
Verify a contractor license by license number or business name in seconds. Give this actor a licence number or a business name and it returns one normalized JSON record per licence — status, trade classifications, expiration date, and, where the state publishes them, the surety bond and insurance policies.
Every record comes from the licensing board's own public records — CSLB, eLicense, DBPR, IDFPR, DCWP, CCB, TDLR, L&I. Nothing is inferred, nothing is padded, and every record carries a link back to the source row.
What you get
| Field | Meaning |
|---|---|
status | Normalized: ACTIVE, EXPIRED, SUSPENDED, REVOKED, INACTIVE, UNKNOWN |
status_raw | The board's exact wording, never modified |
business_name, qualifier_name | The company and the individual who holds the licence |
classifications | Trade codes — CA's B / C-10, WA's CC, NYC's GENERAL CONTRACTOR |
issue_date, expiration_date | Where the board publishes them |
bond | Surety, bond number, amount (CA, OR, WA) |
liability_insurance | Carrier, policy number, limit (OR, WA) |
workers_comp | Carrier and policy (CA); exemption status only (OR) |
disciplinary_actions | Case number, type, date, reason (IL) |
address | Business address as filed |
source_url, source_name, retrieved_at | Provenance on every single record |
data_completeness | Which fields this board actually supplies |
That last field matters more than it looks. State boards publish wildly different things, so
a null bond is ambiguous on its own. data_completeness tells you whether it means "this
contractor has no bond" or "this board doesn't publish bonds at all".
Coverage, and its limits
| State | Board | Source | Read this before you build on it |
|---|---|---|---|
| CA | CSLB | best-effort | Full coverage. CSLB publishes no official extract, so this one is scraped and is the most fragile of the eight. Name searches omit the qualifier; number lookups include it. |
| CT | eLicense | official | Full coverage. A Connecticut credential is printed with its type prefix — HIC.0631057 — and the prefix matters: thousands of numbers are shared by more than one credential type. A bare number is resolved when it is unambiguous and refused with the candidates named when it is not. data_as_of is the row's own refresh stamp, which across the file runs from 2004 to today. |
| FL | DBPR | best-effort | Full coverage, no bond or insurance published. DBPR has been blocking automated downloads of its own public extract since 2026-08-05; records stop being served rather than served stale once the extract passes a week old. Check data_as_of. |
| IL | IDFPR | official | Roofing contractors only — the one construction trade Illinois publishes. The only state here whose feed carries disciplinary actions. |
| NY | NYC DCWP + DOB | official | New York City only. New York State issues no statewide contractor licence. Covers home improvement contractors, general contractors, master plumbers and electrical contractors. |
| OR | CCB | official | Full coverage, including bond and liability insurance. |
| TX | TDLR | official | No general contractors. Texas licenses electricians, HVAC, irrigators and similar trades; general contracting is unregulated at state level. Numbers printed with a prefix (TACLA00000299C) and bare numbers (299) both resolve. |
| WA | L&I | official | Full coverage, including bond and liability insurance. |
official means the state publishes a machine-readable extract or API that we read directly. best-effort means it does not, and the data is obtained by other means — same record shape, weaker guarantee. There are only two of the latter, and they are named here rather than left for you to discover.
These caveats are here rather than in the fine print because finding out after you have integrated is worse than knowing now.
Input
{"state": "CA","licenseNumbers": ["1000004"],"names": ["ACME CONSTRUCTION"],"limit": 25,"includeNotFound": false}
- state — one of
CA,CT,FL,IL,NY,OR,TX,WA. - licenseNumbers — exact numbers. Dashes and spaces are ignored.
- names — partial, case-insensitive business or qualifier name search.
- limit — how many licences to return per name (1–1000). The actor pages through the API for you; a large number means a longer run, not a bigger single request.
- includeNotFound — add a row for queries that matched nothing. You are never charged for these rows.
Output
One dataset row per licence:
{"query": "1000004","query_type": "license_number","state": "CA","license_number": "1000004","status": "ACTIVE","status_raw": "Active","business_name": "SOUTH COAST CONSTRUCTION & DEVELOPMENT","classifications": [{ "code": "B", "description": "General Building Contractor" }],"expiration_date": "2027-05-31","bond": { "surety_company": "...", "bond_number": "...", "amount_usd": 25000 },"source_url": "https://...","source_name": "California CSLB","retrieved_at": "2026-08-03T00:00:00Z","data_completeness": { "bond": true, "disciplinary_actions": false }}
Pricing
Free during beta. No charge per run or per record while pricing is being finalized.
Who this is for
- Lenders and insurers verifying a contractor before extending credit or writing a policy
- Marketplaces vetting contractors at signup instead of trusting a self-reported number
- Property managers and GCs checking a sub is still licensed before work starts
- Compliance teams who need provenance on every check, which is why
source_urlandretrieved_atare on every record rather than available on request
Also available as a REST API
The same backend is on RapidAPI as Contractor License Verification if you would rather call it directly. Full schema and per-state coverage notes at swanum.com/states.
Data sources
California CSLB · Connecticut eLicense · Florida DBPR · Illinois IDFPR · NYC DCWP and DOB · Oregon CCB · Texas TDLR · Washington L&I — all public records, refreshed at most 24 hours old (California weekly; Connecticut carries a per-record refresh stamp instead).
FAQ
How do I check if a contractor is licensed? Give this actor the licence number if you have it, or the business name if you don't. Both return the same normalized record, so nothing downstream needs to know which one you used.
Can I look up a contractor license by company name instead of a number?
Yes — the names input does a partial, case-insensitive search and can return multiple
matching licences per name.
Does this include contractor complaints or disciplinary actions? Illinois only. Its feed carries the case number, action type, date and IDFPR's own wording, and this actor returns them; when IDFPR has nothing on a licence you get an empty list rather than a null, so you can tell "clean" from "unknown".
For the other seven the field is null, which means this source does not report it — not
that the contractor is clean. That distinction matters more than it sounds: Oregon CCB,
Washington L&I and Connecticut eLicense all publish complaint and disciplinary history on the
record's own page, it just isn't in the extract they publish for bulk use. Follow
source_url if you need it for those three.
Is there a free way to try contractor license verification? Yes — this actor is free during beta. See Pricing above.
Which states does this cover? CA, CT, FL, IL (roofing contractors only), NYC, OR, TX, and WA. New York is New York City only; New York State itself issues no statewide contractor licence.