# California Contractor License Lookup & Verify (CSLB) (`helenium/california-contractor-license-lookup`) Actor

Verify a California contractor licence by number or business name. Status, classifications, expiration, surety bond and workers' comp as CSLB publishes them, as normalized JSON.

- **URL**: https://apify.com/helenium/california-contractor-license-lookup.md
- **Developed by:** [Bio Verse](https://apify.com/helenium) (community)
- **Categories:** Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## California Contractor License Lookup & Verify (CSLB)

Verify a California contractor licence by number or business name. Status, classifications, expiration, surety bond and workers' comp as CSLB publishes them, as normalized JSON.

Look up by licence number, or search by business name. Every record comes back in the
same normalized shape, so California results parse identically to any other state's.

### Before you run it

A lookup by licence number reads the CSLB detail page and carries the qualifier — the named individual on the licence — where CSLB names one. A name search reads CSLB's weekly bulk extract, which does not publish the qualifier, so that one field is absent from search results.

### What CSLB publishes

- Licence status, plus CSLB's own raw wording
- Classifications (A, B, C-10 and the rest of the C series)
- Issue and expiration dates
- Surety bond: surety, bond number, amount
- Workers' compensation carrier and policy
- Business address

### What it does not

– Disciplinary actions
– General liability insurance

A field the source does not publish comes back `null`, and every record carries a
`data_completeness` map saying which fields CSLB supplies at all — so a
`null` you can act on is never confused with one you cannot.

### Input

```json
{
  "licenseNumbers": ["1000004"],
  "names": ["SOUTH COAST CONSTRUCTION"],
  "limit": 25
}
```

Give licence numbers, names, or both. A name search pages until the register says
there are no more matches.

### Output

One dataset row per licence, carrying the query that found it:

```json
{
  "query": "1000004",
  "query_type": "license_number",
  "state": "CA",
  "license_number": "1000004",
  "status": "ACTIVE",
  "status_raw": "Active",
  "business_name": "SOUTH COAST CONSTRUCTION",
  "classifications": [{ "code": "B", "description": "GENERAL BUILDING" }],
  "expiration_date": "2027-02-28",
  "source_url": "https://…",
  "data_as_of": "2026-08-04T00:00:00Z"
}
```

`data_as_of` is the age of the underlying register extract — not when this run
happened. Use it before concluding the API disagrees with the board.

### Billing

Pay per licence record delivered. A query that matches nothing costs nothing.

### Other states

This actor covers California. The same data for the other states, and one API
call that spans all of them, is at
[swanum.com](https://swanum.com) — also on
[RapidAPI](https://rapidapi.com/kriptkor/api/contractor-license-verification2).

### Data source

Contractors State License Board (CSLB), the official California register. This actor
adds no data of its own: it normalizes what the board publishes and says plainly
where the board is silent.

# Actor input Schema

## `state` (type: `string`):

California — Contractors State License Board (CSLB). This actor covers California only.

## `licenseNumbers` (type: `array`):

Exact licence numbers to look up. Dashes and spaces are ignored.

## `names` (type: `array`):

Business or qualifier names to search. Partial, case-insensitive match.

## `limit` (type: `integer`):

How many licences to return for each name search. Results are paged from the API 100 at a time, so a larger number means more requests and a longer run.

## `includeNotFound` (type: `boolean`):

Add a row for each query that matched nothing. You are never charged for these.

## Actor input object example

```json
{
  "state": "CA",
  "licenseNumbers": [
    "1000004"
  ],
  "names": [],
  "limit": 25,
  "includeNotFound": false
}
```

# 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 = {
    "licenseNumbers": [
        "1000004"
    ],
    "names": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("helenium/california-contractor-license-lookup").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 = {
    "licenseNumbers": ["1000004"],
    "names": [],
}

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

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

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

```

## CLI example

```bash
echo '{
  "licenseNumbers": [
    "1000004"
  ],
  "names": []
}' |
apify call helenium/california-contractor-license-lookup --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=helenium/california-contractor-license-lookup",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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