DBPR
Florida Contractor License Lookup & Verify (DBPR)
Verify any Florida contractor by license number, business name or person's name — type, status, expiration, county & address — from the official DBPR registry.
Verification
Output fields
Authoritative field set from the dataset schema.
| Field | Type |
|---|---|
state | string|null |
license_number | string|null |
business_name | string|null |
person_name | string|null |
license_type | string|null |
status | string|null |
issue_date | string|null |
expiration_date | string|null |
city | string|null |
county | string|null |
address | string|null |
zip_code | string|null |
phone | string|null |
bond_amount | string|null |
bond_company | string|null |
insurance_company | string|null |
matched_by | string|null |
source_url | string|null |
scraped_at | string|null |
Sample row
{
"state": "FL",
"license_number": "CGC1514724",
"business_name": "ARIZA, JOHN MARIO",
"person_name": "ARIZA, JOHN MARIO",
"license_type": "Certified General Contractor",
"status": "Null and Void",
"issue_date": "12/21/2007",
"expiration_date": "08/31/2020",
"city": "COOPER CITY",
"county": "Broward",
"address": "11671 SW 50TH COURT",
"zip_code": "33330",
"matched_by": "license_number",
"source_url": "https://www.myfloridalicense.com/portalsearches/VerifyLicensee/LicenseDetail?ID=28E60BE6EB09BE1E393C28CEF9C8880C"
} Inputs
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
query | string | no | "CGC1514724" | A Florida DBPR license number (class prefix + digits, e.g. 'CGC1514724') OR a name. A number is looked up directly, on any board. A NAME is searched against BOTH of DBPR's name indexes — business (Org Name) and person (Last/First Name) — and the results unioned and deduped by license #, so you find every contractor licence a person is listed on. For a person, enter 'Last, First' or 'First Last'; middle names are ignored because DBPR matches the first given name only. Name searches are scoped to Florida's two contractor boards (Construction Industry, Electrical Contractors) — DBPR's own search sweeps all 40 of its boards and would bill you for realtors and cosmetologists. Must not be empty - an empty query has nothing to look up and the run is rejected before it starts. |
queries | array | no | ["CGC1514724","ARIZA, JOHN MARIO"] | Look up many licenses in ONE run instead of starting a run per lookup. Accepts the same values as 'Search query' — license numbers, business names or person names, mixed freely. Combined with 'Search query' if you fill both, and duplicates are removed. Billing is unchanged: you are charged per matched record returned, not per query submitted. |
includeDetails | boolean | no | true | When on (default), each match is enriched with its full DBPR license record — license type, issue/expiration dates, county, and full address. Turn off for a faster, lighter result list (license #, name, type, status, expiration, city). |
maxResults | integer | no | 50 | Cap on the number of matches returned (and enriched) PER QUERY, not per run — so a batch of 20 names cannot silently return only the first 50 rows overall and read as 'the rest don't exist'. Defaults to 50, and on a name query it is split fairly between the business and person indexes so a common surname's thousands of business matches cannot crowd out the person's own licences. A license-number query returns exactly one record regardless. A NAME search pages through DBPR until your cap is met, so raising this genuinely returns more — measured on a search matching 22,979 licences, 200 returns 200 and 1000 returns 1000. Whenever a search matched more than you got back, the run log says so using DBPR's own total (e.g. 'returning 120 of 22979 matches, read 3 of 230 pages'), so a capped result is never silently passed off as the complete list. Note that a large cap can also exhaust the run's own pay-per-event budget before the last row is stored — the log says 'PPE budget cap reached' when that happens, so check it if you get fewer rows than the log's own count. |
proxyConfiguration | object | no | {"useApifyProxy":false} | Optional. The DBPR portal is usually reachable directly; enable a proxy (e.g. residential) only if a run is blocked or served a challenge. |
Pricing
Pay per result (dataset-item) — no charge for empty runs.
Example: 100 verified license records at $0.004/result ≈ $0.40.
FAQ
Where does the data come from?
The official Florida DBPR 'Verify a Licensee' registry — public, authoritative license data.
What can I search by?
A DBPR license number (e.g. CGC1514724), a business name, or a person's name — 'Last, First' or 'First Last'. A name is searched against BOTH of DBPR's name indexes and the results unioned and deduped by license number, because neither index is a superset of the other: measured 2026-09-06, the surname ARIZA returns 2 contractor licences from the business index and 14 more from the person index that the business index cannot reach. Middle names are ignored (DBPR matches the first given name only), so 'ARIZA, JOHN MARIO' and 'ARIZA, JOHN' return the same three licences.
Does it search all of DBPR, or just contractors?
Name searches are scoped to Florida's two contractor boards — Construction Industry (CILB) and Electrical Contractors (ECLB). DBPR's own search covers all 40 of its boards, which is why looking up a common name there returns mostly real-estate and cosmetology licences: 'SMITH, JOHN' does not reach a single contractor on DBPR's first unfiltered page, but returns 64 contractors when the board is set (measured 2026-09-06). A licence number you type is still looked up as given, on any board.
What fields do I get?
License number, business/licensee name, person name, license type, status, expiration, plus county, city, ZIP and full address when detail enrichment is on. Every row links to its own DBPR detail page.
How am I charged?
Pay-per-result — per license match returned. No charge for searches with no results.
Is this personal data?
It's public professional-license data (business and license-holder records as DBPR publishes them); we add no personal/PII enrichment.
How current is it?
It reflects the live DBPR record at lookup time.
Guides & use cases
Related actors