# Florida New Business Leads (Miami-Dade, Broward, Miami) (`open-records-data/florida-new-business-leads`) Actor

Newly licensed and opening-soon businesses in Miami-Dade, Broward and the City of Miami from official business tax receipt feeds, with optional 0-100 lead scores for banks, insurers, POS, signage and suppliers.

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

## Pricing

from $5.00 / 1,000 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/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 New Business Leads API (Miami-Dade, Broward, Miami)

**Find Florida businesses the week they get licensed - or before they open.** This Actor reads the official local business tax receipt feeds of Miami-Dade County, Broward County and the City of Miami and returns clean JSON, CSV or Excel: business name, industry, activity, street address, ZIP, start date and optional 0-100 lead scores. No API keys, no logins, no proxies, no scraping of private data.

A business tax receipt is what a business must hold to operate at a location. So unlike a list of new company registrations (which includes holding companies, shells and home-based paper entities), every record here is a business **with an address, an activity and a start date** - a real prospect for a bank, insurer, payment processor, sign shop, security or cleaning company, supplier or software vendor.

> **At a glance (for people, scripts and AI agents):** input `daysBack`, optional filters (`industries`, `cities`, `zipCodes`, `keywords`, `sources`) and `enrich` for 0-100 lead scores; output is one flat JSON record per new business. Defaults return up to 100 of the newest licensed businesses in seconds. Roughly 800-1,000 new businesses with an address appear across the three feeds each month. From $5 per 1,000 records. Ready-made snippets for MCP, curl, Python and JavaScript are under "Use it from AI agents, code and no-code tools".

### Who it is for

| You sell... | Try this |
|---|---|
| Business banking, merchant services, POS, payroll | Everything new in the last 14 days, `enrich` on |
| Commercial insurance, accounting, legal, bookkeeping | `industries`: `restaurant`, `retail`, `medical`, `construction` |
| Signs, security, cleaning, pest control, uniforms, supplies | `industries` by trade, `cities` or `zipCodes` you serve |
| Restaurant, medical or salon equipment, food distribution | `industries: ["restaurant"]` or `["medical"]`, scored |
| Software, marketing, web design, staffing | Registered companies (`isRegisteredCompany`) sorted by score |
| Commercial real estate brokers, landlords | New tenants by ZIP code, with square footage where published |
| Market analysts, economic developers | Monthly counts by industry and city |

### What you get

| Source | Data | Date used |
|---|---|---|
| Miami-Dade County | Local business tax receipts for every municipality in the county (Miami, Hialeah, Doral, Coral Gables, Miami Beach, unincorporated areas...) with a first-time-business flag | business start date |
| Broward County | Local business tax records for the whole county (Fort Lauderdale, Hollywood, Pompano Beach, Coral Springs...) | business start date |
| City of Miami | City business tax receipts issued since 2018 | receipt issued date |

The county feeds also carry receipts dated a few weeks ahead, so you see **businesses that are about to open**, flagged with `isUpcoming: true`.

Every business has: name (and DBA), industry tags, category, activity description, status, first-time-business flag, start date, tax year, receipt number, street address, city, ZIP, municipality, parcel / folio number, units or square footage where published, coordinates where published, payment status where published, and the owner only when the owner is a company.

### Lead scoring (`enrich: true`)

Turn a raw feed into a ranked prospect list. Every record gets a 0-100 score and plain-language `scoreReasons`, and the best leads come first:

- how new it is (started this week, opening within three weeks, last 30 or 60 days) and whether it is a first-time receipt
- a registered company (LLC, Inc., Corp...) rather than a personal-name registration
- a customer-facing business (restaurant, retail, medical, beauty, fitness, lodging, automotive, education) or an operating business that buys supplies and services
- a larger footprint (several units, or 2,500+ sq ft)
- a street address on file and a paid receipt

The score is a transparent sales-triage heuristic, not a prediction and not a credit signal.

### Quick start - copy one of these inputs

**Everything new in Miami-Dade this fortnight, best prospects first**

```json
{
  "sources": ["miami-dade"],
  "daysBack": 14,
  "enrich": true,
  "maxResults": 300
}
```

**New restaurants and cafes across South Florida**

```json
{
  "industries": ["restaurant"],
  "daysBack": 45,
  "enrich": true,
  "maxResults": 200
}
```

