Contractor License Lookup & Verification — 8 US States avatar

Contractor License Lookup & Verification — 8 US States

Pricing

Pay per usage

Go to Apify Store
Contractor License Lookup & Verification — 8 US States

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

Bio Verse

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

24 days ago

Last modified

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

FieldMeaning
statusNormalized: ACTIVE, EXPIRED, SUSPENDED, REVOKED, INACTIVE, UNKNOWN
status_rawThe board's exact wording, never modified
business_name, qualifier_nameThe company and the individual who holds the licence
classificationsTrade codes — CA's B / C-10, WA's CC, NYC's GENERAL CONTRACTOR
issue_date, expiration_dateWhere the board publishes them
bondSurety, bond number, amount (CA, OR, WA)
liability_insuranceCarrier, policy number, limit (OR, WA)
workers_compCarrier and policy (CA); exemption status only (OR)
disciplinary_actionsCase number, type, date, reason (IL)
addressBusiness address as filed
source_url, source_name, retrieved_atProvenance on every single record
data_completenessWhich 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

StateBoardSourceRead this before you build on it
CACSLBbest-effortFull 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.
CTeLicenseofficialFull 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.
FLDBPRbest-effortFull 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.
ILIDFPRofficialRoofing contractors only — the one construction trade Illinois publishes. The only state here whose feed carries disciplinary actions.
NYNYC DCWP + DOBofficialNew York City only. New York State issues no statewide contractor licence. Covers home improvement contractors, general contractors, master plumbers and electrical contractors.
ORCCBofficialFull coverage, including bond and liability insurance.
TXTDLRofficialNo 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.
WAL&IofficialFull 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_url and retrieved_at are 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.