{
  "openapi": "3.0.1",
  "info": {
    "title": "Contractor License Lookup & Verifier (WA, OR, FL)",
    "description": "Check whether a contractor's license is active in Washington, Oregon or Florida, or search for licensed contractors by trade, city or ZIP code. Uses official state open data: status, expiration, trade, bond and insurance. No scraping, no API key.",
    "version": "0.2",
    "x-build-id": "LqZ9pOEzh4vYMihyU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datapenguin~contractor-license-lookup/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datapenguin-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/datapenguin~contractor-license-lookup/runs": {
      "post": {
        "operationId": "runs-sync-datapenguin-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/datapenguin~contractor-license-lookup/run-sync": {
      "post": {
        "operationId": "run-sync-datapenguin-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": {
          "states": {
            "title": "States",
            "type": "array",
            "description": "Which states to search. When you browse with filters, results are split evenly between the states you pick. A Florida license number lookup usually takes under a minute.",
            "items": {
              "type": "string",
              "enum": [
                "WA",
                "OR",
                "FL"
              ],
              "enumTitles": [
                "Washington (L&I)",
                "Oregon (CCB)",
                "Florida (DBPR)"
              ]
            },
            "default": [
              "WA",
              "OR",
              "FL"
            ]
          },
          "licenseNumbers": {
            "title": "License numbers (verify mode)",
            "type": "array",
            "description": "Exact license numbers, for example <code>ECOSTSC758NN</code> (WA), <code>100215</code> (OR) or <code>CBC0015082</code> (FL). Digits alone work too. Leave empty to browse with filters.",
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Name contains",
            "type": "array",
            "description": "Text to look for in the business name, DBA name or license holder name. Not case sensitive.",
            "items": {
              "type": "string"
            }
          },
          "trades": {
            "title": "Trade",
            "type": "array",
            "description": "Leave empty for all trades. Not every state publishes every trade. Washington has electrical and plumbing, Oregon has general and specialty contractors, and Florida (construction board) has general, HVAC, roofing, plumbing, pool and specialty.",
            "items": {
              "type": "string",
              "enum": [
                "general",
                "specialty",
                "electrical",
                "plumbing",
                "hvac",
                "roofing",
                "pool",
                "other"
              ]
            }
          },
          "statuses": {
            "title": "License status",
            "type": "array",
            "description": "Active licenses only by default. Add Suspended or Expired to find problem licenses. Oregon's file only lists active licenses.",
            "items": {
              "type": "string",
              "enum": [
                "ACTIVE",
                "INACTIVE",
                "EXPIRED",
                "SUSPENDED",
                "PROBATION",
                "OTHER"
              ]
            },
            "default": [
              "ACTIVE"
            ]
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Exact city names, not case sensitive, for example SEATTLE, PORTLAND or MIAMI.",
            "items": {
              "type": "string"
            }
          },
          "zipCodes": {
            "title": "ZIP code prefixes",
            "type": "array",
            "description": "The first digits of a ZIP code. 981 matches 98101 and 98199.",
            "items": {
              "type": "string"
            }
          },
          "counties": {
            "title": "Counties (OR, FL)",
            "type": "array",
            "description": "County names for Oregon and Florida, for example Multnomah or Miami-Dade.",
            "items": {
              "type": "string"
            }
          },
          "expiresWithinDays": {
            "title": "Expires within N days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Only licenses that expire between today and this many days from now. Use 60 to see renewals coming up."
          },
          "includeContact": {
            "title": "Include street address and phone",
            "type": "boolean",
            "description": "Off by default, because sole proprietors often list a home address. Turn it on only if you have a lawful reason, and follow the rules for contacting people where you work.",
            "default": false
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "The most results to return. You are charged per result, so this also caps what a run can cost.",
            "default": 100
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}