← Health board

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.

insufficient data
Run it on Apify verified nightly

Verification

n/agolden-diff success
10002026canary runs
days since last update

Output fields

Authoritative field set from the dataset schema.

FieldType
license_numberstring|null
business_namestring|null
business_typestring|null
addressstring|null
citystring|null
statestring|null
zip_codestring|null
countystring|null
phonestring|null
issue_datestring|null
expiration_datestring|null
classificationsarray|null
statusstring|null
surety_companystring|null
bond_numberstring|null
workers_comp_typestring|null
workers_comp_companystring|null
source_urlstring|null
scraped_atstring|null
matched_tradestring|null
noticestring|null
notice_typestring|null
county_optionstring|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

FieldTypeReqDefaultDescription
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