Contractor License Aggregator - CSLB California avatar

Contractor License Aggregator - CSLB California

Pricing

from $21.00 / 1,000 license records

Go to Apify Store
Contractor License Aggregator - CSLB California

Contractor License Aggregator - CSLB California

Scrape California CSLB contractor licenses by ZIP code and trade (plumbing, electrical, HVAC and 75 more): business, phone, status, bonding, workers comp and officers. Export CSV, Excel, JSON. No login or API key. A 3-ZIP test returned 10 licenses in 65 seconds.

Pricing

from $21.00 / 1,000 license records

Rating

0.0

(0)

Developer

RecordsData

RecordsData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Share

RecordsData

Contractor License Aggregator - CSLB California

Contractor License Aggregator is a CSLB contractor license scraper for California. Look up contractors by license number, business name, owner or officer name, or by ZIP code and trade. Each license returns business name, address, phone, entity type, dates, status and a normalized status type, plus optional classifications, bond, workers' comp, liability insurance, citations with violations, salespersons and personnel. A status filter keeps only active, expired or revoked licenses. Export CSV, Excel, JSON or API. No login. Base price $25 per 1,000 licenses.

Contractor License Aggregator by RecordsData reads the public California Contractors State License Board (CSLB) "Check a License" pages. Use it for lead generation, subcontractor vetting and compliance checks. You can search four ways in one run: license numbers, business names, personnel names, or ZIP codes with one of the 78 CSLB trade classifications. Free users get 10 licenses per run.

๐Ÿ”Ž What does Contractor License Aggregator do?

It runs the CSLB searches you choose, opens each license detail page, and saves clean rows. Any mix of the four search types works in one run, and a license found twice is delivered once.

  • Search a business name such as "Sitka" (DBA and previous names included) or an owner or officer name.
  • Find licensed plumbers, electricians or HVAC contractors in a California ZIP code.
  • Keep only revoked, suspended or expired licenses with the status filter, and pull public citations with each violated section.

๐Ÿ“Š What data can you extract from CSLB?

The dataset has nine row types, 61 keys in total. Every row has licenseNumber. Fields CSLB does not publish for a license are left out.

License row (always)

FieldDescription
licenseNumber, businessNameCSLB license number and licensed business name
address, city, state, zipCode, phoneAddress string and split parts; phone omitted when CSLB shows none
entity, issueDate, reissueDate, expireDateCorporation, Sole Ownership, Partnership or LLC; dates as MM/DD/YYYY
status, statusTypeCSLB's own status text, and a normalized type: active, expired, inactive, cancelled, suspended, revoked or other
classificationCodesTrade codes held by the license
additionalStatus, miscInfo, hasComplaintDisclosureExtra status lines, dated actions, public disclosure flag
detailUrl, scrapedAtSource page and time of the read
searchType, searchQuery, matchedName, matchedNameType, matchedPersonHow the row was found and what matched, including DBA and previous names

Optional rows (each keyed by licenseNumber)

Row typeMain fieldsToggle
Classificationcode, descriptionincludeClassifications
BondingbondCompany, bondNumber, bondAmount, dates, qualifyingIndividualincludeBonding
Workers' compworkersComp, workersCompExempt, company, policy, datesincludeWorkersComp
LiabilityliabilityInsurance, company, policy, liabilityAmount, datesincludeLiability
CitationcitationNumber, citationDate, violations, violationCountincludeDisclosures
Salesperson, Personnelname, registrationNumber, titleincludeSalespersons, includePersonnel

๐Ÿงพ Contractor license sample output

One license row. The business, license number, address, phone, dates and status come from a real CSLB read of license 1080058; city, statusType and scrapedAt are illustrative and show the shape, not a captured value.

{
"licenseNumber": "1080058",
"businessName": "SITKA DEVELOPMENT",
"address": "9663 SANTA MONICA BLVD, STE 815, BEVERLY HILLS, CA 90210",
"city": "BEVERLY HILLS",
"state": "CA",
"zipCode": "90210",
"phone": "(818) 532-8400",
"entity": "Sole Ownership",
"expireDate": "08/31/2027",
"status": "This license is current and active.All information below should be reviewed.",
"statusType": "active",
"scrapedAt": "2026-10-09T12:00:00.000Z"
}

With extras on, the same license also produces separate rows, for example { "licenseNumber": "1080058", "code": "C36", "description": "PLUMBING" }. The status value is CSLB's own text; use statusType to filter or group.

๐Ÿ’ฐ Contractor license scraper pricing: how much does it cost?

The actor uses Pay Per Event. Live prices on the Free plan tier (higher Apify plans pay less per license, down to $0.021 on Gold), read on 2026-10-10:

