# Florida License Leads Scraper - Contractors, Realtors & Pros (`scrapesage/florida-license-leads-scraper`) Actor

Scrape Florida DBPR licensed professionals & businesses: contractors, real estate agents/brokers, CAMs, vets, cosmetologists, architects & more. Name, address, license number, type, status & expiration date. Filter by profession, city, type, status & renewal date. Export CSV/JSON.

- **URL**: https://apify.com/scrapesage/florida-license-leads-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Real estate, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$6.00 / 1,000 license lead records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Florida License Leads Scraper — Contractors, Realtors, CAMs, Vets & Pros

Turn Florida's official **DBPR public-records license rosters** into a clean, structured **B2B lead database**. Pull licensed **construction contractors, real-estate agents & brokerages, community-association managers, veterinarians, cosmetologists, architects, home inspectors, auctioneers, geologists, employee-leasing (PEO) firms** and more — each record with the **licensee/business name, full mailing address, license number, license type, status and issue / expiration dates**.

Every license is a verified, currently-operating Florida business or professional — the highest-intent kind of lead. Filter by **profession, city, ZIP, license type, status, and renewal/expiration date**, score every lead, and run it on a schedule with **monitor mode** to capture only newly-issued and just-renewed licenses.

Official source. No login, no API key. Data comes straight from the Florida Department of Business & Professional Regulation (DBPR) public-records extract files (Chapter 119, Florida Statutes).

### Why this Florida license scraper?

Other Florida license tools cover a single board (just contractors, or a one-record verification lookup). This actor unifies **18 DBPR divisions into one schema**, parses every field, scores each lead, and adds renewal-timing and monitor mode:

| Data | Single-board scrapers | This actor |
|---|---|---|
| Professions covered | 1 (usually construction) | ✅ 18 DBPR divisions, one schema |
| Licensee + business / firm name | partial | ✅ both, parsed |
| Full mailing address (street, city, state, ZIP) | partial | ✅ |
| License number, type code **+ human label** | code only | ✅ |
| Status (active / inactive) + `isActive` flag | ❌ | ✅ |
| Original-issue & **expiration date** | ❌ | ✅ (renewal-timing leads) |
| Real-estate **employing broker / affiliation** | ❌ | ✅ |
| Lead score (0–100) + signals | ❌ | ✅ |
| Renewal / new-license / city / type filters | ❌ | ✅ |
| Monitor mode (only new / changed) | ❌ | ✅ |

### Who buys Florida license data

- **Contractor & trade vendors** — building-materials suppliers, equipment/tool dealers, software (ServiceTitan, Buildertrend, Jobber), surety bonds & contractor insurance, lead-gen marketplaces, and private-equity roll-ups targeting Florida HVAC/plumbing/roofing/electrical contractors.
- **Real estate** — brokerage recruiters, CRMs, transaction & marketing tools, title/escrow, mortgage, and coaching targeting Florida agents, brokers, appraisers and CAM firms.
- **Veterinary & cosmetology** — practice-management software, distributors, staffing and franchise developers.
- **Professional services** — continuing-education (CE) providers, E\&O/professional-liability insurance, compliance and association marketing — all driven by **license expiration dates**.
- **Researchers & data teams** — firmographic enrichment, market sizing, and territory planning for the Florida economy.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **Florida License Leads Scraper**, choose one or more **divisions** (professions), add any filters, and click **Start**.
3. Watch license leads stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

> Keep the default **Residential (US) proxy** — Florida DBPR blocks datacenter IPs. Each selected division downloads its full official extract file, so add only the professions you need.

### Input

```json
{
    "divisions": ["construction", "real-estate", "community-association-managers"],
    "statusFilter": "active",
    "cities": ["Miami", "Orlando", "Tampa"],
    "expiringWithinDays": 120,
    "withBusinessNameOnly": true,
    "sortBy": "expirationSoon",
    "maxResults": 5000
}
```

- **divisions** *(default `["construction"]`)* — which DBPR license rosters to pull: `construction`, `electrical-contractors`, `home-inspectors`, `building-code-administrators`, `real-estate`, `real-estate-firms`, `real-estate-schools`, `appraisers`, `community-association-managers`, `cosmetology`, `barbers`, `veterinary`, `architecture`, `landscape-architecture`, `geologists`, `auctioneers`, `employee-leasing`, `harbor-pilots`.
- **statusFilter** *(default `active`)* — `active`, `all`, or `inactive`.
- **recordTypes** — keep only `individual` and/or `business`.
- **licenseTypeCodes** — filter to DBPR type codes (e.g. `CGC`, `CBC`, `CCC`, `CPC`, `CAC`, `VM`, `CAM`).
- **cities / counties / zipCodes / states** — geographic filters (county names available for real-estate divisions).
- **nameQuery / businessNameQuery** — substring match on names.
- **withBusinessNameOnly / withStreetAddressOnly** — completeness filters.
- **expiringWithinDays** — renewal-timing leads (license expires within N days).
- **issuedAfter** — newly-licensed pros / new businesses (original issue on/after `YYYY-MM-DD`).
- **minLeadScore / sortBy / maxResults / deduplicateResults / includeRawFields** — output controls.
- **monitorMode / monitorKey** — emit only new / changed licenses across runs.
- **proxyConfiguration** — keep the default Residential (US) proxy.

