# Florida Business Entity Search — Sunbiz Master & Status (`nexgensignal/florida-business-entity-master-records`) Actor

Every Florida LLC, corporation and partnership on file from the State's official Sunbiz data: bulk lists by city, ZIP, type or formation date, or status lookups by document number or name. No officer names. Part of NexGen Signal — official-source data products

- **URL**: https://apify.com/nexgensignal/florida-business-entity-master-records.md
- **Developed by:** [NexGen Signal](https://apify.com/nexgensignal) (community)
- **Categories:** Lead generation, Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $33.50 / 1,000 florida entity records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Entity Search — Sunbiz Master & Status

**Official source. No API key. Pay per record.**

This actor gives you Florida's corporate register as data. It reads the Florida Department of State, Division of Corporations (Sunbiz) bulk files — the quarterly file that holds every corporation, LLC and partnership on record, plus the daily new-filing files published since — and turns each entity into a clean record: name, Florida document number, filing type, active or inactive status, formation date, Federal Employer Identification Number (when filed), principal and mailing addresses, last filing date, the latest annual reports on file, and the registered agent when that agent is a company.

Use it two ways:

- **Bulk lists** — every active LLC in a ZIP code, every Florida corporation formed in 2024 in Orlando, every active entity whose name contains "ROOFING".
- **Status lookups** — send document numbers or exact entity names and get back each entity's record and status on file. This is the job most people use Sunbiz search for, done in bulk.

The quarterly file dated 10 July 2026 holds **12,808,196 entity records**, of which **4,109,232 are active** — including 2,875,072 active Florida LLCs, 803,593 active Florida corporations, 205,497 active Florida non-profits, 129,514 active foreign LLCs and 70,259 active foreign corporations (counted by this actor's own read of the file on 26 September 2026). The State says: "Quarterly files are generated quarterly in January, April, July, and October. They contain all data on record at the time the file is generated."

**How fresh it is:** status, addresses and annual reports for existing entities are as of the quarterly file (10 July 2026 now; the next is due in October). The daily files published since then only **add newly formed entities** — they do not update the status of older ones. Each record names its file and date.

### Who buys this and for what job

- **KYB, onboarding and vendor-risk teams** checking that Florida businesses exist and are active, in bulk, by document number or name.
- **B2B sales and marketing teams** building lists of active Florida LLCs and corporations by city, ZIP code, type or formation year.
- **Lenders, insurers and merchant-services providers** screening applicants against the State's record.
- **Registered-agent, compliance and formation services** mapping which companies act as agents and for whom.
- **Researchers and data teams** who need the full Florida register as a table rather than one search page at a time.

### Sample output

![Sample output — Florida Business Entity Search (Sunbiz master)](https://api.apify.com/v2/key-value-stores/IXCaMKjxSmUTLHhmq/records/florida-business-entity-master-records.png)

*Real rows from a live run of this actor on 2026-09-26 (active Miami Beach LLCs, quarterly file of 2026-07-10; selected columns). No officer names.*

One full record from a live status lookup, exactly as delivered:

```json
{
  "record_id": "N02000007588:2026-07-10",
  "document_number": "N02000007588",
  "entity_name": "FISHER ISLAND DAY SCHOOL, INC.",
  "status": "Active",
  "filing_type": "DOMNP",
  "filing_type_label": "Domestic Non-Profit Corporation",
  "file_date": "2002-10-03",
  "state_or_country_of_formation": "FL",
  "fei_number": "061650070",
  "principal_address_1": "2 FISHER ISLAND DR.",
  "principal_address_2": null,
  "principal_city": "MIAMI BEACH",
  "principal_state": "FL",
  "principal_zip": "33109",
  "principal_country": "US",
  "mailing_address_1": "2 FISHER ISLAND DR.",
  "mailing_address_2": null,
  "mailing_city": "MIAMI BEACH",
  "mailing_state": "FL",
  "mailing_zip": "33109",
  "mailing_country": "US",
  "last_transaction_date": "2013-05-23",
  "annual_reports": [
    {
      "year": 2026,
      "filed": "2026-02-06"
    },
    {
      "year": 2026,
      "filed": "2026-02-06"
    },
    {
      "year": 2025,
      "filed": "2025-04-02"
    }
  ],
  "registered_agent_is_company": false,
  "registered_agent_company_name": null,
  "registered_agent_company_address": null,
  "registered_agent_company_city": null,
  "registered_agent_company_state": null,
  "registered_agent_company_zip": null,
  "officers_listed": 6,
  "more_than_six_officers": true,
  "source_file": "cordata.zip/cordata8.txt",
  "source": "Florida Department of State, Division of Corporations — quarterly corporate data file (all records on file) plus daily corporate data files (Sunbiz data downloads, https://dos.fl.gov/sunbiz/other-services/data-downloads/)",
  "licence": "Florida public record (Chapter 119, Florida Statutes). The Division of Corporations offers these downloads free of charge; it publishes the login for public use and states no reuse restriction.",
  "attribution": "Source: Florida Department of State, Division of Corporations (Sunbiz); reformatted by NexGen Signal.",
  "observed_at": "2026-09-26T18:18:34Z",
  "data_as_of": "2026-07-10",
  "record_source": "quarterly file of 2026-07-10"
}
```

### Pricing

| Apify plan | Price per record |
|---|---|
| Free | $0.05 |
| Bronze | $0.045 |
| Silver | $0.04 |
| Gold and above | $0.0335 |

You pay only for records delivered to your dataset. Filtering is free, and a lookup that finds nothing costs nothing. The `maxRecords` limit caps what a run can cost: 500 records cost $25 on the Free plan.

### Input

| Field | What it does | Default |
|---|---|---|
| `documentNumbers` | Status lookup by Florida document number, e.g. `P26000046350`, `L12000088480` | none |
| `names` | Status lookup by exact entity name. Case, commas, periods and apostrophes are ignored, so `Opengear Inc` finds `OPENGEAR, INC.` | none |
| `status` | `active`, `inactive` or `any` | `active` for lists, `any` for lookups |
| `filingTypes` | `FLAL` Florida LLC, `DOMP` Florida corporation, `DOMNP` Florida non-profit, `FORL` foreign LLC, `FORP` foreign corporation, `FORNP` foreign non-profit, `DOMLP`/`FORLP` limited partnerships, `NPREG`, `TRUST`, `AGENT` | all |
| `cities` | Principal-address cities, e.g. `MIAMI`, `ORLANDO` | all |
| `zipPrefixes` | Principal ZIP prefixes, e.g. `331` or `32801` | all |
| `nameContains` | Only names containing this text, e.g. `ROOFING` | none |
| `formedFrom`, `formedTo` | Formation filing date range (YYYY-MM-DD) | none |
| `includeNewFilings` | Also read the daily new-filing files published after the quarterly file (newest first) | true |
| `maxRecords` | Maximum records delivered and billed | 500 |

Example — the Store example: ten active Florida LLCs in Miami, newest formations first ($0.50 on the Free plan):

```json
{"status": "active", "filingTypes": ["FLAL"], "cities": ["MIAMI"], "maxRecords": 10}
```

Example — active Miami Beach LLCs from the quarterly file only:

```json
{"includeNewFilings": false, "cities": ["MIAMI BEACH"], "filingTypes": ["FLAL"], "maxRecords": 1000}
```

(1,000 records in under 10 seconds in testing.)

Example — status lookup:

```json
{"documentNumbers": ["N02000007588", "P26000046350"]}
```

### Output

| Field | Meaning |
|---|---|
| `record_id` | `document_number:data_as_of` |
| `document_number` | Florida document number, the State's unique entity ID |
| `entity_name` | Entity name as filed |
| `status` | Active or Inactive, as on file |
| `filing_type`, `filing_type_label` | State filing-type code and its meaning |
| `file_date` | Formation filing date |
| `state_or_country_of_formation` | Where the entity was formed |
| `fei_number` | Federal Employer Identification Number, when filed |
| `principal_*`, `mailing_*` | Principal and mailing address (line 1, line 2, city, state, ZIP, country) |
| `last_transaction_date` | Date of the last filing on record |
| `annual_reports` | Up to three annual reports on file (year, filed date), as the State lists them |
| `registered_agent_is_company` | True when the agent is a company, false when it is an individual |
| `registered_agent_company_*` | Agent name and address — companies only |
| `officers_listed`, `more_than_six_officers` | How many officers the State lists (names are never delivered) |
| `data_as_of`, `record_source` | The date of the State file the record came from, and whether it was the quarterly file or a daily new-filing file |
| `source_file`, `source`, `licence`, `attribution`, `observed_at` | Provenance on every record |

Values are delivered as the State publishes them, trimmed of padding; dates are converted to ISO format.

### Cost guidance

Lists: the full active register is about 4.1 million records, so nobody should pull it unfiltered by accident — keep `maxRecords` set and filter by type, city, ZIP or formation date. A single city can be large: in testing, the first 1,000 active Miami Beach LLCs were found within the first 4% of the file. Lookups: you pay only for entities found.

### How a run works

The actor connects to the State's data server (sftp.floridados.gov) with the public login the Division prints on its data-downloads page. It first reads the daily new-filing files published after the quarterly file, newest first, then streams the quarterly file — about 1.8 GB compressed and 18 GB of text — without ever holding it in memory. The State splits that file into ten parts by the last digit of the document number, so a document-number lookup reads only the parts it needs. Each 1,440-character row is parsed by the State's published field positions. Records are pushed to your dataset first and charged only after they are delivered; if you set a maximum charge, the run stops cleanly when it is reached. Every run saves a receipt (`RUN_RECEIPT`) with rows read per file, the quarterly file date, charges versus deliveries, and any document numbers that were not found. If the State's server cannot be reached after retries, the run ends with a clear message and nothing is charged.

Timing in testing: the ten-record Store example finishes in seconds; a list filtered by city finishes in seconds; a lookup of a few document numbers about 2 minutes; name lookups and filters that must read the whole file (such as `nameContains`) take about 4–7 minutes.

### Honest limitations

- **Status is as of the quarterly file.** Changes to existing entities — dissolutions, reinstatements, new annual reports — reach this data when the State publishes its next quarterly file (the current one is dated 10 July 2026). The daily files only add entities formed since then. For a same-day status confirmation, check sunbiz.org.
- **No officer names, and no individual registered agents.** The State's file lists officers and a registered agent, who are often private individuals. This actor never delivers officer names or addresses and delivers the registered agent only when the State marks it as a company. You still get how many officers are listed.
- **Addresses are the entity's own.** Principal and mailing addresses are delivered as filed; for a one-person business this can be a home address. Entity names are delivered as filed, and some owners name their LLC after themselves.
- **Exact-name lookups are exact.** "Opengear Inc" finds "OPENGEAR, INC.", but "Opengear" alone does not; use `nameContains` for partial matches.
- **FEI numbers appear only when filed.**
- **The data is the State's, as-is,** including its occasional duplicates, such as the same annual report listed twice.

### Licence and attribution

These are Florida public records (Chapter 119, Florida Statutes). The Division of Corporations offers the downloads free of charge — in its words, "The Division of Corporations offers free data downloads for informational purposes" — and publishes the login for anyone to use; it states no restriction on reuse. Every record carries the credit: *Source: Florida Department of State, Division of Corporations (Sunbiz); reformatted by NexGen Signal.* This actor is not affiliated with or endorsed by the State of Florida.

### Differentiation

Most Florida Sunbiz actors on the Store run searches against sunbiz.org. This one reads the Division's own bulk files instead: the whole register in one place, bulk status lookups, stable document numbers as keys, and no person data to manage downstream.

### The NexGen Signal family

Part of NexGen Signal — official-source data products, no API keys, pay per record. Related actors:

- [UK Company Status Records — Companies House](https://apify.com/nexgensignal/uk-company-status-records)
- [US IRS Exempt Organization Master File](https://apify.com/nexgensignal/us-exempt-organization-master-records)
- [FDA Device Clearance Records](https://apify.com/nexgensignal/fda-device-clearance-records)
- [National Macro Indicator Records — World Bank](https://apify.com/nexgensignal/national-macro-indicator-records)

# Actor input Schema

## `documentNumbers` (type: `array`):

Look up these Florida document numbers (e.g. P26000046350, L25000123456). Returns each entity's record and current status on file. Leave empty for a bulk list.

## `names` (type: `array`):

Look up entities by exact name. Case, commas, periods and apostrophes are ignored, so 'Opengear Inc' finds 'OPENGEAR, INC.'. Name lookups read the whole State file (about 2–4 minutes).

## `status` (type: `string`):

Bulk lists default to active entities only. Lookups default to any status so you see inactive matches too.

## `filingTypes` (type: `array`):

Only these filing types (e.g. FLAL = Florida LLC, DOMP = Florida corporation). Leave empty for all.

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

Only entities whose principal address is in these cities (e.g. MIAMI, ORLANDO). Leave empty for all.

## `zipPrefixes` (type: `array`):

Only principal addresses whose ZIP starts with these digits (e.g. 331 for Miami). Leave empty for all.

## `nameContains` (type: `string`):

Only entities whose name contains this text (not case-sensitive), e.g. ROOFING or DENTAL.

## `formedFrom` (type: `string`):

Optional. Only entities whose formation filing date is on or after this day (YYYY-MM-DD).

## `formedTo` (type: `string`):

Optional. Only entities whose formation filing date is on or before this day (YYYY-MM-DD).

## `includeNewFilings` (type: `boolean`):

Also read the State's daily new-filing files published after the quarterly file, so entities formed since then are included (newest first).

## `maxRecords` (type: `integer`):

Stop after this many records. You are charged per record delivered.

## Actor input object example

```json
{
  "documentNumbers": [],
  "names": [],
  "status": "active",
  "filingTypes": [
    "FLAL"
  ],
  "cities": [
    "MIAMI"
  ],
  "zipPrefixes": [],
  "includeNewFilings": true,
  "maxRecords": 10
}
```

# Actor output Schema

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

The delivered records.

# 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 = {
    "status": "active",
    "filingTypes": [
        "FLAL"
    ],
    "cities": [
        "MIAMI"
    ],
    "maxRecords": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgensignal/florida-business-entity-master-records").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 = {
    "status": "active",
    "filingTypes": ["FLAL"],
    "cities": ["MIAMI"],
    "maxRecords": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("nexgensignal/florida-business-entity-master-records").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 '{
  "status": "active",
  "filingTypes": [
    "FLAL"
  ],
  "cities": [
    "MIAMI"
  ],
  "maxRecords": 10
}' |
apify call nexgensignal/florida-business-entity-master-records --silent --output-dataset

```

## MCP server setup

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

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/jxGvt2Zi6ibx4hYQG/builds/EbGr0ZatvJ5243SeN/openapi.json
