Scrapebench API
Verify a California contractor licence by CSLB licence number or business name, returning licence status (normalised and as CSLB words it), classifications, issue and expiry dates, bond and workers' comp. Read live from the CSLB 'Check A License' registry; an unknown licence number is answered free.
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-lookup- MIME type
- Not provided
- First seen
- 2026-10-16T04:15:40.848Z
- Last seen
- Tags
- contractors, license-verification, california, cslb, compliance
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
- 304 ms
- Average latency
- 798 ms
- HTTP status
- 405
- Last checked
- Reachability
- 93.3% 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": {
"city": {
"anyOf": [
{
"maxLength": 60,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional: keep only name matches whose city of record is this (case ignored).",
"title": "City"
},
"license_number": {
"anyOf": [
{
"pattern": "^\\d{1,8}$",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CSLB licence number, digits only, e.g. '22726'. Send this or name.",
"title": "License Number"
},
"name": {
"anyOf": [
{
"maxLength": 100,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Business name or its start, e.g. 'RANSOME' (case ignored). Matches names beginning with it. Send this or license_number.",
"title": "Name"
},
"purpose": {
"anyOf": [
{
"maxLength": 200,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional: what you need this data for, in one sentence (e.g. 'vetting a roofer before hiring'). It never changes the price or the rows; it tells us what to improve.",
"title": "Purpose"
}
},
"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": "Business street address of record.",
"title": "Address"
},
"bond_amount": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Contractor's bond amount in USD, e.g. '25,000'.",
"title": "Bond Amount"
},
"bond_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Contractor's bond number.",
"title": "Bond Number"
},
"business_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Licensed business name.",
"title": "Business Name"
},
"business_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Entity type, e.g. Corporation, Sole Ownership.",
"title": "Business Type"
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "City of record.",
"title": "City"
},
"classifications": {
"description": "Classification codes held, e.g. ['A', 'C10'].",
"items": {
"type": "string"
},
"title": "Classifications",
"type": "array"
},
"expiration_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Licence expiry date, MM/DD/YYYY as CSLB writes it.",
"title": "Expiration Date"
},
"has_detail": {
"description": "True when the full licence detail page was read (dates, bond, workers' comp).",
"title": "Has Detail",
"type": "boolean"
},
"issue_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Licence issue date, MM/DD/YYYY 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"
},
"matched_by": {
"description": "How the row was found: license_number or business_name.",
"title": "Matched By",
"type": "string"
},
"name_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Name kind from a name search, e.g. DBA; null for a number lookup.",
"title": "Name Type"
},
"phone": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Business phone on the licence record.",
"title": "Phone"
},
"scraped_at": {
"description": "UTC timestamp of scrape.",
"format": "date-time",
"title": "Scraped At",
"type": "string"
},
"source_url": {
"description": "The URL or endpoint this record was scraped from.",
"title": "Source Url",
"type": "string"
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "State code of record.",
"title": "State"
},
"status": {
"description": "Normalised licence status: active, expired, suspended, revoked, cancelled, inactive or other (read status_text).",
"enum": [
"active",
"expired",
"suspended",
"revoked",
"cancelled",
"inactive",
"other"
],
"title": "Status",
"type": "string"
},
"status_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Licence status exactly as CSLB writes it.",
"title": "Status Text"
},
"surety_company": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Contractor's bond surety company.",
"title": "Surety Company"
},
"workers_comp_company": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Workers' comp insurer, when insured.",
"title": "Workers Comp Company"
},
"workers_comp_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Workers' comp coverage: Insurance or 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",
"matched_by",
"status",
"has_detail"
],
"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 scrape.",
"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": "CaContractorLookupPage",
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}