{
  "openapi": "3.0.1",
  "info": {
    "title": "TDLR Texas License Search Scraper",
    "description": "Search Texas Dept. of Licensing and Regulation (TDLR) licenses across 80+ regulated trades: cosmetology, barbering, electricians, HVAC, and more. Search by name or license number, filter by trade and status, get expiration dates and contact info.",
    "version": "1.0",
    "x-build-id": "oPHbkNzHnY1QwpHFY"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~tdlr-texas-license-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-tdlr-texas-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~tdlr-texas-license-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-tdlr-texas-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~tdlr-texas-license-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-tdlr-texas-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": [
              "byName",
              "byLicenseNumber"
            ],
            "type": "string",
            "description": "How to look up licenses.",
            "default": "byName"
          },
          "nameQuery": {
            "title": "License holder / business name (mode=byName)",
            "type": "string",
            "description": "Matches either the individual owner name or the business name (e.g. `Smith` or `Star Electrical`). Case-insensitive partial match. Optional if `licenseType` and/or `countyFilter` is set — leaving it blank then browses all licenses matching those filters.",
            "default": "Smith"
          },
          "licenseNumber": {
            "title": "License number (mode=byLicenseNumber)",
            "type": "string",
            "description": "The TDLR license number, e.g. `11484`. Note: TDLR numbers licenses per trade category, so the same number can be shared across different license types — use `licenseType` to disambiguate."
          },
          "licenseType": {
            "title": "Filter by license type / trade category",
            "enum": [
              "",
              "A/C CE Provider",
              "A/C Contractor",
              "A/C Technician",
              "Appliance Installation Contractor",
              "Appliance Installer",
              "Apprentice Electrician",
              "Apprentice Sign Electrician",
              "Associate Auctioneer",
              "Auctioneer",
              "Auctioneer CE Provider",
              "Barber School",
              "Behavior Analyst",
              "Behavior Analyst Assistant",
              "Boiler Authorized Inspection Agency",
              "Boiler Inspectors",
              "Class A Barber",
              "Cosmetology CE Provider",
              "Cosmetology Esthetician",
              "Cosmetology Eyelash Extension Specialist",
              "Cosmetology Hair Weaving Specialist",
              "Cosmetology Hair Weaving Specialist/Esthetician",
              "Cosmetology Junior College",
              "Cosmetology Manicurist",
              "Cosmetology Manicurist/Esthetician",
              "Cosmetology Operator",
              "Cosmetology Private School",
              "Cosmetology Vocational/High School",
              "CS AMATEUR PROMOTER (Business)",
              "CS CONTESTANT",
              "CS JUDGE",
              "CS MANAGER",
              "CS PROMOTER (Business)",
              "CS REFEREE",
              "Devices",
              "Distributor/Wholesaler",
              "Electrical Contractor",
              "Electrical Sign Contractor",
              "Electrician Apprenticeship Program",
              "Electrician CE Provider",
              "Elevator Contractor",
              "Elevator Responsible Party",
              "Elevator Responsible Party CE Provider",
              "Esthetician Establishment",
              "Eyelash Extension Establishment",
              "Full Service Establishment",
              "Hair Weaving  Establishment",
              "Journeyman Electrician",
              "Journeyman Industrial Electrician",
              "Journeyman Lineman Electrician",
              "Journeyman Sign Electrician",
              "Licensed Breeder",
              "Maintenance Electrician",
              "Manicurist Establishment",
              "Manicurist/Esthetician Establishment",
              "Master Electrician",
              "Master Sign Electrician",
              "Mini Establishment",
              "Mobile Establishment",
              "Professional Employer Organization",
              "Professional Employer Organization (Limited license)",
              "Property Tax Appraiser",
              "Property Tax Assessor/Collector",
              "Property Tax Collector",
              "Property Tax Consultant",
              "Property Tax Consultant CE Provider",
              "Property Tax Professional CE Provider",
              "Property Tax Professional Core Education Provider",
              "Qualified Elevator Inspector",
              "Registered Accessibility Specialist",
              "Registered Accessibility Specialist CE Provider",
              "Residential Wireman",
              "Service Company",
              "Service Contract Provider",
              "Service Technician",
              "Supplier",
              "Tow Operator CE Provider",
              "Tow Truck Operator (Consent Tow)",
              "Tow Truck Operator (Incident Management)",
              "Tow Truck Operator (Private Property)",
              "Used Auto Parts Recycler",
              "VSF Employee",
              "Water Well Driller/Pump Installer",
              "Water Well Driller/Pump Installer Apprentice",
              "Water Well Driller/Pump Installer CE Provider"
            ],
            "type": "string",
            "description": "Only emit licenses of this TDLR-defined trade category. Leave unset for all types.",
            "default": ""
          },
          "countyFilter": {
            "title": "Filter by Texas county (optional)",
            "type": "string",
            "description": "Only emit licenses whose business or mailing county matches (e.g. `Harris`, `Travis`, `Dallas`). Case-insensitive exact match against TDLR's own county name."
          },
          "statusFilter": {
            "title": "Filter by license status",
            "enum": [
              "",
              "active",
              "expired"
            ],
            "type": "string",
            "description": "Only emit licenses that are currently active or expired, based on the license expiration date. Leave unset for both.",
            "default": ""
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "licenseNumber",
              "ownerName",
              "businessName",
              "expirationDate"
            ],
            "type": "string",
            "description": "Order results are fetched/emitted in. Defaults to license number.",
            "default": "licenseNumber"
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on emitted license records.",
            "default": 20
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}