Scrapebench API
List every California-licensed contractor in one trade classification and county (e.g. C-10 electrical in Los Angeles), with licence status, address, phone, bond and workers' comp. Read live from the CSLB public data portal.
Offering
- Provider
- api.scrapebench.dev
- Method
- POST
- Offering type
- Api Endpoint
- Transport type
- http
- Category
- Legal And Compliance
- Delivery
- Not provided
- Pricing model
- Not provided
- x402 version
- 2
Endpoint context
- URL
https://api.scrapebench.dev/v1/ca-contractor-directory- MIME type
- Not provided
- First seen
- 2026-10-16T01:50:19.913Z
- Last seen
- Tags
- contractors, licenses, california, public-records, leads
Payment pricing
x402 payment terms are the authoritative price for calling this endpoint.
- Payment option 1
- 0.04 USDC
Atomic price: 40000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Raw x402 terms
[
{
"scheme": "exact",
"network": "eip155:8453",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "40000",
"payTo": "0x1bd1e9431c00ba6ff992a3dda541282079d02abf"
}
]Observed health
- Status
- Reachable
- Latest latency
- 274 ms
- Average latency
- 556 ms
- HTTP status
- 405
- Last checked
- Reachability
- 100% over 15 checks
Latency is measured to the first response headers. A reachable result does not verify response accuracy or merchant identity.
Input schema
{
"additionalProperties": false,
"properties": {
"body": {
"properties": {
"county": {
"description": "California county name, e.g. 'Los Angeles' ('County' suffix and case are ignored).",
"maxLength": 40,
"minLength": 1,
"title": "County",
"type": "string"
},
"license_class": {
"description": "CSLB classification code, e.g. 'A', 'B', 'C-10' (electrical), 'C-36' (plumbing).",
"maxLength": 40,
"minLength": 1,
"title": "License Class",
"type": "string"
}
},
"required": [
"license_class",
"county"
],
"title": "Input",
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
}Output schema
{
"properties": {
"example": {
"properties": {
"next_page": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Page to request next, or null when this is the last.",
"title": "Next Page"
},
"page": {
"description": "Zero-based page number of this response.",
"title": "Page",
"type": "integer"
},
"page_size": {
"description": "Most rows a page can hold; one page is one price.",
"title": "Page Size",
"type": "integer"
},
"rows": {
"description": "Data rows, or free Notice rows explaining a gap.",
"items": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"address": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Street address of record.",
"title": "Address"
},
"bond_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Contractor bond number.",
"title": "Bond Number"
},
"business_name": {
"description": "Licensed business name.",
"title": "Business Name",
"type": "string"
},
"business_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Entity type, e.g. Corporation, Sole Owner.",
"title": "Business Type"
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "City of record.",
"title": "City"
},
"classifications": {
"description": "Every classification the licence holds.",
"items": {
"type": "string"
},
"title": "Classifications",
"type": "array"
},
"county": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "County of record.",
"title": "County"
},
"expiration_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Licence expiry date as CSLB writes it.",
"title": "Expiration Date"
},
"issue_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Licence issue date as CSLB writes it.",
"title": "Issue Date"
},
"license_number": {
"description": "CSLB licence number; source_url is its public detail page.",
"title": "License Number",
"type": "string"
},
"phone": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Business phone on file with CSLB.",
"title": "Phone"
},
"scraped_at": {
"description": "UTC timestamp of the read.",
"format": "date-time",
"title": "Scraped At",
"type": "string"
},
"source_url": {
"description": "The URL or endpoint this record was read from.",
"title": "Source Url",
"type": "string"
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "State code of record.",
"title": "State"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Licence status, e.g. CLEAR.",
"title": "Status"
},
"surety_company": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Contractor bond surety company.",
"title": "Surety Company"
},
"workers_comp_company": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Workers' comp insurer.",
"title": "Workers Comp Company"
},
"workers_comp_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Workers' comp coverage type, e.g. Exempt.",
"title": "Workers Comp Type"
},
"zip_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "ZIP code of record.",
"title": "Zip Code"
}
},
"required": [
"source_url",
"license_number",
"business_name"
],
"title": "Output",
"type": "object"
},
{
"additionalProperties": false,
"description": "A free row explaining why a page has no (or partial) data. Never charged.",
"properties": {
"notice": {
"description": "Human-readable reason, and what to send instead if the input was the problem.",
"title": "Notice",
"type": "string"
},
"notice_type": {
"default": "input_error",
"description": "Machine-readable reason: input_error, no_results, blocked, truncated, source_changed, not_ready or stale.",
"title": "Notice Type",
"type": "string"
},
"scraped_at": {
"description": "UTC timestamp of the read.",
"format": "date-time",
"title": "Scraped At",
"type": "string"
},
"source_url": {
"default": "",
"description": "Empty: a notice is about the request, not about a page.",
"title": "Source Url",
"type": "string"
}
},
"required": [
"notice"
],
"title": "Notice",
"type": "object"
}
]
},
"title": "Rows",
"type": "array"
},
"service": {
"description": "The service that answered.",
"title": "Service",
"type": "string"
}
},
"required": [
"service",
"page",
"page_size",
"next_page",
"rows"
],
"title": "CaContractorDirectoryPage",
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}