Look up any California contractor license by number or by business name and get one normalized JSON record back, sourced from the Contractors State License Board (CSLB).
Try a free lookup — no signup, right here on this page. For programmatic access, take a free API key — 250 requests a month, no card. Also on RapidAPI and, if you would rather not write code at all, the Apify Store.
curl "https://contractor-license-verification2.p.rapidapi.com/v1/licenses/CA/1000004" \
-H "X-RapidAPI-Key: YOUR_KEY" \
-H "X-RapidAPI-Host: contractor-license-verification2.p.rapidapi.com"
1000004 is a real CA license (SOUTH COAST CONSTRUCTION & DEVELOPMENT), so you can run that call as written.
curl "https://contractor-license-verification2.p.rapidapi.com/v1/licenses/CA/search?name=ACME&limit=10" \
-H "X-RapidAPI-Key: YOUR_KEY" \
-H "X-RapidAPI-Host: contractor-license-verification2.p.rapidapi.com"
Partial, case-insensitive match. A search hit returns the same full record as a lookup by number, so there is no second call to make.
Every response carries a data_completeness map saying which fields this
source actually supplies, so an absent bond reads as “not published” rather than
“no bond”. Records are never padded with guesses.
A lookup by license number reads the CSLB detail page and carries the qualifier — the named individual on the license. A name search reads CSLB's weekly bulk extract, which does not publish the qualifier, so that one field is absent from search results. CSLB has no official API or bulk feed: this reads the same public search page a browser would, which means it breaks whenever CSLB changes that page's layout. Reliable in practice, but not on the same footing as a state with a published extract.
Enter the California license number — or the business name if you don't have it — in the free lookup above or the API. Swanum reads the Contractors State License Board record and returns license status, classifications and expiration date as one JSON object.
Give this API the license 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.
Yes — the search endpoint does a partial, case-insensitive match and can return multiple matching licenses per name.
Colorado, Illinois and California. Their feeds carry the case number, action and date — Illinois adds IDFPR's own reason — and when the state has nothing on a license you get an empty list rather than a null, so you can tell 'clean' from 'unknown'. For the other six the field is null, meaning this source does not report it — not that the contractor is clean. Oregon CCB, Washington L&I and Connecticut eLicense all publish disciplinary history on the record's own page; it just isn't in the extract they publish for bulk use, so follow source_url for those three.
Yes — the free lookup page needs no signup at all, and a free API key gives you 100 requests a month with no card. The API also has a free tier on RapidAPI.
CA, CO (electrical and plumbing trades only), CT, FL, IL (roofing contractors only), NYC, OR (general contractors from the CCB, plus electricians, plumbers and the boiler and elevator trades from the Building Codes Division), TX, and WA. New York is New York City only; New York State itself issues no statewide contractor license.
The API is on RapidAPI with a free tier: Contractor License Verification. It is also on the Apify Store, if you would rather not write code at all: Contractor License Lookup & Verification. Full schema at /docs.