### Output

One clean record per license:

```json
{
    "division": "construction",
    "divisionLabel": "Construction Contractor",
    "category": "Construction & Trades",
    "board": "Construction Industry Licensing Board (CILB)",
    "licenseNumber": "CBC1258845",
    "licenseNumberRaw": "1258845",
    "licenseTypeCode": "CBC",
    "licenseType": "Certified Building Contractor",
    "recordType": "individual",
    "name": "Walters, Dennis D",
    "fullName": "Dennis Walters",
    "firstName": "Dennis",
    "lastName": "Walters",
    "businessName": "Building Concepts Of Tampa Bay, LLC",
    "status": "Active",
    "statusCode": "A",
    "isActive": true,
    "street": "6635 Glencoe Drive",
    "city": "Tampa",
    "state": "FL",
    "zip": "33617",
    "countyCode": "39",
    "fullAddress": "6635 Glencoe Drive, Tampa, FL, 33617",
    "originalIssueDate": "2020-09-16",
    "effectiveDate": "2024-09-16",
    "expirationDate": "2026-08-31",
    "expiresInDays": 71,
    "isExpiringSoon": true,
    "isExpired": false,
    "employingBroker": null,
    "leadScore": 84,
    "leadSignals": ["Business / firm licensee", "License expires 2026-08-31 (renewal window)"],
    "licenseLookupUrl": "https://www.myfloridalicense.com/wl11.asp?mode=0",
    "sourceFile": "CONSTRUCTIONLICENSE_1.csv",
    "scrapedAt": "2026-06-21T12:00:00.000Z"
}
```

Real-estate records additionally include `employingBroker`, `employingBrokerLicenseNumber`, `licenseClass` and a county **name**.

### Monitor mode — only new & changed licenses

Turn on **monitorMode** and the actor remembers every license it has emitted (by license number, status, expiration and address). On the next run it outputs **only newly-issued or changed licenses** — perfect for a steady feed of new contractors, new agents, and just-renewed licenses into your CRM. Each new item carries `monitorStatus: "new" | "changed"`.

