Florida Contractor Directory & Leads Scraper (DBPR)
Pricing
$0.002 / contractor records
Florida Contractor Directory & Leads Scraper (DBPR)
Scrape every licensed Florida contractor in a county from the official DBPR registry — name, license, status, expiration, address — paginated and ready to export.
Pricing
$0.002 / contractor records
Rating
0.0
(0)
Developer
ScrapeBench
Maintained by CommunityActor stats
0
Bookmarked
60
Total users
10
Monthly active users
11 hours ago
Last modified
Categories
Features
Share
Pain points
- The DBPR 'Verify a Licensee' portal shows 10 results per page — exporting a full county roster of thousands of contractors by hand is impractical.
- The DBPR county search hands back 10 records a page and re-posts hidden form state for each one, so a county of any size is hundreds of round trips by hand.
- Building a county-level contractor contact list or lead database from DBPR requires automating hundreds of pagination clicks.
What we solve
- Pages through the entire DBPR county + license-type roster automatically — no manual clicking.
- Returns every licensed contractor in a county: name, license number, type, status, expiration, and address.
- Discovery Mode lists all 67+ Florida counties in under 10 seconds so you always know the exact county name to use.
- Look up licences by DBPR number or by business or person name, statewide: each name is searched in DBPR's business and person indexes on the Construction Industry and Electrical Contractors boards, and each match gets its detail page (issue date, county).
- Narrow an export with several licence types at once ('roofing' = Certified + Registered Roofing), a status (active, inactive, suspended) or an expiry window for renewal lists.
Summary
Export every licensed Florida contractor in any county straight from the official DBPR registry. Pick a county (e.g. Hillsborough, Miami-Dade, Orange), a board and license type, and the actor pages through the entire roster — returning business name, license number, type, status, expiration date, city, and address for each licensee. Discovery Mode lists all available county options in seconds. Lookup mode takes DBPR licence numbers or business/person names and returns each matching licence statewide with its detail-page record. Built for lead generation, outreach list building, subcontractor vetting, and compliance monitoring at county scale.
Who it's for
- Sales & BD reps building county-level contractor outreach lists
- Roofing, HVAC, and specialty trade suppliers prospecting for new accounts
- General contractors and developers finding certified subs in a county
- Compliance and risk teams monitoring contractor license status at scale
- Market researchers auditing contractor density and license types by county
How to use
This actor does two jobs. Run it, then collect results from the run's dataset (export to JSON/CSV/Excel, or pull via the Apify API).
Get a list (export): no names, just filters; returns the whole matching list.
{"counties": ["Hillsborough"],"board": "06","licenseType": "0605","maxResults": 500}
Check specific firms (lookup): put company names or licence numbers in queries; Inputs below says how each is matched.
{"queries": ["CGC1514724","Moss & Associates, LLC"],"maxResults": 5}
See Inputs below for every available field.
What you get
One row per record:
| Field | Description |
|---|---|
state | Always 'FL' |
license_number | DBPR license number (class prefix + digits, e.g. CGC1234567) |
business_name | Licensed business or individual licensee name |
license_type | DBPR license/board classification (e.g. Certified General Contractor) |
status | License status (e.g. Current,Active or Null and Void) |
expiration_date | License expiration date as shown on DBPR |
county | Florida county from the scrape filter |
city | Licensee city from the main address |
address | Street address (main address) |
zip_code | ZIP code |
matched_by | 'county_directory' on export rows; 'license_number', 'business_name' or 'person_name' on lookup rows |
person_name | Licensee name from the DBPR detail page (lookup rows) |
issue_date | Licence issue date from the DBPR detail page (lookup rows) |
source_url | Link to the official DBPR license record |
Sample:
{"state": "FL","license_number": "CGC1511234","business_name": "TAMPA BAY CONSTRUCTION LLC","person_name": null,"license_type": "Certified General Contractor","status": "Current,Active","issue_date": null,"expiration_date": "08/31/2026","city": "TAMPA","county": "Hillsborough","address": "1234 KENNEDY BLVD","zip_code": "33602","phone": null,"bond_amount": null,"bond_company": null,"insurance_company": null,"matched_by": "county_directory","source_url": "https://www.myfloridalicense.com/LicenseDetail.asp?SID=&id=ABCDEF123456"}
Inputs
| Field | Required | Type | Default | Description |
|---|---|---|---|---|
mode | no | string | "auto" | auto (default): licence numbers or names in 'Look up licences' run a lookup, otherwise a county export runs. lookup: find licences by DBPR licence number or business / person name, statewide. export: every licensee of the chosen licence types in the chosen counties, names and numbers ignored. |
queries | no | array | [] | DBPR licence numbers ('CGC1514724') or business / person names, one per line. Each name is searched in DBPR's business and person indexes on the Construction Industry and Electrical Contractors boards; each match is enriched from its DBPR detail page (issue date, county) unless 'Add licence details' is off. Leave empty to export by county. |
query | no | string | — | One licence number or name; same as the list above. |
includeDetails | no | boolean | true | Lookup only: fetch each match's DBPR detail page for issue date, county and the full licence type. Slower; same price. |
listCountiesOnly | no | boolean | false | When true, the actor returns all available Florida counties from the DBPR portal and exits immediately (< 10 seconds, no charge). Use this to discover the exact county name to pass into Scrape Mode. |
county | no | string | "Hillsborough" | The Florida county to scrape - full name (e.g. 'Hillsborough') or the DBPR numeric code (e.g. '39'). Common spellings are accepted: 'Miami-Dade County' resolves to DBPR's 'Dade', and 'Saint Lucie' to 'St. Lucie'. If the county is missing or not recognised, the run returns the full list of counties instead of failing, and is not charged. |
counties | no | array | ["Hillsborough"] | Look up many in ONE run instead of starting a run per lookup. Takes the same values as 'County'. Combined with 'County' if you fill both, and duplicates are removed. Billing is unchanged: you are charged per record returned, not per entry submitted. |
board | no | string | "06" | DBPR board code to filter by. Default '06' = Construction Industry (the main contractor board covering General, Building, Residential, and specialty contractors). Contact DBPR or run Discovery Mode to find codes for other boards. |
licenseType | no | string | "0605" | DBPR license type code within the selected board. Default '0605' = Certified General Contractor (Board 06). Use '0600' for all license types within the board (if supported by the portal). |
licenseTypes | no | array | [] | Several licence types in one export: DBPR codes ('0605' Certified General, '0603' Certified Roofing, '0616' Registered Roofing) or 'roofing' (= 0603 + 0616), 'CCC', 'RC', 'CGC'. Overrides 'License type code' when set. |
statuses | no | array | [] | Keep only these: active (Current, active), inactive (Current, inactive), suspended, or all. Empty = every row DBPR lists, as before. |
status | no | string | — | One status; same as Statuses. |
expiresAfter | no | string | — | Only licences expiring on or after this date (YYYY-MM-DD). With 'Expires on or before' it lists licences due for renewal in a window. |
expiresBefore | no | string | — | Only licences expiring on or before this date (YYYY-MM-DD). |
maxResults | no | integer | 500 | Cap on the number of records returned PER ENTRY, not per run — so a batch cannot silently return only the first 500 rows overall and read as 'the rest don't exist'. A county + license type can have thousands of results; set lower for testing. Default 500. |
proxyConfiguration | no | object | {"useApifyProxy": false} | Optional. The DBPR portal is usually reachable directly from Apify's datacenter IPs. Enable a proxy (e.g. residential) only if a run is blocked or served a challenge page. |
includeContacts | no | boolean | true | Where the board publishes no phone for a business, add one (with its website and street address when found), looked up by business name. Charged as a separate 'Contact details found' event only on a row that gets a phone; a row without one costs only the row price. Turn off for the licence list alone. |
Pricing (Pay Per Event)
You pay per result (dataset-item) — no charge for empty runs. Example: 500 contractor records at $0.002/result ≈ $1.00.
With 'Include contact details' on (the default), a business row the board lists without a phone that gets one is also charged a 'Contact details found' event ($0.002, from 2026-11-27); every other row costs only the row. Illustrative — the final per-result price is set at publish time. Apify platform usage (compute) is billed separately per your plan. Discovery Mode (listCountiesOnly=true) returns county names only and is not charged.
Use cases
- Lead list building — export all certified general contractors in a county into a CRM or outreach sequence.
- Subcontractor prospecting — find every licensed electrical or plumbing contractor in a target county for bidding.
- Competitor and market analysis — count active vs expired licenses by county to gauge market saturation.
- Compliance monitoring — pull the full county roster periodically and flag any status changes.
- Territory planning — compare contractor density across counties before opening a new branch or territory.
- Vendor verification — run your subcontractors' licence numbers or company names as one lookup batch and flag any that are not Current,Active.
- Renewal outreach — export roofers or general contractors whose licences expire in the next 90 days (Expires on or after / on or before).
Why this actor
- Data straight from the official Florida DBPR registry — authoritative, not a stale third-party copy.
- Discovery Mode lists all 67+ county options in seconds so you never have to guess the county name.
- Handles full county rosters of 8,000+ records via automatic pagination — no manual page-clicking needed.
- Pay per record; no charge for discovery runs or empty results.
- Export and lookup in one actor: county rosters by licence type, or licence numbers and names statewide with detail-page enrichment.
Limitations & updates
Covers the Florida DBPR 'Verify a Licensee' portal only. One run can scrape several counties (pass a list) and several licence types of one board (Licence types); a county is required for an export, lookups are statewide. Data reflects the live DBPR registry and changes as it updates. Phone, bond, and insurance fields are included in the schema for suite consistency but DBPR does not publish them — they will be null. The issue-date field (detail page) is not fetched in export mode to keep runs fast; lookup mode fetches each match's detail page. DBPR lists a licence with a trading name twice (the firm and the qualifying person), so an export can carry the same licence number on two rows.
FAQ
Where does the data come from?
The official Florida DBPR 'Verify a Licensee' portal (wl11.asp) — public contractor license data sourced directly from the state registry.
How do I find the right county name?
Run the actor once with listCountiesOnly=true. It returns all available county names and their DBPR codes in under 10 seconds at no charge.
What board and license type should I use?
The defaults (board '06' / licenseType '0605') cover Certified General Contractors under the Construction Industry board — the largest category. Set licenseType to another code (e.g. '0610' for Certified Building Contractor) to target a different trade. DBPR board and license type codes are documented on the DBPR website.
Lookup or export — which do I use?
Lookup when you have licence numbers or names: put them in 'Look up licences'. Each name is searched in DBPR's business and person indexes, statewide, on the Construction Industry and Electrical Contractors boards. Export when you want a county list: leave that empty and pick counties and licence types. 'Mode' can force one or the other; the default, auto, decides by whether you gave names or numbers.
How do I export roofers, or several licence types at once?
Set 'Licence types' to 'roofing' (Certified Roofing Contractor 0603 + Registered Roofing Contractor 0616), or list DBPR codes such as 0605 and 0610. Add 'Statuses' (active, inactive, suspended) to keep only those, and 'Expires on or after / on or before' for a renewal window.
How many records can I get per run?
Hillsborough County alone has 8,000+ Certified General Contractors. The actor paginates automatically; set maxResults to control the cap. For very large counties, split across license types to stay within run time limits.
How am I charged?
Pay per record in Scrape Mode. Discovery Mode (listCountiesOnly=true) is not charged.
How current is the data?
It reflects the live DBPR registry at scrape time — the actor reads the portal itself, so you get whatever DBPR is publishing at that moment rather than a cached copy.
Does this include phone numbers?
No — DBPR does not publish phone numbers on the Verify a Licensee portal. Enrich with a contact-data provider after export.
Which actor to choose
Part of the Florida DBPR contractor data suite — pick the one that fits your goal:
- California Contractor License Lookup & Verify (CSLB) — You need a California contractor verified — by license number, business, or owner/personnel name (CSLB).
- Texas Contractor Directory & Leads Scraper (TDLR) — You want the same county-scoped directory for Texas contractors (TDLR).
- US Contractor License Lookup & List Scraper (State Boards) — You need contractor licences verified or exported across several states in one run.
- Alabama Contractor License Lookup & Verify (LBGC) — You need commercial contractors in an Alabama county, with phone and fax.
- Virginia Contractor License Lookup (DPOR Bulk) — You need the same county-by-trade contractor list for Virginia, with email and mailing address.
Guides & use cases
Written up on scrapebench.dev — the bench that runs and verifies this actor against the live source every night:
- How-to: How to run Florida Contractor Directory & Leads Scraper (DBPR)
- Use case: Pull Every Certified General Contractor in a Florida County
More actors, coverage and nightly verification results: scrapebench.dev
Works with AI assistants (MCP)
Callable as an MCP tool, so Claude, Cursor, VS Code Copilot and other MCP clients can run it directly. Grab the config from the MCP tab on this page — Apify hosts the server and keeps that snippet current, and OAuth signs you in on first connect, so no API token goes in your config file.
Then just ask:
"List certified general contractors in Hillsborough County, Florida."
If the county name does not resolve, the run returns Florida's county list free of charge rather than failing, so you can see the exact spellings the portal uses. Runs started this way bill exactly like any other run.
Data & lawful use
This actor collects publicly available information that the Florida Department of Business and Professional Regulation publishes for public lookup — licence records, business listings and the contact details professionals list there. Some of it identifies individuals (sole proprietors, licence holders, agents), so treat any names, phone numbers and emails in your results as personal data.
When you run this actor, you decide what is collected and what it is used for, so you are the controller of that data and we act only as your processor (Apify Standard Actor Contract). You need a lawful basis for your use, must honour opt-out and deletion requests, and must follow the marketing rules that apply to you (CAN-SPAM, TCPA, GDPR, CCPA and similar). Don't use the output for unsolicited bulk messaging, for screening covered by the FCRA, or for anything the source's own terms forbid.
Your results are stored in your own Apify account. We don't keep a copy of your results and don't sell or share them.
Disclaimer
This is an independent tool. It is not affiliated with, endorsed by or sponsored by the Florida Department of Business and Professional Regulation. Names and marks are used only to describe the data source. Records are provided as published by the source and may be out of date or incomplete. For anything consequential (hiring, a permit, a legal decision), confirm the record with the issuing agency. You are responsible for making sure your use complies with applicable law and the source's terms.
Need help?
Open an issue on this actor's Issues tab and we'll respond there. Bug reports, missing fields and feature requests are all welcome. Guides and examples: scrapebench.dev.
If you are a person named in this data and want your record removed from our copy, email apify-help@scrapebench.dev; the source agency remains the official record.
Your run may be used to improve our services. If something looks off, or you want this actor to fit your use better, please share your run data with us: Apify Console → Settings → Security → Share run data with developers. It lets us see exactly what went wrong and keep improving the actor.
If this actor saved you time, a short review on its Store page helps other buyers find it.