DBPR Florida License Verification avatar

DBPR Florida License Verification

Pricing

Pay per event + usage

Go to Apify Store
DBPR Florida License Verification

DBPR Florida License Verification

Verify any Florida professional license (contractors, real estate, cosmetology, CPAs, engineers, and 30+ other boards) directly from the Florida Department of Business and Professional Regulation. Fresher than aggregators, priced per record.

Pricing

Pay per event + usage

Rating

0.0

(0)

Developer

Tony

Tony

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

DBPR Florida License Verification & Lookup

Verify, look up, and search any Florida professional license directly from the Florida Department of Business & Professional Regulation (DBPR) — myfloridalicense.com. Covers 30+ boards including contractors (CGC, CFC, CBC, CCC, EC), real estate (SL, BK), home inspectors (HI), cosmetology (CL, MM), CPAs, engineers (PE), auctioneers, and more. Fresher than aggregator services, priced per record returned.

Table of contents

What you get per result

A stable record schema so downstream buyers can rely on field names. Three tiers:

Status-only ($0.002/record) — license number, status, normalized status, expiration date. No PII. Ideal for renewal-reminder or automated compliance workflows.

Basic ($0.008/record) — licensee name, license number, license type, rank, status, expiration date, main address (street and city parsed cleanly), board (inferred), source URL.

Full ($0.025/record) — everything in basic plus licensure date, county, DBA / alternate names, and special qualifications from the per-license detail page.

Who this is for

  • Lead-gen agencies enriching Florida contractor, realtor, plumber, electrician, or CPA prospect lists with live license status.
  • KYC and compliance teams verifying active license status on Florida professionals at onboarding and renewal.
  • Insurance and surety underwriters checking license class, rank, and expiration before binding contractor or professional liability coverage.
  • Marketplaces (Angi, Thumbtack, HomeAdvisor, Houzz, Porch) that require licensed-professional verification at signup.
  • Renewal-reminder services that need recurring status checks on a roster of Florida licensees.
  • Background-check operators validating Florida professional credentials.

Pricing

Pay-per-event. You pay only for records the actor actually produces. Empty results are not pushed or billed.

EventPriceDescription
license_status_check$0.002License number → status + expiration. No name/address.
license_basic$0.008Name, license #, type, rank, status, expiration, main address.
license_enriched$0.025Basic + licensure date, county, DBA/alt names, special qualifications.

That's 500 status checks per dollar, 125 basic records per dollar, or 40 enriched records per dollar.

How to look up a Florida license by number

Direct license-number lookup is the fastest, cheapest path. Works for every prefix (CGC, CFC, CBC, CCC, EC, SL, BK, CL, MM, PE, HI, AC, etc.):

{
"licenseNumbers": ["CFC056678", "SL705188", "CL1322240"],
"enrichmentLevel": "full"
}

This is the most efficient way to verify a contractor license, look up a Florida real estate agent, check a cosmetology license, or confirm any other DBPR-issued credential — DBPR returns the canonical record without any fuzzy name search.

For a renewal-reminder workflow that only needs the current status:

{
"licenseNumbers": ["CFC056678", "CGC1512345"],
"statusCheckOnly": true
}

The status-only mode bills at $0.002 per license and returns no PII — ideal for periodic compliance checks. If a license number isn't found in DBPR (typo, voided, or never existed), the actor logs a warning and does not charge for it.

How to search Florida licensees by name

Useful when you know the person but not their license number. Searches DBPR's name index across all boards:

{
"licenseeNames": [
{ "lastName": "SMITH", "firstName": "JOHN" },
{ "orgName": "AARDVARK PLUMBING" }
],
"maxResultsPerSearch": 25,
"enrichmentLevel": "basic"
}

Names are case-insensitive on input. DBPR returns partial matches, capped by maxResultsPerSearch. Common-surname searches (Smith, Johnson, Williams, Garcia) can return thousands of records — keep the cap modest unless you intend to pay for all of them.

How to find every active contractor in a Florida city

City-scoped search across a specific board + license type. Both board and licenseType are required by DBPR for city searches:

{
"citySearches": [
{ "city": "TAMPA", "board": "06", "licenseType": "0605" }
],
"maxResultsPerSearch": 500,
"enrichmentLevel": "basic"
}

