{
  "openapi": "3.0.1",
  "info": {
    "title": "CSLB Contractor License Scraper",
    "description": "Look up California contractor licenses on the CSLB (Contractors State License Board) public license check tool. Search by license number, business name, personnel name, or HIS registration number. Get license status, classifications, bond and workers' compensation info, and expiration dates.",
    "version": "1.0",
    "x-build-id": "gSKPEhU4DoxHHd9Dk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~cslb-contractor-license-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-cslb-contractor-license-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/crawlerbros~cslb-contractor-license-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-cslb-contractor-license-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/crawlerbros~cslb-contractor-license-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-cslb-contractor-license-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "byLicenseNumber",
              "byBusinessName",
              "byPersonnelName",
              "byHISNumber"
            ],
            "type": "string",
            "description": "Which CSLB search to run.",
            "default": "byLicenseNumber"
          },
          "licenseNumbers": {
            "title": "License numbers (mode=byLicenseNumber)",
            "type": "array",
            "description": "CSLB contractor license numbers to look up (1-8 digits each; letters/punctuation are stripped automatically).",
            "default": [
              "1100000"
            ],
            "items": {
              "type": "string"
            }
          },
          "businessName": {
            "title": "Business name (mode=byBusinessName)",
            "type": "string",
            "description": "Business name to search for. CSLB matches from this name alphabetically forward (type fewer letters if you don't find the license, e.g. `Swinerton` instead of `Swinerton Builders Inc`)."
          },
          "personnelLastName": {
            "title": "Personnel last name (mode=byPersonnelName)",
            "type": "string",
            "description": "Last name of a qualifying individual, owner, or officer associated with a license."
          },
          "personnelFirstName": {
            "title": "Personnel first name (mode=byPersonnelName)",
            "type": "string",
            "description": "Optional first name to narrow a personnel name search."
          },
          "hisNumber": {
            "title": "HIS registration number (mode=byHISNumber)",
            "type": "string",
            "description": "Home Improvement Salesperson (HIS) registration number (1-8 digits; the site's \"SP\" suffix is added automatically)."
          },
          "statusFilter": {
            "title": "License / registration status filter",
            "enum": [
              "any",
              "active",
              "expired",
              "inactive",
              "revoked",
              "suspended",
              "cancelled",
              "other"
            ],
            "type": "string",
            "description": "Only emit records whose current status matches. Records with no detectable status always pass through.",
            "default": "any"
          },
          "classificationFilter": {
            "title": "Classification (trade) filter",
            "enum": [
              "any",
              "A",
              "B",
              "C",
              "B-2",
              "C-2",
              "C-4",
              "C-5",
              "C-6",
              "C-7",
              "C-8",
              "C-9",
              "C-10",
              "C-11",
              "C-12",
              "C-13",
              "C-15",
              "C-16",
              "C-17",
              "C-20",
              "C-21",
              "C-22",
              "C-23",
              "C-27",
              "C-28",
              "C-29",
              "C-31",
              "C-32",
              "C-33",
              "C-34",
              "C-35",
              "C-36",
              "C-38",
              "C-39",
              "C-42",
              "C-43",
              "C-45",
              "C-46",
              "C-47",
              "C-49",
              "C-50",
              "C-51",
              "C-53",
              "C-54",
              "C-55",
              "C-57",
              "C-60"
            ],
            "type": "string",
            "description": "Only emit license records that carry this CSLB classification. Records with no classification data always pass through. Ignored in mode=byHISNumber.",
            "default": "any"
          },
          "includePersonnel": {
            "title": "Include personnel (owners/officers)",
            "type": "boolean",
            "description": "Attach the owners/officers/RMO/RME associated with each license (name, title, association date, classification). Adds a few extra requests per license.",
            "default": true
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Hard cap on emitted records.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. CSLB's search form has no CAPTCHA and works reliably without a proxy; this is offered for extra resilience only.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}