{
  "openapi": "3.0.1",
  "info": {
    "title": "NC Licensing Board for General Contractors Scraper",
    "description": "North Carolina general contractor license scraper & API: search the NC Licensing Board and export license number, status, classification, company name, qualifier, address and limits. Contractor verification, compliance and B2B lead generation — fast, no login.",
    "version": "1.0",
    "x-build-id": "jVr23gXeFDc87mhPm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/haketa~nc-licensing-board-for-general-contractors-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-haketa-nc-licensing-board-for-general-contractors-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/haketa~nc-licensing-board-for-general-contractors-scraper/runs": {
      "post": {
        "operationId": "runs-sync-haketa-nc-licensing-board-for-general-contractors-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/haketa~nc-licensing-board-for-general-contractors-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-haketa-nc-licensing-board-for-general-contractors-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": {
          "cityPreset": {
            "title": "Cities (pick from list)",
            "type": "array",
            "description": "Choose one or more North Carolina cities to pull every licensed general contractor in that location. This is the easiest way to build a local contractor list — no typing needed. Leave blank to get an automatic sample from the biggest NC metros.",
            "items": {
              "type": "string",
              "enum": [
                "Raleigh",
                "Charlotte",
                "Greensboro",
                "Durham",
                "Winston-Salem",
                "Fayetteville",
                "Cary",
                "Wilmington",
                "High Point",
                "Concord",
                "Asheville",
                "Gastonia",
                "Greenville",
                "Apex",
                "Huntersville",
                "Chapel Hill",
                "Burlington",
                "Rocky Mount",
                "Wake Forest",
                "Hickory",
                "Kannapolis",
                "Mooresville",
                "Wilson",
                "Indian Trail",
                "Matthews",
                "Salisbury",
                "Monroe",
                "New Bern",
                "Cornelius",
                "Sanford",
                "Garner",
                "Statesville",
                "Mint Hill",
                "Kernersville",
                "Morrisville",
                "Jacksonville",
                "Goldsboro",
                "Holly Springs",
                "Fuquay-Varina",
                "Clemmons"
              ],
              "enumTitles": [
                "Raleigh",
                "Charlotte",
                "Greensboro",
                "Durham",
                "Winston-Salem",
                "Fayetteville",
                "Cary",
                "Wilmington",
                "High Point",
                "Concord",
                "Asheville",
                "Gastonia",
                "Greenville",
                "Apex",
                "Huntersville",
                "Chapel Hill",
                "Burlington",
                "Rocky Mount",
                "Wake Forest",
                "Hickory",
                "Kannapolis",
                "Mooresville",
                "Wilson",
                "Indian Trail",
                "Matthews",
                "Salisbury",
                "Monroe",
                "New Bern",
                "Cornelius",
                "Sanford",
                "Garner",
                "Statesville",
                "Mint Hill",
                "Kernersville",
                "Morrisville",
                "Jacksonville",
                "Goldsboro",
                "Holly Springs",
                "Fuquay-Varina",
                "Clemmons"
              ]
            }
          },
          "classificationType": {
            "title": "Classification / Trade Type",
            "enum": [
              "ALL",
              "Building",
              "Residential",
              "Highway",
              "Public Utilities",
              "H (Grading & Excavating)",
              "PU (Communications)",
              "PU (Fuel Distribution)",
              "PU (Sewage Disposal)",
              "PU (Sewer Lines)",
              "PU (Water Lines)",
              "PU(Electrical-Ahead of P.O.D.)",
              "PU(Water Lines & Sewer Lines)",
              "PU(Water Pur. & Sewage Disp.)",
              "PU(Water Purification)",
              "S (Asbestos)",
              "S (Boring & Tunneling)",
              "S (Concrete Construction)",
              "S (Insulation)",
              "S (Interior Construction)",
              "S (Marine Construction)",
              "S (Masonry Construction)",
              "S (Metal Erection)",
              "S (Railroad Construction)",
              "S (Roofing)",
              "S (Sidewalk Curb & Gutter)",
              "S (Sign/Billboard)",
              "S (Swimming Pools)",
              "S (Wind Turbine)",
              "Accredited Builder",
              "Accredited Master Builder",
              "Unclassified"
            ],
            "type": "string",
            "description": "Narrow results to a specific license classification or trade (roofing, masonry, highway, residential, etc.). Choose 'All Classifications' to include every trade. Combine with a city for targeted local trade lists.",
            "default": "ALL"
          },
          "companyNames": {
            "title": "Company / Business Names (search)",
            "type": "array",
            "description": "Optional. Type one or more business names to look up. Partial names work too — each entry runs its own search and may return several matches.",
            "items": {
              "type": "string"
            }
          },
          "qualifierLastNames": {
            "title": "Qualifier Last Names (search)",
            "type": "array",
            "description": "Optional. Last name(s) of the qualifier — the licensed individual who passed the exams for the company. Use alone, or pair with a first name below for a more exact match.",
            "items": {
              "type": "string"
            }
          },
          "qualifierFirstNames": {
            "title": "Qualifier First Names (search)",
            "type": "array",
            "description": "Optional. First name(s) of the qualifier. Pairs positionally with the last names above (first entry with first entry, and so on).",
            "items": {
              "type": "string"
            }
          },
          "licenseNumbers": {
            "title": "License Numbers (exact lookup)",
            "type": "array",
            "description": "Optional. Look up specific NCLBGC license numbers directly (e.g. '76235'). This is the fastest, most precise option when you already know the license number.",
            "items": {
              "type": "string"
            }
          },
          "zipCodes": {
            "title": "ZIP Codes (search)",
            "type": "array",
            "description": "Optional. Search by ZIP code (e.g. '27601') for a hyper-local contractor list in one specific area.",
            "items": {
              "type": "string"
            }
          },
          "citiesCustom": {
            "title": "Other Cities (advanced)",
            "type": "array",
            "description": "Optional. Any North Carolina city not in the dropdown above — just type the city name (e.g. 'Boone'). Most users can ignore this and use the Cities dropdown instead.",
            "items": {
              "type": "string"
            }
          },
          "includeLikeSoundingNames": {
            "title": "Include Like-Sounding Names",
            "type": "boolean",
            "description": "When on, name searches also match phonetically similar spellings (e.g. 'Smith' also returns 'Smyth'). Handy when you are unsure of the exact spelling.",
            "default": false
          },
          "maxResultsPerSearch": {
            "title": "Max Results per Search",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on the number of contractor records collected per individual search (per city, per company, etc.). Set to 0 for unlimited. A city search can return several hundred records.",
            "default": 0
          },
          "scrapeDetailPage": {
            "title": "Include Full Details",
            "type": "boolean",
            "description": "When on, each contractor's full profile is collected: address, phone, all classifications, limitation level, qualifiers, expiration date and any disciplinary actions. Turn off for a faster, lighter list of names and license numbers only.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy settings for reliable, uninterrupted data collection. Residential proxies are recommended for larger runs."
          },
          "maxConcurrency": {
            "title": "Max Concurrent Browsers",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many searches run in parallel. Higher values finish bulk runs faster but use more memory. Recommended: 2–5.",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}