This returns every active Certified General Contractor (CGC) in Tampa. Swap the board+licenseType pair to scope by city for any Florida profession — plumbers (CFC), roofers (CCC), electricians (EC), real estate sales associates (SL), brokers (BK), home inspectors (HI), CPAs, cosmetologists (CL), and so on. See DBPR board codes below; the full numeric license-type table is in src/normalize.js.

To search a county instead of a city, swap city for county (e.g., county: "39" for Hillsborough). To sweep all of Florida, iterate the 67 county codes.

How to verify a Florida real estate license

Florida real estate uses the SL (Sales Associate) and BK (Broker) prefixes. Direct lookup works the same as any other license:

{
"licenseNumbers": ["SL705188", "BK3123456"],
"enrichmentLevel": "full"
}

The full tier includes licensure date, county, and any DBA / alternate names — useful for compliance teams confirming a real estate broker's qualifications before listing or paying commission, and for marketplaces verifying Florida realtors at signup.

How to sweep every active CGC in Florida

State-wide license-type sweep. Without a city or county filter, this returns every active Certified General Contractor in the state. Use a high maxResultsPerSearch cap — there are tens of thousands of CGC licensees:

{
"licenseTypeSearches": [
{ "board": "06", "licenseType": "0605" }
],
"maxResultsPerSearch": 5000,
"enrichmentLevel": "basic"
}

The same pattern works for any board+type pair: every active plumber in Florida, every active electrician, every active cosmetologist, every active CPA. Be aware of pricing — 5,000 basic records is $40, and DBPR pagination at 50/page means a 5,000-record sweep takes ~100 seconds before any enrichment.

Sample output

Each record is a flat JSON object with a stable schema. A basic-tier record looks like this:

{
"id": "FL-DBPR:CFC056678:Primary:E941FBE6942475F84E3177712B2CF505",
"source_state": "FL",
"source_agency": "DBPR",
"source_url": "https://www.myfloridalicense.com/LicenseDetail.asp?SID=&id=E941FBE6942475F84E3177712B2CF505",
"detail_id": "E941FBE6942475F84E3177712B2CF505",
"license_number": "CFC056678",
"license_type": "Certified Plumbing Contractor",
"license_rank": "Cert Plumbing",
"license_prefix": "CFC",
"board": "Construction Industry",
"board_code": "06",
"status": "Current, Active",
"status_normalized": "active",
"expiration_date": "2026-08-31",
"name": "SMITH, LAWRENCE C",
"name_type": "Primary",
"primary_name": "SMITH, LAWRENCE C",
"dba_names": ["AARDVARK PLUMBING INC"],
"alternate_names": [],
"main_address": {
"street": "3023 SPRUCE ST",
"city": "TAMPA",
"state": "FL",
"postal_code": "33607",
"country": "US"
},
"scraped_at": "2026-04-25T18:36:04.476Z",
"enrichment_level": "basic"
}

A status-only record is much smaller (no PII) and bills at $0.002:

{
"id": "FL-DBPR:CFC056678:Primary:E941FBE6942475F84E3177712B2CF505",
"license_number": "CFC056678",
"status": "Current, Active",
"status_normalized": "active",
"expiration_date": "2026-08-31",
"enrichment_level": "status_only"
}

The status_normalized field collapses DBPR's irregular status strings into a small enum: active, expired, void, delinquent, suspended, revoked, pending, inactive, voluntary_inactive, involuntary_inactive, closed, probation, deceased. Filter on this rather than the raw status field — DBPR writes "Null and Void, Active" for dead licenses, which is misleading.

DBPR direct vs license-aggregator services

This actor (direct from DBPR)Typical aggregator (BatchLeads, Searchbug, ListSource)
Data freshnessLive — same data DBPR's portal serves right nowRefreshed weekly or monthly; can lag by 30+ days
CoverageAll 30+ DBPR boards, ~90 license typesUsually contractor + real estate only
PricingPay-per-record ($0.002–$0.025)$0.10–$1.00/record or $99+/month
Status accuracyReflects DBPR's current state — delinquent, null and void, and expired correctly filteredOften shows expired or revoked licenses as "active" until next refresh
Customizable inputLicense #, name, city, county, license type, statewide sweepLimited query options
Audit trailsource_url per record points to DBPR's public detail pageAggregator's internal ID only