EventPriceWhen it is charged
License record$0.025One per license saved
Classification, bonding, workers' comp, personnel, liability, citation, salesperson record$0.01 eachOne per extra row, only if enabled and only when CSLB shows real data

1,000 licenses cost about $25 with no extras. Worked examples on the Free tier: 100 licenses with bonding and workers' comp are 100 x $0.025 + 200 x $0.01 = $4.50. 1,000 licenses with bonding only are $25 + $10 = $35. A vetting run of 100 licenses with liability (80 on file) and 25 citations is $2.50 + $0.80 + $0.25 = $3.55.

You are not charged for failed or empty searches, error rows (such as a license number that does not exist), extras CSLB has no data for, or licenses removed by the status filter. Extra rows do not count toward Max Items. The run stops cleanly at your maximum charge limit. An earlier cloud test of 10 licenses with four extras returned 63 rows: 10 x $0.025 + 53 x $0.01 = $0.78.

๐Ÿš€ How to scrape CSLB contractor licenses in 3 steps

  1. Open the Input tab and add license numbers, business names, personnel names, or ZIP codes with a trade.
  2. Pick a status, set Max Items, and turn on only the extras you need.
  3. Click Run, then download the dataset as JSON, CSV or Excel.

โš™๏ธ Input

You need at least one of licenseNumbers, businessNames, personnelNames or zipCodes. If none is given, the run ends SUCCEEDED with one free invalid-input error row.

FieldTypeDescription
licenseNumbersarrayLicense numbers to look up directly, up to 8 digits, for example 1080058
businessNamesarrayPrefix search: every name starting with the text, DBA and previous names included
personnelNamesarrayOwners, officers and qualifying individuals, as Last, First or just Last
maxPeoplePerNameintegerPeople followed per personnel name. Default 5, up to 100
zipCodesarray5-digit California ZIP codes. Prefilled with 90210
classificationstringCSLB trade for the ZIP search only. Default C-36
statusselectany (default), active, expired, inactive, cancelled, suspended or revoked
maxItemsintegerMaximum licenses to return (Free plan: 10). Extra rows do not count
includeClassifications, includeBonding, includeWorkersComp, includeLiability, includeDisclosures, includeSalespersons, includePersonnelbooleanOne toggle per optional row type

The status filter is applied by the actor, because CSLB has none. Licenses that do not match are never charged.

{
"businessNames": ["Pacific Coast"],
"status": "revoked",
"maxItems": 50,
"includeDisclosures": true
}

๐Ÿ“ฆ Output

One row per license, followed by its optional rows. A search with no matching licenses finishes SUCCEEDED with the message "No licenses found" and zero charges. A license number that does not exist returns one free error row (errorType: not-found). A blocking CSLB site makes the run FAILED, also with zero charges.

โš–๏ธ CSLB contractor license scraper vs alternatives

Read on 2026-10-09 from the public Apify Store pages. "Not stated" means the page does not mention it.

CapabilityThis actorpink_comicautomation-labmuhammadafzal
Search modesLicense number, business, personnel, ZIP and tradeLicense number, business, personnelLicense number, business, personnelLicense number, business, personnel, ZIP
Status filterYes, 6 statusesNot statedNot statedYes
Bond, workers' comp, personnelYes, split into fieldsYesYesYes
DisclosuresCitations with each violationDisclosure fieldDisclosure linksDisciplinary actions
Price per 1,000$25 ($21 Gold)$2$17.48 Free, $9.12 Gold$20 header, $25 README

parseforge/cslb-california-scraper ($21 header, $25 README) says it does not support license number search. Only this actor's page states liability insurance, salespersons, numeric bond amounts, a normalized status type and the matched name. muhammadafzal publishes county, which we cannot source because CSLB shows none on the license page. We do not return history pages or an only-new mode. This actor costs more per license than all four, so the extra price buys depth, not volume. If you only need names and numbers, pink_comic is much cheaper.

๐Ÿงฐ Contractor license data use cases

  • Lead generation: call lists of active plumbers, electricians or roofers by ZIP code.
  • Subcontractor vetting: confirm status, bond, workers' comp, liability and citations before signing.
  • Compliance monitoring: schedule runs on license numbers to catch expiry dates and status changes.

๐Ÿ”Œ Run via API, schedule and integrations

curl -X POST "https://api.apify.com/v2/acts/RecordsData~contractor-license-aggregator/runs?token=YOUR_APIFY_TOKEN" \
-H "content-type: application/json" \
-d '{"licenseNumbers":["1080058"],"includeBonding":true}'

Use the Apify API, apify-client for Python and JavaScript, schedules, Zapier, Make, n8n or Google Sheets.

