{
  "openapi": "3.0.1",
  "info": {
    "title": "California Contractor License Scraper — Bond & WC Data",
    "description": "All 243,555 licensed California contractors from the official CSLB registry: business name, phone, address, trade classifications and license status, plus contractor bond (surety, amount, dates), workers' comp carrier and expiry, and disciplinary bonds. Filter by county, trade or renewal window.",
    "version": "0.1",
    "x-build-id": "p4kf40gmOsv7nuTjc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~cslb-contractor-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-cslb-contractor-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/scrapersdelight~cslb-contractor-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-cslb-contractor-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/scrapersdelight~cslb-contractor-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-cslb-contractor-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "counties": {
            "title": "Counties",
            "type": "array",
            "description": "Limit to these California counties (e.g. Los Angeles, San Diego, Orange). Leave empty for the whole state.",
            "items": {
              "type": "string"
            }
          },
          "classifications": {
            "title": "License classifications",
            "type": "array",
            "description": "CSLB classification codes: B general building, C10 electrical, C36 plumbing, C33 painting, C20 HVAC, C39 roofing, C8 concrete, A engineering. Empty = all 98. The hyphen is optional — C8 and C-8 both match, as do D3 and D03.",
            "items": {
              "type": "string"
            }
          },
          "statuses": {
            "title": "License statuses",
            "type": "array",
            "description": "Filter on the exact status string, e.g. CLEAR, Contr Bond Susp, Work Comp Susp, Liab Ins Susp. Empty = all.",
            "items": {
              "type": "string"
            }
          },
          "onlyActive": {
            "title": "Active licenses only",
            "type": "boolean",
            "description": "Keep only contractors whose license is CLEAR (currently active and able to work).",
            "default": false
          },
          "bondSuspendedOnly": {
            "title": "Bond-suspended only (surety leads)",
            "type": "boolean",
            "description": "Only contractors suspended for a missing contractor bond — they cannot legally work until they buy one. ~6,200 statewide.",
            "default": false
          },
          "missingWorkersCompOnly": {
            "title": "No workers-comp carrier on file",
            "type": "boolean",
            "description": "Only contractors with no workers' comp carrier recorded. ~115,000 active statewide.",
            "default": false
          },
          "wcExpiringWithinDays": {
            "title": "Workers-comp expiring within N days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only contractors whose workers' comp policy expires within this many days — a dated renewal trigger. ~28,000 statewide at 90 days."
          },
          "licenseExpiringWithinDays": {
            "title": "License expiring within N days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only contractors whose license expires within this many days. ~25,500 statewide at 90 days."
          },
          "forceRefresh": {
            "title": "Force a fresh download from CSLB",
            "type": "boolean",
            "description": "CSLB's 77 MB bulk file is cached between runs (it is refreshed automatically once the cached copy passes 24 hours old), which is what keeps a normal run under a minute instead of 8. Tick this to bypass the cache and pull a brand-new copy straight from CSLB. That download takes 6-8 minutes, so the run timeout must be at least 15 minutes — otherwise the run logs a warning and serves the cached snapshot. Every run reports its snapshot date in the log, in the run status, and on the dataSnapshotDate / dataSnapshotAgeHours fields of every row.",
            "default": false
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Cap the number of licenses returned. The full file holds 243,555.",
            "default": 5000
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "CSLB needs no proxy; datacenter works. Configurable for rate-spreading.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}