{
  "openapi": "3.0.1",
  "info": {
    "title": "US Contractor License Scraper & Lookup - 20 States",
    "description": "Every licensed roofer, electrician, plumber or HVAC contractor in a state, from 20 official state boards. Phone on 13 states, email on 4, measured per state in the README. Export a whole trade or verify a list of names or licence numbers. Status, expiry, address.",
    "version": "1.0",
    "x-build-id": "BW6KyAsdHd5tUaexc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/wellbuilt_zythem~us-contractor-license-lookup/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-wellbuilt_zythem-us-contractor-license-lookup",
        "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/wellbuilt_zythem~us-contractor-license-lookup/runs": {
      "post": {
        "operationId": "runs-sync-wellbuilt_zythem-us-contractor-license-lookup",
        "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/wellbuilt_zythem~us-contractor-license-lookup/run-sync": {
      "post": {
        "operationId": "run-sync-wellbuilt_zythem-us-contractor-license-lookup",
        "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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "lookup",
              "export",
              "detail",
              "newBusinesses"
            ],
            "type": "string",
            "description": "Lookup verifies a list of names or licence numbers. Export downloads a whole state and trade. Full detail reads the CSLB licence page for each California licence number you pass: bond, workers' compensation carrier and policy, classifications, entity type and today's status. It is the only mode that answers for a licence that is expired, inactive, cancelled or not in the register at all, because the bulk California file publishes active licences only. New contractors reads the state business registry (Oregon, Connecticut) for construction companies registered in the last N days and says whether each one already holds a licence: the lead before the licence exists.",
            "default": "lookup"
          },
          "queries": {
            "title": "Names or licence numbers to look up",
            "type": "array",
            "description": "One per line. A licence number matches exactly; a name matches any licensee or business containing it. Paste as many as you like.",
            "items": {
              "type": "string"
            }
          },
          "withDetail": {
            "title": "Add the full CSLB detail to each California row",
            "type": "boolean",
            "description": "For California rows, also read the licence page of each result: bond company, number, amount and effective date, workers' compensation carrier, policy number and expiry, all classifications, entity type and today's status. One request to the CSLB per licence, so it is capped by \"Max full details per run\". Enriched rows are charged as a full detail; the rest as a normal licence record. Never both for the same row.",
            "default": false
          },
          "maxDetails": {
            "title": "Max full details per run",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many licence pages to read in one run. Each one is a request to the CSLB, so the hard limit is 500 per run whatever you put here. For volume without the detail, use export mode.",
            "default": 100
          },
          "registeredWithinDays": {
            "title": "Registered within days (new contractors mode)",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "New contractors mode only: businesses registered in the state business registry within this many days. Connecticut updates daily (587 construction registrations in 30 days, all with an email, measured September 2026). Oregon publishes the previous month in one batch, so the window counts back from the newest registration published, not from today (179 in the August batch, 170 with the owner's name).",
            "default": 30
          },
          "onlyUnlicensed": {
            "title": "Only businesses without a licence yet (new contractors mode)",
            "type": "boolean",
            "description": "New contractors mode only: keep the companies the licensing board does not know yet. That is the lead for insurance, bonding, software and training sellers. Matching is by exact business name against the whole state register, so a company licensed under another name shows as unlicensed.",
            "default": false
          },
          "states": {
            "title": "States",
            "type": "array",
            "description": "Leave empty for every state covered. Currently 20: TX, WA, OR, NY, FL, LA, AL, CA, MN, NV, OH, TN, NC, MI, AZ, AR, OK, CT, DE and VA, each read from its official licensing board.",
            "items": {
              "type": "string",
              "enum": [
                "TX",
                "WA",
                "OR",
                "NY",
                "FL",
                "LA",
                "AL",
                "CA",
                "MN",
                "NV",
                "OH",
                "TN",
                "NC",
                "MI",
                "AZ",
                "AR",
                "OK",
                "CT",
                "DE",
                "VA"
              ],
              "enumTitles": [
                "Texas",
                "Washington",
                "Oregon",
                "New York",
                "Florida",
                "Louisiana",
                "Alabama",
                "California",
                "Minnesota",
                "Nevada",
                "Ohio",
                "Tennessee",
                "North Carolina",
                "Michigan",
                "Arizona",
                "Arkansas",
                "Oklahoma",
                "Connecticut",
                "Delaware",
                "Virginia"
              ]
            },
            "default": []
          },
          "trades": {
            "title": "Trades",
            "type": "array",
            "description": "Leave empty for every trade. A trade is skipped in states that do not license it.",
            "items": {
              "type": "string",
              "enum": [
                "construction-contractor",
                "electrical-contractor",
                "plumbing-contractor",
                "elevator-contractor",
                "electrical-sign-contractor",
                "appliance-installation",
                "water-well-driller",
                "mold-remediation-contractor",
                "mold-remediation-company",
                "mold-assessment-company",
                "specialty-contractor",
                "lead-paint-renovation-contractor",
                "home-inspector",
                "roofing-contractor",
                "hvac-contractor",
                "pool-spa-contractor",
                "alarm-system-contractor",
                "asbestos-contractor",
                "home-improvement-contractor",
                "hydronics-contractor",
                "refrigeration-contractor",
                "fire-sprinkler-contractor",
                "fuel-piping-contractor",
                "painting-contractor",
                "concrete-contractor",
                "landscaping-contractor",
                "excavation-contractor",
                "carpentry-contractor",
                "training-agency",
                "heavy-civil-contractor",
                "siding-gutters-contractor",
                "solar-contractor",
                "construction-transport-contractor",
                "construction-management",
                "engineering",
                "architecture",
                "landscape-architecture",
                "septic-system-contractor",
                "gas-fitting-contractor",
                "accessibility-contractor",
                "backflow-prevention-worker",
                "building-energy-analyst"
              ],
              "enumTitles": [
                "Construction contractor (WA, OR, FL, LA, AL, CA, MN, NV, TN, NC, MI, AZ, AR, CT, DE, VA)",
                "Electrical contractor (TX, WA, FL, LA, AL, CA, MN, NV, OH, TN, NC, MI, AZ, AR, CT, DE, VA)",
                "Plumbing contractor (WA, FL, LA, AL, CA, MN, NV, OH, TN, NC, MI, AZ, AR, CT, DE, VA)",
                "Elevator contractor (TX, WA, NY, FL, CA, MN, NV, NC, AZ, AR, CT, DE, VA)",
                "Electrical sign contractor (TX)",
                "Appliance installation contractor (TX)",
                "Water well driller (TX, AR, DE, VA)",
                "Mold remediation contractor (TX, NY, FL, LA)",
                "Mold remediation company (TX)",
                "Mold assessment company / assessor (TX, FL)",
                "Specialty contractor (OR, FL, CA, NV, NC, AZ, CT, VA)",
                "Lead-based paint renovation contractor (OR, AR, VA)",
                "Home inspector (OR, FL)",
                "Roofing contractor (FL, LA, AL, CA, MN, NV, TN, NC, MI, AZ, AR, OK, CT, DE, VA)",
                "Air conditioning and mechanical contractor (FL, LA, AL, CA, NV, OH, TN, NC, MI, AZ, AR, CT, DE, VA)",
                "Pool and spa contractor (FL, LA, CA, NC, AZ, AR, VA)",
                "Alarm system contractor (FL, TN, NC, AZ, AR, DE, VA)",
                "Asbestos contractor (FL, LA, AL, CA, NC, AR, DE, VA)",
                "Home improvement contractor (LA, TN, MI, AZ, AR, CT, VA)",
                "Hydronics contractor (OH)",
                "Refrigeration contractor (OH)",
                "Fire sprinkler contractor (NC, AR, VA)",
                "Fuel piping contractor (NC)",
                "Painting contractor (AZ, AR)",
                "Concrete contractor (AZ, AR)",
                "Landscaping and irrigation contractor (AZ, AR)",
                "Excavation and grading contractor (AZ, AR)",
                "Carpentry contractor (AZ, AR)",
                "Training agency (OH)",
                "Heavy civil, highway, railroad and municipal utility contractor (AR)",
                "Siding, soffit, fascia and gutters contractor (AR)",
                "Solar contractor (AR)",
                "Construction transport contractor (DE)",
                "Construction manager (DE)",
                "Professional engineer (DE)",
                "Architect (DE)",
                "Landscape architect (DE)",
                "On-site wastewater and septic system contractor (DE)",
                "Gas fitting contractor (natural gas and LP) (VA)",
                "Accessibility contractor (lifts and ramps) (VA)",
                "Backflow prevention device worker (VA)",
                "Residential building energy analyst (VA)"
              ]
            },
            "default": []
          },
          "onlyActive": {
            "title": "Only active licences",
            "type": "boolean",
            "description": "Drop expired, suspended and out-of-business licences.",
            "default": false
          },
          "onlyWithPhone": {
            "title": "Only rows with a phone number",
            "type": "boolean",
            "description": "For calling lists.",
            "default": false
          },
          "onlyExpiringSoon": {
            "title": "Only licences expiring within 60 days",
            "type": "boolean",
            "description": "The renewal window. Who sells bonds, insurance or continuing education wants exactly these.",
            "default": false
          },
          "expiringWithinDays": {
            "title": "Expiring within N days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Keep only licences that expire in the next N days (1 to 365). The renewal list: whoever sells bonds, insurance or continuing education calls these first. Leave empty for no window. Overrides the fixed 60-day \"expiring soon\" switch when set."
          },
          "issuedWithinDays": {
            "title": "Issued within N days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Keep only licences first issued in the last N days (1 to 365): newly licensed contractors, which is a new business needing suppliers, software, a truck and insurance. Uses the board's issue date; boards that do not publish one return nothing here rather than a guess."
          },
          "maxResults": {
            "title": "Maximum rows",
            "minimum": 0,
            "type": "integer",
            "description": "0 for no limit.",
            "default": 0
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}