# California Contractor Leads - CSLB Contractor License List (`loomwise/california-contractor-licenses`) Actor

California contractor license list from the official CSLB master file: 120,000+ active licensed businesses (corporations, LLCs) with classification, issue date, business phone, address, workers' comp insurer and expiry, bond. Free to try, $1.50 per 1,000.

- **URL**: https://apify.com/loomwise/california-contractor-licenses.md
- **Developed by:** [Loomwise](https://apify.com/loomwise) (community)
- **Categories:** Lead generation, Business, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## California Contractor Leads: CSLB contractor license list

Download the **California contractor license list** straight from the **Contractors State License Board (CSLB)** master file: about **120,000 active licensed contractor businesses** (corporations and LLCs) with **license number, classification (B, C-10, C-36, C-39, C-46...), issue and expiration dates, business phone, business address, county, workers' compensation insurer and policy expiry, and contractor bond**.

About **1,000 new corporate and LLC contractor licenses** are issued in California every month. Filter to **newly licensed contractors** (`issuedWithinDays`), a trade, a county or a ZIP, or pull the full active list for a territory. Export to Excel, CSV or JSON, or schedule a weekly **new contractor license feed**.

**Free to try:** Apify's free plan ($5/month in credit, no card needed) covers about **3,300 records** a month.
**Price:** $1.50 per 1,000 results.

No browser, no proxies, no login. The Actor downloads CSLB's official public data portal file (updated daily) and filters it for you, so a run takes 1-3 minutes.

### What's in the California contractor license list?

- Business name, DBA and entity type
- License number, classifications and status
- Issue, reissue and expiration dates
- Address, city, county, ZIP and business phone
- Workers' comp insurer and expiry, bond surety and amount

**Source:** Contractors State License Board public data portal (cslb.ca.gov).\
**How fresh is it?** The CSLB republishes its full license master file every day; the run summary shows the 'as of' date.

#### Sample rows (real output, a few columns)

| `businessName` | `licenseNumber` | `entityType` | `classifications` | `issueDate` | `expirationDate` | `city` | `county` | `zipCode` |
|---|---|---|---|---|---|---|---|---|
| C & B PAINTING INC | 1163534 | Corporation | \['C33'] | 2026-10-25 | 2028-10-31 | Hughson | Stanislaus | 95326 |
| GOLDEN STATE ELECTRICS INC | 1163533 | Corporation | \['C10'] | 2026-10-25 | 2028-10-31 | Glendale | Los Angeles | 91206 |
| FLORES GDL CONSTRUCTION LLC | 1163532 | LLC | \['B'] | 2026-10-25 | 2028-10-31 | Plumas Lake | Yuba | 95961 |

[Download a free sample CSV](https://loomwise.app/data/california-contractor-leads/?utm_source=apify\&utm_medium=readme) to see the format in Excel.

### Who uses this

- **Insurance agents**: workers' comp, general liability and contractor bonds. Use `workersCompExpiringWithinDays` to find policies coming up for renewal.
- **Building-material suppliers, equipment dealers and rental yards** prospecting licensed contractors by trade and county.
- **Software, payments and lending companies** selling to contractors (estimating, field service, financing).
- **General contractors** building a subcontractor bench by classification.

### What you get

| Field | Example |
|---|---|
| `businessName` / `dbaName` | GOLDEN STATE ELECTRICS INC |
| `licenseNumber` | 1163533 |
| `entityType` | Corporation, LLC, Partnership, Joint venture |
| `classifications` / `classificationNames` | \["C10"] / \["Electrical"] |
| `primaryStatus` | CLEAR |
| `issueDate` / `expirationDate` | 2026-10-25 / 2028-10-31 |
| `businessAddress`, `city`, `county`, `zipCode` | street address, Glendale, Los Angeles, 91206 |
| `businessPhone` | business phone on the license |
| `workersCompType` / `workersCompInsurer` / `workersCompExpirationDate` | Policy, Exempt or Self-insured, insurer name, expiry date |
| `contractorBondSurety` / `contractorBondAmount` | AMERICAN CONTRACTORS INDEMNITY COMPANY / 25000 |
| `verifyUrl` | the license's official CSLB lookup page |

### Input

| Field | What it does | Default |
|---|---|---|
| `classifications` | CSLB classes, e.g. `B`, `C-10`, `C-20`, `C-36`, `C-39`, `C-46` | all |
| `counties` / `cities` / `zipCodes` | Territory filters | all of CA |
| `issuedWithinDays` | Only licenses issued in the last N days (0 = any) | 0 |
| `issuedFrom` / `issuedTo` | Exact issue-date window | none |
| `workersCompExpiringWithinDays` | Workers' comp policy expires in the next N days | off |
| `entityTypes` | `corporation`, `llc`, `partnership`, `joint venture` | all businesses |
| `keywords` | Business name contains | none |
| `clearStatusOnly` | Active (CLEAR) licenses only | true |
| `includeContactDetails` / `includeInsuranceAndBond` | Toggle those fields | true |
| `maxResults` | Cap (you pay per result) | 1000 |

Example: roofing and solar contractors licensed in the last 90 days in San Diego and Riverside counties:

```json
{ "classifications": ["C-39", "C-46"], "counties": ["San Diego", "Riverside"], "issuedWithinDays": 90 }
```

Example: Los Angeles County plumbers whose workers' comp renews in the next 60 days:

```json
{ "classifications": ["C-36"], "counties": ["Los Angeles"], "workersCompExpiringWithinDays": 60, "maxResults": 5000 }
```

### Privacy by design

- **Businesses only.** Sole-owner licenses (a person's name) are always left out. Partnerships and joint ventures are kept only when the name is a business name.
- **No personnel or officer names.** The CSLB personnel file is never read.
- **Apartment-style addresses are withheld** (city, county and ZIP stay).

### Notes

- Results are sorted newest license first. `dataAsOf` shows the CSLB update date.
- CSLB sometimes closes long downloads early. The Actor retries, and on rare runs the last few percent of the file (old 98xxxx-99xxxx license numbers issued around 2012-2015) can be missing. `RUN_SUMMARY.downloadComplete` tells you. New-license leads are never affected.

Data: CSLB public data portal (California public records). Not affiliated with or endorsed by CSLB. Always verify a license on the CSLB site before hiring or contracting.

### Common questions about the California contractor license list

**How do I get the California contractor license list without coding?** Press **Try for free**, adjust the filters (or keep the defaults), press **Start**, then open the **Storage** tab and export the results as Excel, CSV or JSON. A run usually takes 1 to 3 minutes.

**How much does it cost?** Free to try: Apify's free plan ($5/month credit, no credit card) covers about 3,300 records a month. After that it is $1.50 per 1,000 results (pay per result), plus a fraction of a cent per run. You only pay for rows you get.

**Can I get new records automatically every day or week?** Yes. Save your filters as a task and add a **Schedule** (daily or weekly). Connect Google Sheets, Slack, email, Zapier, Make or n8n under **Integrations** to receive each new batch.

**Can I call it from code or an AI agent?** Yes. Use the Apify API or the Python/JavaScript clients with the Actor ID shown above, or connect it to Claude, ChatGPT or Cursor through the Apify MCP server.

**Does it include personal data?** The output is business records (company names, business addresses and, where the source publishes them, business phone numbers) from an official public dataset. Records for individual people are left out where the source allows.

### More public-data lead tools from Loomwise

- [us-new-business-filings](https://apify.com/loomwise/us-new-business-filings): All states in one run: new business filings and new LLCs from 17 official sources in 13 states (FL, TX, OR, CO, NY, CT, DE, CA, IL, PA, WA, VA, LA), $1.50 per 1,000
- [us-contractor-licenses](https://apify.com/loomwise/us-contractor-licenses): All states in one run: contractor license search across 13 official sources in 9 states (CA, WA, OR, TX, NY incl. NYC DOB, MD, TN, OH, CO), $1.50 per 1,000
- [florida-new-business-filings](https://apify.com/loomwise/florida-new-business-filings): New Florida LLCs and corporations every business day from official Sunbiz data
- [fmcsa-new-trucking-companies](https://apify.com/loomwise/fmcsa-new-trucking-companies): New trucking companies from FMCSA: new USDOT/MC carriers with fleet size and phone
- [federal-opportunities](https://apify.com/loomwise/federal-opportunities): SAM.gov federal contract opportunities and Grants.gov grants (no API key)
- [city-building-permits](https://apify.com/loomwise/city-building-permits): Building permits from 30+ US city open-data portals (contractor, solar, roofing, ADU leads)
- [new-york-contractor-registry](https://apify.com/loomwise/new-york-contractor-registry): Newly registered New York State contractors with compliance flags
- [wa-contractor-licenses](https://apify.com/loomwise/wa-contractor-licenses): Washington State L\&I contractor licenses, new registrations daily
- [oregon-contractor-licenses](https://apify.com/loomwise/oregon-contractor-licenses): Oregon CCB contractor licenses with bond and insurance details
- [connecticut-business-licenses](https://apify.com/loomwise/connecticut-business-licenses): Connecticut business and contractor credentials (new licenses, renewals)
- [texas-contractor-licenses](https://apify.com/loomwise/texas-contractor-licenses): Texas TDLR A/C (HVAC) and electrical contractor licenses
- [texas-new-business-leads](https://apify.com/loomwise/texas-new-business-leads): New Texas businesses from Comptroller sales tax permits
- [colorado-new-business-filings](https://apify.com/loomwise/colorado-new-business-filings): New Colorado LLCs and corporations from the Secretary of State, daily
- [new-york-new-business-filings](https://apify.com/loomwise/new-york-new-business-filings): New New York LLCs and corporations from the Department of State, daily
- [connecticut-new-business-registrations](https://apify.com/loomwise/connecticut-new-business-registrations): New Connecticut businesses with NAICS industry codes, daily
- [oregon-electrical-plumbing-contractors](https://apify.com/loomwise/oregon-electrical-plumbing-contractors): Oregon electrical, plumbing, HVAC/R and solar contractor businesses (BCD)
- [california-new-business-leads](https://apify.com/loomwise/california-new-business-leads): New California businesses in Los Angeles and San Francisco with NAICS codes
- [illinois-chicago-new-business-licenses](https://apify.com/loomwise/illinois-chicago-new-business-licenses): New Chicago, Illinois business licenses, daily
- [pennsylvania-philadelphia-business-licenses](https://apify.com/loomwise/pennsylvania-philadelphia-business-licenses): New Philadelphia, Pennsylvania business licenses, daily

# Actor input Schema

## `classifications` (type: `array`):

CSLB classes, e.g. A (general engineering), B (general building), B-2, C-10 (electrical), C-20 (HVAC), C-36 (plumbing), C-39 (roofing), C-46 (solar), C-33 (painting), C-27 (landscaping). Leave empty for all.

## `counties` (type: `array`):

e.g. Los Angeles, San Diego, Orange, Riverside.

## `cities` (type: `array`):

Exact city names, e.g. Sacramento.

## `zipCodes` (type: `array`):

ZIP code prefixes.

## `issuedWithinDays` (type: `integer`):

Only licenses issued in the last N days (newly licensed contractors). 0 = any issue date (the full active list).

## `issuedFrom` (type: `string`):

Issued from (YYYY-MM-DD).

## `issuedTo` (type: `string`):

Issued to (YYYY-MM-DD).

## `workersCompExpiringWithinDays` (type: `integer`):

For insurance agents: only contractors whose workers' comp policy expires in the next N days. 0 = no filter.

## `entityTypes` (type: `array`):

corporation, llc, partnership, joint venture. Leave empty for all business entities.

## `keywords` (type: `array`):

Business name contains.

## `clearStatusOnly` (type: `boolean`):

Turn off to include suspended and expired-but-renewable licenses.

## `includeContactDetails` (type: `boolean`):

Include business address and phone.

## `includeInsuranceAndBond` (type: `boolean`):

Include workers' comp and bond details.

## `maxResults` (type: `integer`):

You pay per result, so this caps the cost.

## Actor input object example

```json
{
  "classifications": [
    "B",
    "C-10"
  ],
  "issuedWithinDays": 30,
  "workersCompExpiringWithinDays": 0,
  "clearStatusOnly": true,
  "includeContactDetails": true,
  "includeInsuranceAndBond": true,
  "maxResults": 1000
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "classifications": [
        "B",
        "C-10"
    ],
    "issuedWithinDays": 30,
    "maxResults": 1000
};

// Run the Actor and wait for it to finish
const run = await client.actor("loomwise/california-contractor-licenses").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "classifications": [
        "B",
        "C-10",
    ],
    "issuedWithinDays": 30,
    "maxResults": 1000,
}

# Run the Actor and wait for it to finish
run = client.actor("loomwise/california-contractor-licenses").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "classifications": [
    "B",
    "C-10"
  ],
  "issuedWithinDays": 30,
  "maxResults": 1000
}' |
apify call loomwise/california-contractor-licenses --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,loomwise/california-contractor-licenses"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/zpaKzKlFDglswVI7c/builds/Xb3YcapNMKamMUlRR/openapi.json
