CSLB
California Construction Trades Directory & Leads (CSLB)
Sweep every construction trade across every California county you pick, in one run. Deduplicated licensed-contractor leads from the official CSLB register — name, address, phone, licence, bond and workers' comp.
Verification
Output fields
Authoritative field set from the dataset schema.
| Field | Type |
|---|---|
license_number | string|null |
business_name | string|null |
business_type | string|null |
address | string|null |
city | string|null |
state | string|null |
zip_code | string|null |
county | string|null |
phone | string|null |
issue_date | string|null |
expiration_date | string|null |
classifications | array|null |
status | string|null |
surety_company | string|null |
bond_number | string|null |
workers_comp_type | string|null |
workers_comp_company | string|null |
source_url | string|null |
scraped_at | string|null |
matched_trade | string|null |
notice | string|null |
notice_type | string|null |
county_option | string|null |
Sample row
{
"license_number": "975545",
"business_name": "TAYLOR ENERGY SYSTEMS INC",
"matched_trade": "C-46",
"business_type": "Corporation",
"address": "7171 EVAN AVENUE",
"city": "SEBASTOPOL",
"county": "Sonoma",
"zip_code": "95472",
"phone": "(707) 494 6053",
"classifications": [
"C10",
"C46"
],
"status": "CLEAR",
"issue_date": "08/03/2012",
"expiration_date": "08/31/2028",
"surety_company": "AMERICAN CONTRACTORS INDEMNITY COMPANY",
"bond_number": "100201394",
"workers_comp_type": "Workers' Compensation Insurance",
"workers_comp_company": "STATE COMPENSATION INSURANCE FUND",
"source_url": "https://www.cslb.ca.gov/onlineservices/checklicenseII/LicenseDetail.aspx?LicNum=975545"
} Inputs
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
licenseClasses | array | no | ["B","C-5","C-8","C-9","C-10","C-15","C-20","C-27","C-33","C-35","C-36","C-39","C-43"] | The CSLB trades to sweep. Defaults to the 13 building trades most lead lists want — general building plus framing, concrete, drywall, electrical, flooring, HVAC, landscaping, painting, plastering, plumbing, roofing and sheet metal. Add or remove any code you like: A, B, B-2, C-2 … C-60, and the C-61/D-xx limited specialties (e.g. 'C-46' solar, 'C-53' swimming pool, 'C-61/D-49' tree service). Each trade is one request; a contractor holding two of your trades is returned — and billed — once. |
licenseClass | string | no | — | One CSLB classification code, added to whatever is in 'Construction trades'. Here so a saved task built around a single trade keeps working; most runs should use the list above. |
counties | array | no | ["Sonoma","Napa","Solano","Contra Costa"] | California counties to sweep, e.g. Sonoma and Napa and Solano. ALL of them are fetched in a single request per trade, so adding counties costs no extra requests. Case, spacing and a trailing 'County' do not matter. Turn on Discovery Mode to list every valid name. |
county | string | no | — | One California county, added to whatever is in 'Counties'. Here so a saved task built around a single county keeps working. |
maxResults | integer | no | — | Cap on records returned PER TRADE (each trade is one download covering all your counties), not per run — so adding trades can never silently truncate the ones later in the list. Leave empty to return everything. A wide trade list across large counties can return tens of thousands of rows; set this if you want a bounded bill. |
listCountiesOnly | boolean | no | false | If true, skip the sweep and return every valid California county name from the live CSLB form. Free — not charged. Use it to check spellings before a real run. |
proxyConfiguration | object | no | {"useApifyProxy":false} | Optional, and off by default. CSLB answers Apify's platform IPs directly — measured 2026-08-19 — so a proxy is not needed and only adds latency. Enable one only if a run returns no data and the log shows CSLB refusing the request. |
Pricing
Pay per result (dataset-item) — no charge for empty runs.
Example: 12894 contractors from the default sweep of 13 building trades across Sonoma, Napa, Solano and Contra Costa (measured 2026-08-23) at $0.002/result ≈ $25.79.
FAQ
What does one run return?
Every active licensed contractor holding any of your chosen trades in any of your chosen California counties, deduplicated by licence number, with business, contact, classifications, bond and workers' comp details.
How is this different from the California Contractor Directory actor?
That actor is built around one trade and one county at a time and is unchanged. This one is built for the sweep: give it a list of trades and a list of counties and it returns the whole region in a single run, deduplicated across trades.
Which trades can I ask for?
Any CSLB classification — A, B, B-2, the C-2 to C-60 specialty trades, and the C-61/D-xx limited specialties such as C-61/D-49 tree service. The default is the thirteen building trades most lead lists want; edit the list to suit.
Am I charged twice for a contractor who holds two of my trades?
No. Results are deduplicated by licence number before charging, so each contractor is one row and one charge no matter how many of your trades they hold.
What happens if I mistype a county?
Nothing fails. Case, spacing and a trailing 'County' are all handled, and anything still unrecognised is logged and skipped. If none of your counties resolve, the run returns the free county list so you can see the exact spellings.
Does it need a proxy?
No. CSLB answers Apify's platform IPs directly, so the proxy is off by default. The option is there if you ever need it, but enabling it only adds latency.
Guides & use cases
Related actors