**New businesses in the ZIP codes you serve**

```json
{
  "zipCodes": ["33131", "33132", "33133", "33137"],
  "daysBack": 60,
  "maxResults": 500
}
```

**New construction trades (roofing, plumbing, electrical...) in Broward**

```json
{
  "sources": ["broward"],
  "industries": ["construction"],
  "daysBack": 60,
  "maxResults": 500
}
```

Run with the defaults to get up to 100 of the newest businesses, shared evenly across the three feeds.

### Input

| Field | Default | Notes |
|---|---|---|
| `sources` | all | `miami-dade`, `broward`, `miami-city` |
| `daysBack` | 30 | 1-365; businesses whose start / issue date is in the window (plus receipts dated ahead) |
| `industries` | - | any of: `restaurant`, `retail`, `medical`, `beauty-wellness`, `fitness`, `construction`, `home-services`, `real-estate`, `legal`, `finance-insurance`, `professional-services`, `technology`, `automotive`, `lodging-hospitality`, `education-childcare`, `transportation-logistics`, `wholesale-import-export`, `manufacturing`, `nonprofit` |
| `cities` | - | city or municipality names; partial names match |
| `zipCodes` | - | 5-digit ZIP codes |
| `keywords` | - | keep businesses whose name, category, activity or address mentions any keyword |
| `activeOnly` | true | skip canceled, closed and inactive receipts |
| `requireAddress` | true | skip records with no street address (about half of Broward's very newest records are still missing one) |
| `dedupe` | true | a business inside the City of Miami can appear in both the county and city feeds; keep the first copy |
| `enrich` | false | adds scores and reasons; billed at the scored-lead rate |
| `maxResults` | 100 | hard cap on returned **and billed** records (max 5,000); your run's maximum-charge setting is honoured too |

### Output example (abridged)

```json
{
  "recordType": "business", "source": "miami-dade", "jurisdiction": "Miami-Dade County, FL",
  "businessName": "SUMMIT BROTHERS ROOFING LLC", "ownerName": "SUMMIT BROTHERS ROOFING LLC", "ownerType": "entity",
  "industry": "construction", "industries": ["construction"],
  "category": "SPECIALTY BUILDING CONTRACTOR", "activity": "ROOFING",
  "status": "Active", "isActive": true, "isNewBusiness": true, "isUpcoming": true, "isRegisteredCompany": true,
  "startDate": "2026-09-29", "daysSinceStart": -10,
  "address": "13400 SW 120 ST STE 5", "city": "MIAMI", "zip": "33186", "municipality": "UNIN DADE COUNTY",
  "units": 5, "paymentStatus": "Paid In Full", "score": 85,
  "scoreReasons": ["opening within 10 days", "first-time business tax receipt", "registered company", "industry: construction", "larger footprint", "street address on file", "receipt paid"]
}
```

Also written, to the run's key-value store: a `SUMMARY` record with the date window, counts per source (fetched, after de-duplication, after filters), warnings, and whether the run stopped at your spending limit.

### Use it from AI agents, code and no-code tools

The Actor is built to be called by machines: a run with the defaults finishes in seconds, every input has a safe default, every field is documented below, and the output is flat, typed JSON with a stable schema. There is no login, proxy or browser to configure.

**AI agents (MCP).** Add the Apify MCP server and expose just this Actor as a tool:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=open-records-data/florida-new-business-leads"
    }
  }
}
```

Works with Claude, Cursor, VS Code and any MCP client. Sign in with OAuth, or send an `Authorization: Bearer <APIFY_TOKEN>` header. Then just ask, for example: *"Which restaurants got licensed in Broward in the last two weeks?"* or *"List new medical practices in ZIP 33131, best prospects first."*

**HTTP API (one call, JSON back):**

```bash
curl -X POST "https://api.apify.com/v2/acts/open-records-data~florida-new-business-leads/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"industries":["restaurant"],"daysBack":30,"enrich":true,"maxResults":50}'
```

**Python:**

```python
from apify_client import ApifyClient