If your use case requires regulatory-grade freshness — KYC, surety underwriting, marketplace verification, professional services compliance — the direct-from-DBPR feed is what you want.

DBPR board codes

Use these in board fields on citySearches and licenseTypeSearches:

CodeBoard
01Certified Public Accounting
02Architecture & Interior Design
03Barbers
04Home Inspectors
05Cosmetology
06Construction Industry
07Mold-Related Services
08Electrical Contractors
09Engineers
13Landscape Architecture
25Real Estate
26Veterinary Medicine
38Community Association Managers
48Auctioneers
50Building Code Administrators and Inspectors
53Geologists
59Asbestos Contractors and Consultants
64Real Estate Appraisers
85Yacht and Ships
200Hotels and Restaurants
210Elevator Safety
400Alcoholic Beverages & Tobacco
800Condominiums, Cooperatives, Timeshares
840Homeowners' Associations

(See src/normalize.js for the full table including numeric licenseType codes per board.)

FAQ

Where does this Florida license data come from? Directly from myfloridalicense.com, the public license portal operated by the Florida Department of Business & Professional Regulation. Same data the public website serves; we just expose it as a stable structured feed.

How fresh is the license data? As fresh as DBPR's portal — typically updated within 24 hours of any DBPR action (new issuance, renewal, suspension, revocation). We don't cache or pre-fetch — every run hits DBPR live.

Is scraping the Florida DBPR license portal legal? Florida DBPR license records are public records under Florida Statute Chapter 119. The actor reads the same lookup pages a browser would. You should review DBPR's terms of use before reselling raw data or combining it with other PII.

What happens if a license number doesn't exist? The actor logs a warning (license_number "X" not found in DBPR) and skips that lookup — no record is pushed and you are NOT charged for it.

Why are some addresses returning "Private"? DBPR allows certain professionals (judges, law-enforcement officers, code inspectors) to suppress their main address from the public portal under Fla. Stat. § 119.071. We pass that through as street: "Private" so you can detect and handle it downstream.

Do I get charged for expired or null-and-void licenses? No. By default, only active and pending licenses are returned and billed. Set includeExpired: true to include expired, void, delinquent, suspended, and revoked statuses.

Can I run this on a schedule for ongoing verification? Yes — Apify's Schedules feature runs the actor on a cron expression. Common pattern: a weekly sweep of your customer roster as licenseNumbers with statusCheckOnly: true, billed at $0.002/record. A 1,000-customer roster runs about $2/week.

What's the difference between Primary and DBA in the data? A single license can have both a Primary (the responsible person, e.g., the qualifier on a contractor license) and a DBA (the business operating under that license). The actor collapses both into one record per license, with the canonical name in name (preferred from Primary) and any business names in dba_names.

Is there a free tier? No free tier currently — pay-per-event from the first record. Apify gives every account $5/month of free platform credit, which translates to roughly 2,500 status checks or 625 basic records before any billing kicks in.

Known limitations

  • Status normalization is opinionated. includeExpired: false (default) keeps only active and pending records. Flip to true to see void, expired, delinquent, suspended, etc.
  • Basic tier can't tell board from prefix perfectly. For common prefixes (CFC/CGC/CBC → Construction, SL/BK → Real Estate, CL/MM → Cosmetology, EC/ER → Electrical, HI → Home Inspectors) we infer the board. For uncommon prefixes, board is null unless you use enrichmentLevel: "full".
  • City searches are case-sensitive on DBPR's side — we upper-case for you. Still, some DBPR entries have misspelled cities (LAFAYETT, FT LAUDERDALE vs FORT LAUDERDALE). Use broader queries if counts seem low.
  • DBPR caps each page at 50 records. We paginate transparently up to maxResultsPerSearch (default 50, max 5000). Each page costs roughly 1 second of wall time, so a 1,000-record search takes ~20 seconds before any enrichment.
  • Address parsing is heuristic. DBPR returns the address as a single concatenated string. We split it into street + city using a USPS-suffix tokenizer and a small dictionary of multi-word Florida cities. Should be accurate on >95% of records; report any miscategorized address as a bug.
  • Empty results are not pushed or billed.

Florida DBPR license records are public records under Florida Statute Chapter 119. This actor reads the same public lookup page a browser would. Review DBPR's terms of use and applicable privacy laws before reselling the raw data or combining it with other PII.