# Florida Business Leads by Industry (NAICS, Tax Roll) (`finaldynamics/florida-business-leads`) Actor

Florida business leads by industry: businesses by NAICS code, county and ZIP with business name, mailing and physical address and declared equipment value.

- **URL**: https://apify.com/finaldynamics/florida-business-leads.md
- **Developed by:** [Final Dynamics](https://apify.com/finaldynamics) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 businesses

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Florida Business Leads by Industry (NAICS, Tax Roll)

Florida taxes the equipment, furniture and fixtures businesses use, so each county property
appraiser keeps a roll of the business accounts in the county, coded by industry. The Florida
Department of Revenue publishes those rolls. This actor turns them into business leads by industry:
it reads the counties you pick and returns the businesses in the industries you choose: business
name, mailing address, the physical location, the 6-digit NAICS industry code with its official
title, and the declared value of the equipment and leasehold improvements at that location.

Built for B2B marketers who sell to local businesses by trade (equipment financing, commercial
insurance, cleaning, point of sale, signage, uniforms), franchise and site analysts counting
competitors by ZIP code, and anyone who buys "businesses by SIC or NAICS code" lists.

There is no enrichment. The roll has names and addresses, not phone numbers, email addresses or
owner names beyond the account name.

### What you get

One row per business account (one location), with flat fields that drop into Google Sheets or a CRM.

| Field                                                                       | Example                                                                                             |
| --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| `county`, `accountId`                                                       | `Miami-Dade`, `0104766731`                                                                          |
| `naicsCode`, `naicsTitle`                                                   | `238220`, `Plumbing, Heating, and Air-Conditioning Contractors`                                     |
| `naicsSector`, `naicsSectorTitle`                                           | `23`, `Construction`                                                                                |
| `businessName`                                                              | `DECORATORS PLUMBING INC`                                                                           |
| `physicalAddress`, `physicalCity`, `physicalZip`                            | `3612 NE 2 AVE`, `MIAMI`, `33137`                                                                   |
| `mailingAddress`, `mailingCity`, `mailingState`, `mailingZip`               | `3612 NE 2 AVE`, `MIAMI`, `FLORIDA`, `33137`                                                        |
| `mailingOutOfState`                                                         | `false`                                                                                             |
| `equipmentValue`, `leaseholdImprovementsValue`, `totalJustValue`            | `73277`, `null`, `73277`                                                                            |
| `taxableValue`                                                              | `48277`                                                                                             |
| `exemptions`                                                                | `[{"code": "M", "description": "$25,000 Tangible Personal Property Exemption", "valueUsd": 25000}]` |
| `fiduciaryName`, `fiduciaryAddress`, `fiduciaryCity`, `fiduciaryState`, ... | Who receives the tax bill when it is not the business, often `null`                                 |
| `rollYear`, `rollType`, `sourceFile`, `sourceUrl`                           | `2026`, `preliminary`, the county file it came from                                                 |

Also included: `countyNumber`, `altKey`, `fiduciaryCode`, `penaltyRate` and `sourceLastModified`.
Blank fields are `null`, except `exemptions`, which is an empty list, and `mailingOutOfState`, which
is `false` when the mailing state is Florida or blank.

### How to use it

Pick counties and industries and run. The default returns up to 100 businesses with a physical
address in Liberty County.

```json
{
  "counties": ["Hillsborough", "Pinellas", "Pasco"],
  "naicsCodes": ["238220", "238210"],
  "minEquipmentValue": 25000,
  "maxResults": 2000
}
```

**By industry:** `naicsCodes` takes any start of a NAICS code, from 2 to 6 digits. `722` is all food
service and drinking places, `7225` restaurants, `722511` full-service restaurants. The sector
ranges `31-33` (manufacturing), `44-45` (retail) and `48-49` (transportation) work as written. Look
codes up at census.gov/naics.

**By place:** `zipCodes` takes ZIP codes or their first 3 or 4 digits, and `physicalCities` takes
city names as the roll spells them. Both apply to the business location, not the mailing address.

**Bigger operations:** `minEquipmentValue` filters on the declared value of everything the business
reported at that location.

**Whole state:** `"counties": ["all"]` reads all 67 counties in order and stops at `maxResults`.
County names are not case sensitive; `St. Johns`, `Saint Lucie`, `Dade` and `De Soto` also work.

**Clean-up:** `requirePhysicalAddress` (on by default) drops accounts with no location on the roll,
such as utilities that report equipment for the whole county. `excludeGovernment` (on by default)
drops government-owned property. `businessNameContains` and `businessNameExcludes` match text in the
account name.

### Quick start

No code needed; about two minutes from input to spreadsheet.

1. Open the example "Plumbing and HVAC contractors, Miami-Dade FL" on this actor's page, or paste
   one of the inputs above into the input form.
2. Click **Start** and wait until the run shows **Succeeded**.
3. Open the **Output** tab to see the businesses as a table.
4. Click **Export**, choose CSV or Excel, and download the file.
5. In Google Sheets, choose **File > Import > Upload** and select the file.

### Automate it

**A prospect list that follows the roll:** save your counties and NAICS codes in a task. Click
**Save as a new task**, then add a schedule for that task under **Schedules** in Apify Console (for
example every Monday at 07:00). The roll is republished twice a year (preliminary in July, final
from October), so a monthly schedule is enough.

**Into Google Sheets with n8n:** add the **Apify** node with the **On new Apify Event** trigger,
choose your task and the succeeded event, then add an **Apify** node with **Get Dataset Items**
using the run's `defaultDatasetId`, and finish with a **Google Sheets** node that appends the rows.
Every scheduled run then adds its businesses to the same sheet. Make and Zapier have Apify
integrations that work the same way.

### Pricing

Pay per event. There are no platform usage charges on top.

| Event         |  Price | When                       |
| ------------- | -----: | -------------------------- |
| `actor-start` |  $0.01 | Once per run               |
| `business`    | $0.002 | Per business row delivered |

Examples: the 329 plumbing and HVAC contractors (`238220`) with a location in Miami-Dade cost $0.67.
1,000 businesses cost $2.01. A run that matches nothing costs $0.01.

Set a maximum charge on the run for a hard ceiling; the actor stops cleanly at the cap and never
delivers a row it has not charged for.

### Good to know

- The source is the Department of Revenue's published NAP (name, address, personal property) files,
  downloaded straight from floridarevenue.com. Names, codes and values are what the county property
  appraiser submitted, abbreviations and typos included.
- The roll lists businesses that file a tangible personal property return or that the appraiser
  assesses, so very small or home-based businesses can be missing, and a business with several
  locations can appear once per location.
- The NAICS code is whatever the county has on the account; the roll does not say who assigned it.
- `businessName` is the account name, which is sometimes the owner company's legal name rather than
  the sign over the door.
- This is a snapshot as of the roll date. Businesses that opened after January 1 are not on this
  year's roll, and some that closed still are. Each year the preliminary roll arrives in July and
  the final roll from October.
- The actor is not affiliated with the Florida Department of Revenue or any county.

### FAQ

**How do I get a list of businesses by NAICS code in Florida?**

Pick counties and put the NAICS code or its first digits in `naicsCodes`, for example `722` for
restaurants and bars or `238220` for plumbing and HVAC contractors.

**Is this a list of new businesses?**

No. It lists businesses on the current tax roll, established and new. Businesses that opened after
January 1 appear on the next year's roll.

**Does it include phone numbers or emails?**

No. The roll has the business name, mailing address and location only.

### Related actors

- [Store Locator Scraper with Change Detection](https://apify.com/finaldynamics/store-locator-scraper-change-detection):
  every location of a brand, with openings and closures.
- [New Homeowner & Business Leads (Certificates of Occupancy)](https://apify.com/finaldynamics/certificate-of-occupancy-leads):
  newly finished homes and business premises.
- [Accela Building Permit Scraper](https://apify.com/finaldynamics/accela-permit-scraper): building
  permits with contractor details from Accela cities and counties.

Questions or a county that does not behave? Open an issue on the actor page and include the input
you used.

# Actor input Schema

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

County names, not case sensitive. St. Johns, Saint Lucie, Dade and De Soto spellings work. Use "all" for all 67 counties; otherwise counties run in the order listed.

## `roll` (type: `string`):

Latest selects the newest listed year, final if non-empty, otherwise preliminary; ignores rollYear. Preliminary/final uses rollYear, or the newest listed year when blank.

## `rollYear` (type: `integer`):

Optional four-digit assessment year for preliminary or final; blank defaults to the newest listed year. An empty or missing folder is a source error.

## `naicsCodes` (type: `array`):

Any of these 2–6 digit NAICS prefixes, such as 722 or 238220. Sector ranges 31-33, 44-45 and 48-49 expand to their two-digit prefixes. Empty means any industry.

## `businessNameContains` (type: `array`):

Keep businesses whose account name contains any of these words, not case sensitive. Leave empty for any name.

## `businessNameExcludes` (type: `array`):

Drop names containing any of these case-insensitive substrings.

## `physicalCities` (type: `array`):

Keep businesses located in these cities, spelled as on the roll, not case sensitive. Uses the business location, not the mailing address.

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

Any of these 3–5 digit prefixes on the physical ZIP. Empty means any ZIP. Mailing ZIP is not used.

## `requirePhysicalAddress` (type: `boolean`):

Keep only accounts with a location address on the roll (sometimes a road name without a number). Turn off to include accounts reported county-wide, such as utilities.

## `minEquipmentValue` (type: `integer`):

Smallest total declared value in US dollars of furniture, fixtures, equipment and leasehold improvements at the location. Leave empty for no minimum.

## `maxEquipmentValue` (type: `integer`):

Largest total declared value in US dollars of furniture, fixtures, equipment and leasehold improvements at the location. Leave empty for no maximum.

## `excludeGovernment` (type: `boolean`):

Leave out accounts with a federal, state or local government exemption. Other exemptions stay in.

## `ownerLocation` (type: `string`):

Where the business's mailing address is: any, out of state (another state or a foreign country), or in state (Florida). Accounts with no mailing state on the roll match neither out of state nor in state.

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

Maximum business account rows across all counties. The active download is cancelled at this result limit or the run charge limit.

## Actor input object example

```json
{
  "counties": [
    "Liberty"
  ],
  "roll": "latest",
  "naicsCodes": [],
  "businessNameContains": [],
  "businessNameExcludes": [],
  "physicalCities": [],
  "zipCodes": [],
  "requirePhysicalAddress": true,
  "excludeGovernment": true,
  "ownerLocation": "any",
  "maxResults": 100
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

# 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 = {
    "counties": [
        "Liberty"
    ],
    "roll": "latest",
    "naicsCodes": [],
    "businessNameContains": [],
    "businessNameExcludes": [],
    "physicalCities": [],
    "zipCodes": [],
    "requirePhysicalAddress": true,
    "excludeGovernment": true,
    "ownerLocation": "any",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("finaldynamics/florida-business-leads").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 = {
    "counties": ["Liberty"],
    "roll": "latest",
    "naicsCodes": [],
    "businessNameContains": [],
    "businessNameExcludes": [],
    "physicalCities": [],
    "zipCodes": [],
    "requirePhysicalAddress": True,
    "excludeGovernment": True,
    "ownerLocation": "any",
    "maxResults": 100,
}

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

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

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

```

## CLI example

```bash
echo '{
  "counties": [
    "Liberty"
  ],
  "roll": "latest",
  "naicsCodes": [],
  "businessNameContains": [],
  "businessNameExcludes": [],
  "physicalCities": [],
  "zipCodes": [],
  "requirePhysicalAddress": true,
  "excludeGovernment": true,
  "ownerLocation": "any",
  "maxResults": 100
}' |
apify call finaldynamics/florida-business-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,finaldynamics/florida-business-leads"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/mbHCPDWXSwMXpf2Pa/builds/vEAKiLYKYiViwgUFz/openapi.json
