{
  "openapi": "3.0.1",
  "info": {
    "title": "Florida Contractor License Lookup (DBPR) — Bulk Verification",
    "description": "Extract Florida professional license records (contractors, electricians, cosmetologists, home inspectors, and more) from official DBPR public data. Filter by license type, county, city, status, and expiration date. Pay per record.",
    "version": "0.1",
    "x-build-id": "i9gYCdn0J1SVUnxJS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cblu~florida-license-records-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cblu-florida-license-records-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/cblu~florida-license-records-scraper/runs": {
      "post": {
        "operationId": "runs-sync-cblu-florida-license-records-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/cblu~florida-license-records-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-cblu-florida-license-records-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": [
          "profession"
        ],
        "properties": {
          "profession": {
            "title": "Profession / licensing board",
            "enum": [
              "construction",
              "electrical-contractors",
              "home-inspectors",
              "mold-related-services",
              "cosmetology",
              "barbers",
              "veterinary-medicine",
              "architecture-interior-design"
            ],
            "type": "string",
            "description": "Which DBPR-regulated profession to extract license records for.",
            "default": "construction"
          },
          "licenseTypes": {
            "title": "License type codes",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. Only return licenses whose type code matches, e.g. <code>CGC</code> (Certified General Contractor), <code>CBC</code> (Certified Building), <code>CCC</code> (Certified Roofing), <code>EC</code> (Certified Electrical), <code>HI</code> (Home Inspector), <code>CL</code> (Cosmetologist). Leave empty for all types in the selected profession.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "counties": {
            "title": "Counties",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. Florida county names (e.g. <code>Palm Beach</code>, <code>Dade</code>, <code>Hillsborough</code>) or DBPR county codes (e.g. <code>60</code>). Leave empty for statewide.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "cities": {
            "title": "Cities",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. Exact city names of the licensee's address, e.g. <code>MIAMI</code>, <code>TAMPA</code>. Case-insensitive. Leave empty for all cities.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "status": {
            "title": "License status",
            "enum": [
              "any",
              "current-active",
              "current-inactive"
            ],
            "type": "string",
            "description": "Filter by license status. \"Current + Active\" is the standard choice for lead generation (licensee holds a valid license and actively practices).",
            "default": "current-active"
          },
          "expiresBefore": {
            "title": "License expires before",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Optional. Only return licenses expiring before this date (format <code>YYYY-MM-DD</code>). Great for renewal/CE marketing lists."
          },
          "expiresAfter": {
            "title": "License expires after",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Optional. Only return licenses expiring after this date (format <code>YYYY-MM-DD</code>)."
          },
          "nameContains": {
            "title": "Name contains",
            "type": "string",
            "description": "Optional. Case-insensitive substring match against the licensee name and DBA/business name."
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 500000,
            "type": "integer",
            "description": "Maximum number of license records to return. You are only charged for records actually returned.",
            "default": 500
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "monitor"
            ],
            "type": "string",
            "description": "<code>search</code> (default) extracts every matching record. <code>monitor</code> compares against the baseline saved by the previous run and returns only CHANGED records - ideal on a Schedule.",
            "default": "search"
          },
          "licenseNumbers": {
            "title": "License numbers to watch (monitor mode)",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. Explicit watch list of full license numbers (e.g. <code>CGC058548</code>). When set, it overrides the filters above (except profession, which selects the source file) - so a watched license is still tracked after it stops matching e.g. \"Current + Active\". Leave empty to monitor everything matching the filters above instead.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "alertOnStatusChange": {
            "title": "Alert on status changes",
            "type": "boolean",
            "description": "Monitor mode: report licenses whose primary/secondary status changed (e.g. Current → Suspended), renewals (expiration date moved), and licenses that disappeared from the DBPR extract (DBPR drops null & void / delinquent / involuntarily inactive licenses).",
            "default": true
          },
          "alertOnNewLicenses": {
            "title": "Alert on new licenses",
            "type": "boolean",
            "description": "Monitor mode: report licenses that newly match your filters (new licensees in a county/trade) or newly appear on your watch list.",
            "default": true
          },
          "expiringWithinDays": {
            "title": "Alert when expiring within (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Monitor mode, optional. Report each watched license once when its expiration date enters this window (e.g. <code>90</code> = alert 90 days before expiration). A renewal re-arms the alert for the new date."
          },
          "monitorStateKey": {
            "title": "Monitor baseline name",
            "type": "string",
            "description": "Monitor mode: name of the saved baseline, so you can run several independent monitors (one per Schedule). Baselines live in the <code>fl-dbpr-license-monitor</code> key-value store in your account. Use one baseline per profession.",
            "default": "default"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}