Monitor mode is **independent of Apify Schedules** — it dedupes by remembered state, not by time — so you can safely combine it with a [Schedule](https://docs.apify.com/platform/schedules) to run hourly/daily/weekly without re-pulling licenses you already have.

### Automate & schedule

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run daily/weekly with `monitorMode` for a new-license feed.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger CRM import, Slack alert, or an email sequence when a run finishes.

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/florida-license-leads-scraper').call({
    divisions: ['construction', 'real-estate'],
    statusFilter: 'active',
    expiringWithinDays: 120,
    maxResults: 5000,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} Florida license leads`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new licensees straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored search finds new licenses.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "find active Florida roofing contractors in Miami whose license expires in the next 90 days" and let it run this scraper.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More lead-gen scrapers from scrapesage

Build a complete **US licensed-business lead stack**:

- **[US Real Estate License Scraper](https://apify.com/scrapesage/us-real-estate-license-scraper)** — agents, brokers & brokerages (NY, TX, CO).
- **[US Contractor License Scraper](https://apify.com/scrapesage/us-contractor-license-scraper)** — builders & trades across states.
- **[US Professional License Scraper](https://apify.com/scrapesage/us-professional-license-scraper)** — licensed pros from multiple state boards.
- **[Texas Business Leads Scraper](https://apify.com/scrapesage/texas-business-leads-scraper)** — Texas companies by NAICS industry.
- **[US Building Permits Scraper](https://apify.com/scrapesage/us-building-permits-scraper)** — construction & contractor leads from permits.
- **[BuildZoom Scraper](https://apify.com/scrapesage/buildzoom-scraper)** — contractors, licenses, permits & reviews.
- **[US Business Formation Scraper](https://apify.com/scrapesage/us-business-formation-scraper)** — new LLC & company formation leads.
- **[TaxBuzz Scraper](https://apify.com/scrapesage/taxbuzz-scraper)** — tax preparers, CPAs & accountants.
- **[FastExpert Scraper](https://apify.com/scrapesage/fastexpert-agent-scraper)** — real-estate agent leads & reviews.

### Tips

- **Cost & speed**: each division downloads its full official extract. Real estate (individuals) and construction are the largest files; small boards (veterinary, geologists, harbor pilots) are tiny. Pick only the divisions you need.
- **Renewal campaigns**: set `expiringWithinDays` (e.g. 90–120) and `sortBy: "expirationSoon"` to reach licensees right before they renew.
- **New-business feeds**: combine `issuedAfter` with `monitorMode` + a daily Schedule.
- **Firms only**: set `withBusinessNameOnly: true` for B2B company records.

### FAQ

**Which professions are covered?** 18 DBPR divisions: construction & electrical contractors, home inspectors, building-code officials, real-estate sales/brokers/firms/schools/appraisers, community-association managers, cosmetologists, barbers, veterinarians, architects & interior designers, landscape architects, geologists, auctioneers, employee-leasing (PEO) firms and harbor pilots. More can be added on request.

**Does it include phone numbers or emails?** No — the DBPR public-records extracts are official license rolls and publish the licensee/business name, mailing address, license details and dates, but not phone or email. Fields are `null` only when the source doesn't publish them. Pair this with an enrichment step (or another scrapesage actor) to add contact channels.

**Why does it need a residential proxy?** Florida DBPR's file host blocks datacenter IPs. The default Apify Residential (US) proxy makes the official downloads reliable.

**How fresh is the data?** DBPR refreshes the public-records extracts regularly (most divisions daily/weekly). Each run downloads the current file.

**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**Is scraping this data legal?** This actor collects public records that Florida is required to publish under Chapter 119, Florida Statutes. You are responsible for using the data in compliance with applicable laws (e.g. CCPA/GDPR for personal data) and for honoring do-not-contact rules.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests (more DBPR boards, extra fields) are welcome — this actor is actively maintained.

# Actor input Schema

## `divisions` (type: `array`):

Which Florida DBPR license rosters to pull. Each division downloads its full official extract file, so add only what you need (bandwidth scales with selection). Real estate (individuals) and construction are the largest files.

## `statusFilter` (type: `string`):

Which licenses to keep based on status.

## `recordTypes` (type: `array`):

Keep only individuals, only businesses/firms, or both (default).

## `licenseTypeCodes` (type: `array`):

Filter to specific DBPR license-type codes, e.g. CGC, CBC (general/building contractor), CCC (roofing), CPC (plumbing), CAC (A/C), VM (veterinarian), CAM. Leave empty for all types in the selected divisions.

## `cities` (type: `array`):

Keep only licensees in these cities (case-insensitive), e.g. Miami, Orlando, Tampa, Jacksonville.

## `counties` (type: `array`):

Keep only licensees in these counties. County names are available for the real-estate divisions; other divisions expose a raw county code (use cities / zip codes instead).

## `zipCodes` (type: `array`):

Keep only licensees in these 5-digit ZIP codes.

## `states` (type: `array`):

Keep only licensees with these state codes (most are FL; some hold Florida licenses from out of state).

## `nameQuery` (type: `string`):

Keep only records whose licensee name, full name or business name contains this text.

## `businessNameQuery` (type: `string`):

Keep only records whose business / firm name contains this text (e.g. a franchise or company name).

## `withBusinessNameOnly` (type: `boolean`):

Keep only licensees that have an associated company name (B2B firms).

## `withStreetAddressOnly` (type: `boolean`):

Drop records that only have a city/ZIP (no street).

## `expiringWithinDays` (type: `integer`):

Keep only licenses that expire within this many days — ideal for renewal-timing and CE / insurance prospecting.

## `issuedAfter` (type: `string`):

Keep only licenses originally issued on/after this date — find newly-licensed pros and new businesses.

## `minLeadScore` (type: `integer`):

Keep only records with a lead score (0–100) at or above this value.

## `sortBy` (type: `string`):

Ordering of the (capped) output.

## `maxResults` (type: `integer`):

Maximum number of license records to output (after filtering & sorting).

## `deduplicateResults` (type: `boolean`):

Collapse duplicate rows by license number + name (recommended).

## `includeRawFields` (type: `boolean`):

Attach the raw DBPR record (sourceFields) to each output item for full transparency.

## `monitorMode` (type: `boolean`):

Remember licenses across runs and emit only NEW or CHANGED ones (status, expiration or address change). Great for tracking newly-issued and just-renewed licenses. Works independently of Apify Schedules — use a Schedule to run it on a cadence.

## `monitorKey` (type: `string`):

Namespace for monitor memory. Use a distinct key per saved search so their states don't collide.

## `proxyConfiguration` (type: `object`):

Florida DBPR blocks datacenter IPs — keep the default Apify Residential (US) proxy so the official extract files download reliably.

## Actor input object example

```json
{
  "divisions": [
    "construction"
  ],
  "statusFilter": "active",
  "withBusinessNameOnly": false,
  "withStreetAddressOnly": false,
  "sortBy": "leadScore",
  "maxResults": 1000,
  "deduplicateResults": true,
  "includeRawFields": true,
  "monitorMode": false,
  "monitorKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All Florida DBPR license lead records as JSON items in the default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/florida-license-leads-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/florida-license-leads-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call scrapesage/florida-license-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesage/florida-license-leads-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/RcAuvl8pA0oZashGQ/builds/2q55nzy32m0Tm1QP7/openapi.json