client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("open-records-data/florida-new-business-leads").call(
    run_input={"cities": ["Doral", "Hialeah"], "daysBack": 30, "enrich": True, "maxResults": 100}
)
for biz in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(biz["score"], biz["businessName"], biz["address"], biz["industry"], biz["scoreReasons"])
```

**JavaScript:**

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('open-records-data/florida-new-business-leads')
    .call({ industries: ['medical', 'beauty-wellness'], daysBack: 21, maxResults: 200 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

**Schedules and integrations.** Put it on a daily or weekly schedule, then send results anywhere: Google Sheets, Airtable, Slack or e-mail via Apify integrations, Zapier, Make or n8n, or a webhook into your CRM. A scheduled run with `daysBack: 7` gives you each week's new prospects.

**Tips for agents.**

- Start with the defaults and a small `maxResults` (10-20) to see the shape of the data, then widen.
- Use `industries`, `cities` and `zipCodes` to narrow the result instead of downloading everything and filtering yourself.
- Skip `enrich` when you only need raw records: it costs more per record but ranks the results and explains the ranking.
- `isUpcoming: true` marks businesses whose receipt starts in the future (opening soon); `daysSinceStart` is negative for those.
- Run totals, per-source counts, the date window and any per-source warnings are in the `SUMMARY` record of the run's key-value store. Check it if a source returns fewer records than expected.
- Records are public-record data with owners' personal data removed. Do not use them for tenant screening, credit, insurance underwriting or employment decisions.

### Output fields

| Field | Type | Meaning |
|---|---|---|
| `recordType` | `business` | Always `business` |
| `source`, `jurisdiction` | string | `miami-dade`, `broward` or `miami-city`, and the readable name |
| `businessName`, `dbaName` | string or null | Name on the receipt and the "doing business as" name (Broward) |
| `ownerName`, `ownerType` | string or null, `entity` | `individual` | `unknown` | Name only when the owner is a company or government entity |
| `isRegisteredCompany` | boolean | The business name looks like a registered company (LLC, Inc., Corp...) |
| `industry`, `industries` | string, string\[] | Main industry tag and every matching tag (see the `industries` input for the list) |
| `category`, `classDescription`, `activity`, `naicsCode` | string or null | The county's own classification and activity description |
| `status`, `isActive` | string, boolean or null | Receipt status where published (Miami-Dade, City of Miami) |
| `isNewBusiness` | boolean | First-time receipt (Miami-Dade flag) or started within the last 12 months |
| `startDate`, `closedDate` | `YYYY-MM-DD` | Business start date (City of Miami: receipt issued date) |
| `daysSinceStart`, `isUpcoming` | number, boolean | Days since the start date (negative for opening-soon) and whether it is in the future |
| `taxYear`, `receiptNumber` | number, string | Tax year and the receipt number where published |
| `address`, `city`, `state`, `zip`, `municipality` | string | Business street address, city, state, 5-digit ZIP, municipality |
| `parcelId` | string or null | Parcel / folio number where published |
| `units`, `squareFootage` | number or null | Units (Miami-Dade) or square footage (City of Miami) where published |
| `paymentStatus` | string or null | Miami-Dade receipt payment status |
| `latitude`, `longitude` | number or null | Business location where published |
| `score`, `scoreReasons` | 0-100, string\[] | With `enrich`: lead score and the plain-language reasons |
| `sourceUrl` | string | The official open-data page the record came from |

### Pricing

Pay per event - you only pay for records you actually receive:

- **$5.00 per 1,000 records** (`enrich` off)
- **$20.00 per 1,000 scored lead records** (`enrich` on)
- **$0.005** per run start

Set a maximum charge on the run and it stops there. A weekly run of the newest 300 scored leads costs about $6.

### Privacy by design

This Actor is deliberately **not a contact scraper**.

- No phone numbers or e-mail addresses are collected - the feeds do not publish them.
- Private individuals' names as owners are not returned; owners appear only when the name is a company or government entity. Mailing addresses are dropped.
- The business name is shown as registered on the tax receipt. For sole proprietors and licensed professionals that name can be the person's own name; it is the public business listing the county publishes, and nothing beyond it is added.
- Not for FCRA-regulated uses (tenant screening, credit, insurance underwriting, employment).

### FAQ

**Is this legal?** It reads public records that the counties and the City of Miami publish for reuse through their official open-data services. It is not affiliated with or endorsed by any of them.

**How is this different from a list of new company registrations?** State registration lists include every new LLC, many of them holding companies or paper entities with no location. Business tax receipts belong to businesses that are actually licensed to operate at an address, with an activity description, so the records are much closer to a sales prospect.

**How fresh is the data?** The counties refresh the layers regularly (Miami-Dade and Broward were updated in September 2026 when this was written). The Actor reads the live layers on every run.

**Why do some Broward records have no address?** Broward's newest records sometimes appear before the address is entered. The default `requireAddress: true` skips them; set it to `false` to include them.

**Is a business's start date the opening date?** It is the start date on the tax receipt, which is when the business is licensed to begin. Some businesses open a little later or earlier.

**Is the score a prediction?** No. It is a transparent heuristic for triage: the `scoreReasons` tell you exactly why a record ranks where it does.

**What if a county changes its data?** The Actor reports per-source failures in the `SUMMARY` record and in the log rather than silently returning nothing, and keeps returning data from the other sources.

**Will you add more counties and cities?** Yes - requests for more Florida jurisdictions are welcome. Open an issue on the Issues tab and say which county or city.

### More Florida public-record Actors

- [Florida Building Permits & Code Violation Leads](https://apify.com/open-records-data/florida-building-permits-code-violations) - fresh building permits and open code-violation cases for Miami, Miami-Dade County and Orlando, with optional 0-100 lead scores. Useful alongside this Actor: a new business and a new permit at the same address often point to a build-out in progress.
- [Miami-Dade Property Records API](https://apify.com/open-records-data/miami-dade-property-records) - property facts, FEMA flood zone, permits, violations and a 0-100 prospecting score for any Miami-Dade address or folio. Use it to enrich the business addresses this Actor returns.

### Limitations

- Coverage today is Miami-Dade County, Broward County and the City of Miami; more Florida jurisdictions are on the roadmap.
- Industry tags come from keyword rules over the county's category, activity and business name. Some businesses stay untagged, and a few are tagged with more than one industry.
- Miami-Dade publishes the current tax year's receipts; renewals of long-established businesses are excluded by the start-date window, so results are new or newly relocated businesses.
- Data is only as accurate and complete as each jurisdiction publishes it.

# Actor input Schema

## `sources` (type: `array`):

Miami-Dade County local business tax receipts (all municipalities), Broward County local business tax records, and City of Miami business tax receipts. The same business listed by more than one jurisdiction is returned once.

## `daysBack` (type: `integer`):

Businesses whose receipt start date falls in the last N days. Receipts dated in the next few weeks (businesses opening soon) are included as well.

## `industries` (type: `array`):

Keep only these kinds of business. Leave empty for all. Industry is derived from the county's category, class and activity text and the business name.

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

Keep only businesses in these cities or municipalities, e.g. Miami, Doral, Hialeah, Fort Lauderdale, Coral Springs. Partial names match.

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

Keep only businesses in these 5-digit ZIP codes, e.g. 33131, 33301.

## `keywords` (type: `array`):

Keep only businesses whose name, category, activity or address mentions any of these words, e.g. roofing, restaurant, dental, boutique, logistics.

## `activeOnly` (type: `boolean`):

Skip canceled, closed and inactive receipts.

## `requireAddress` (type: `boolean`):

Skip records with no street address. About half of Broward's very newest records are still missing one; turn this off to include them.

## `dedupe` (type: `boolean`):

A business inside the City of Miami can appear in both the county and city feeds. Keep only the first copy.

## `enrich` (type: `boolean`):

Adds a 0-100 lead score with plain-English reasons (how new, opening soon, customer-facing, registered company, footprint) and sorts the best leads first. Billed at the higher scored-lead rate.

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

Upper bound on records returned and billed. Your run's maximum-charge setting is honoured too, so you can never be billed more than you set.

## Actor input object example

```json
{
  "sources": [
    "miami-dade",
    "broward",
    "miami-city"
  ],
  "daysBack": 30,
  "activeOnly": true,
  "requireAddress": true,
  "dedupe": true,
  "enrich": false,
  "maxResults": 100
}
```

# Actor output Schema

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

Business records in the run's default dataset.

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

Counts per source, applied filters and warnings.

# 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("open-records-data/florida-new-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("open-records-data/florida-new-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 '{}' |
apify call open-records-data/florida-new-business-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,open-records-data/florida-new-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/agAKfGccPakzCq3C1/builds/xtJWr6acjprTjh6zf/openapi.json