๐Ÿค– Contractor License Aggregator MCP server for AI agents

AI agents can call Contractor License Aggregator through the Apify MCP server at https://mcp.apify.com?tools=RecordsData/contractor-license-aggregator, which loads only this Actor as a tool. Add this to your MCP client configuration (Claude Desktop, Cursor, VS Code or any remote MCP client):

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=RecordsData/contractor-license-aggregator"
}
}
}

Example agent prompt:

Search business names starting with "Pacific Coast" with status revoked and citations on, then list each license with its violated sections.

Tool description: looks up California CSLB contractor licenses by license number, business name, personnel name, or ZIP code and trade, with a status filter and optional bond, workers' comp, liability, citation, salesperson and personnel rows. Choose it when an agent needs contractor license status, expiry, insurance or public citations. It takes the Input table fields above.

CSLB publishes license information publicly for consumer protection. This actor reads only those public pages at a slow request rate and does not log in or bypass access controls. You are responsible for using the data in line with CSLB terms and applicable laws such as California privacy rules, especially for sole proprietors.

โ“ Frequently asked questions

How do I find licensed contractors by ZIP code in California? Enter one or more 5-digit California ZIP codes and a trade classification such as C-36 plumbing, then click Run. The actor searches the public CSLB ZIP code search, opens the detail page for every license listed and saves one row per license with business name, address, phone, entity type, dates and status.

Can I look up a contractor by license number? Yes. Put one or more numbers in licenseNumbers, for example 1080058, and the actor goes straight to each license page with no search step. A number that does not exist returns one free error row with errorType: not-found. You can mix license numbers with names and ZIP codes in the same run.

How does the business and personnel name search work? CSLB's name search is a prefix search that returns an alphabetical window of 49 names. The actor keeps only names that start with your text and pages forward until nothing new appears. A short prefix or rare status can walk many pages, so set Max Items to bound the run. Business hits include DBA and previous names, shown in matchedName.

What disclosures are returned? With includeDisclosures on, the actor returns one row per public citation linked from the license page, with the code, section and description of every violated rule in violations. Citations are the only disclosure type observed on the licenses tested. Citation rows cost $0.01 each.

Why did I get 0 results from Contractor License Aggregator? Either CSLB lists no license matching your input, the status filter removed everything, or the ZIP code was invalid. The run then succeeds with a "No licenses found" status message and no charge. Try a nearby ZIP code, another classification or status: any.

How many licenses does one ZIP code return from CSLB? CSLB returns a bounded list for each ZIP code and trade classification. In tests the lists held 3 to 9 licenses per ZIP code (90210 returned 5, 90001 and 92101 returned 9, 94105 returned 3). To cover a city or county, pass many ZIP codes in one run, or use name searches, which are not capped per ZIP.

Do I need a CSLB account or API key to scrape contractor licenses? No. The actor reads the public California CSLB license search pages, so you need no CSLB account, API key or login. You only need an Apify account. It handles the residential proxy that CSLB's firewall requires.

Which trades does the CSLB contractor license scraper support? All 78 CSLB trade classifications in the input dropdown, including A, B, C-10 electrical, C-20 HVAC, C-36 plumbing, C-39 roofing and C-46 solar. The classification applies to the ZIP search only, with C-36 as the default. Other searches ignore it, and you can add one row per classification a license holds.

Am I charged for errors or empty extras on Contractor License Aggregator? No. Error rows, failed or empty searches and licenses removed by the status filter are not billed, and extra rows are charged only when CSLB shows real data. You pay $0.025 per license record on the Free tier, and $0.01 per optional extra row.

Can I limit my spend on Contractor License Aggregator? Yes. Set a maximum charge per run in the Apify run options, or set maxItems to cap the licenses returned. Extra rows do not count toward maxItems, so the charge limit is the hard cap when you turn on several extras. The actor stops cleanly when the charge limit is reached.

What happens if I send an empty or invalid input to Contractor License Aggregator? The platform rejects an unknown classification or status value with a 400 error at run creation, so no run starts. If you give no search at all, or no valid ZIP code or license number, the run ends SUCCEEDED with a single free error row (errorType: invalid-input) and nothing is charged. Invalid entries mixed with valid ones are skipped.

Does Contractor License Aggregator cover contractor licenses in other states? No. It covers California CSLB (Contractors State License Board) data only. It searches California licenses by number, name or ZIP code and does not read license boards in other states. For another state you would need a different actor built for that licensing board.

๐Ÿงญ Want more public records data? Other RecordsData scrapers

๐Ÿ’ฌ Support

Open an issue in the Issues tab or write to contact.punkrecordsdata@gmail.com.

Last updated: 2026-10-11