# Florida New Business Filings - Sunbiz Daily Feed (`fecklesspleb/florida-sunbiz-daily-filings`) Actor

Florida LLC, corporation and DBA filings from the state's official Sunbiz daily data files, published daily including weekends, as clean JSON. Filter by entity type, status, ZIP, city or name keyword. No browser, no search-site scraping.

- **URL**: https://apify.com/fecklesspleb/florida-sunbiz-daily-filings.md
- **Developed by:** [Scott Williams](https://apify.com/fecklesspleb) (community)
- **Categories:** Lead generation, Business, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## Sunbiz Florida New Business Filings: Daily LLC and Corporation Feed

Get the Florida LLCs, corporations, nonprofits and fictitious names (DBAs) from the state's daily filing files, as clean JSON records. The state publishes files on weekends as well as weekdays. The data comes from the **official daily data files** that the Florida Department of State, Division of Corporations publishes for public download. The Actor uses no browser and does not scrape the Sunbiz search website.

Use it to:

- find new Florida businesses for B2B outreach, such as accounting, insurance, banking, web design or payroll services;
- watch a ZIP code or city for new companies;
- track name changes, mergers and other corporate events;
- feed a CRM or spreadsheet automatically every morning.

### What you get from the Sunbiz daily files

| Record type (`recordTypes`) | What it is | Source file |
|---|---|---|
| `corporations` (default) | Corporations, LLCs, nonprofits, limited partnerships and trusts added to the state record that day | daily corporate data file |
| `corporate_events` | Amendments, mergers, conversions, name changes, dissolutions and other filed events | daily corporate event file |
| `fictitious_names` | Fictitious name (DBA) registrations | daily fictitious name file |
| `fictitious_events` | DBA amendments, cancellations, owner and address changes | daily fictitious name event file |

Each corporation record contains:

- document number, name, status, filing type and entity type (llc, corporation, nonprofit, limited_partnership, trust, ...);
- domestic or foreign;
- file date, and last transaction date when the state fills it in (see [Data notes](#data-notes));
- FEI number, when filed;
- principal and mailing address (see [Data notes](#data-notes) about the principal state);
- registered agent, when it is a company;
- officer and manager roles;
- up to three annual report years.

Every record also includes `feedDate`, `sourceFile`, `source`, `attribution` and `retrievedAt`.

**Privacy by design:** this Actor does **not** output personal data of individuals. For officers, managers, registered agents and DBA owners who are people, you get their role (for example "President" or `type: person`), not their name or address. Company officers and registered-agent companies are output in full. DBAs owned only by individuals show city, state, ZIP and county, but not the street. Federal tax lien data is never accessed.

**Responsible use:** small businesses may list a residential address as their principal or mailing address. You must follow the FCRA, TCPA and CAN-SPAM, and you must not use this data for consumer eligibility decisions (credit, employment, insurance or housing).

### How much does it cost?

Pricing is pay per result, with no start fee and no subscription:

| Result | Price |
|---|---|
| Corporation or fictitious name record | **$2.00 per 1,000 results** ($0.002 each) |
| Corporate or fictitious event record | **$1.00 per 1,000 results** ($0.001 each) |

You are charged only for records written to your dataset. Files, filtered-out records and duplicates are free. `maxResults` and your run's maximum cost per run both stop the run cleanly.

A day's corporate file holds a few thousand records. For example, the 2026-10-27 file had 2,756, which is about $5.51 for the whole file. That is why `maxResults` defaults to **5**, which caps a run at $0.01 for corporation records. An empty input `{}` or the prefilled Console input therefore costs about $0.01. Set a higher number, or `0` for the whole file.

### Input: Florida LLC and corporation filters

With an empty input you get the newest daily corporations file, normally the previous day's filings.

```json
{}
```

New LLCs in the Miami area (ZIPs starting with 331), active only, for one date:

```json
{
  "recordTypes": ["corporations"],
  "date": "2026-10-27",
  "entityTypes": ["llc"],
  "status": "active",
  "zipPrefixes": ["331"],
  "maxResults": 1000
}
```

A week of everything, filtered by name keywords:

```json
{
  "recordTypes": ["corporations", "corporate_events", "fictitious_names", "fictitious_events"],
  "startDate": "2026-10-19",
  "endDate": "2026-10-27",
  "nameKeywords": ["roofing", "construction"],
  "maxResults": 0
}
```

| Field | Meaning |
|---|---|
| `recordTypes` | One or more of `corporations`, `corporate_events`, `fictitious_names`, `fictitious_events`. The default is `corporations`. |
| `date` | One file date, `YYYY-MM-DD`. If both `date` and a range are empty, the newest file is used. |
| `startDate`, `endDate` | A date range of up to 31 days, processed newest first. The state publishes files for weekend days too. A day with no file (for example a state holiday, or a file not published yet) is skipped and listed under `missingDates` in the run summary. |
| `entityTypes` | `llc`, `corporation`, `nonprofit`, `limited_partnership`, `trust`, `registered_agent_designation`, `other`. Applies to corporations only. |
| `filingTypes` | Raw state codes, for example `FLAL` (Florida LLC), `DOMP` (domestic for-profit), `FORL` (foreign LLC). Applies to corporations only. |
| `status` | `any` (default), `active` or `inactive`. Applies to corporation and fictitious name records; event records are not filtered by status. |
| `zipPrefixes` | Keeps records whose ZIP starts with any of these, for example `331` or `33139`. |
| `cities` | Exact city names, case-insensitive. |
| `counties` | Florida county names. Only DBA records carry a county, so setting this drops corporation records. Use `zipPrefixes` or `cities` for corporations. |
| `nameKeywords` | Keeps records whose name contains any of these words, case-insensitive. |
| `maxResults` | Stops after this many charged records. The default is 5, also when the field is left empty or omitted; `0` means no limit. |
| `onlyNewSinceLastRun` | For schedules: continues where earlier runs stopped. Files read to the end are skipped; a file cut short by `maxResults` or the maximum cost is continued after the last charged record, so no record is charged twice. Off by default. |

### Output example

The values below are made up, but the shape and the blank fields match real output from the state's 2026-10-27 file.

```json
{
  "recordType": "corporation",
  "documentNumber": "N26270000005",
  "name": "ORANGE REALTY INC. 5",
  "status": "active",
  "statusCode": "A",
  "filingType": "DOMNP",
  "filingTypeLabel": "Domestic Non-Profit",
  "entityType": "nonprofit",
  "jurisdiction": "domestic",
  "fileDate": "2026-10-27",
  "lastTransactionDate": null,
  "feiNumber": null,
  "homeStateOrCountry": "FL",
  "principalAddress": {"street1": "105 FAKE ST", "street2": null, "city": "NAPLES", "state": null, "zip": "34102", "zip5": "34102", "country": null},
  "mailingAddress": {"street1": "PO BOX 1005", "street2": null, "city": "NAPLES", "state": "FL", "zip": "34102-1234", "zip5": "34102", "country": "US"},
  "registeredAgent": {"type": "entity", "name": "FAKE REGISTERED AGENTS INC", "street": "1 AGENT WAY", "city": "TALLAHASSEE", "state": "FL", "zip": "323010000", "detailsWithheld": false},
  "officers": [
    {"title": "P", "titleLabel": "President", "type": "person", "detailsWithheld": true},
    {"title": "D", "titleLabel": "Director", "type": "entity", "name": "FAKE BOARD CORP", "street": "1 BOARD ST", "city": "NAPLES", "state": "FL", "zip": "341020000", "detailsWithheld": false}
  ],
  "officerCount": 2,
  "moreThanSixOfficers": false,
  "annualReports": [],
  "feedDate": "2026-10-27",
  "sourceFile": "20261027c.txt",
  "source": "Florida Department of State, Division of Corporations (official daily data download)",
  "attribution": "Florida Department of State, Division of Corporations",
  "retrievedAt": "2026-10-29T01:39:03+00:00"
}
```

### Data notes

These come from checking the real daily files from 2026-10-21 to 2026-10-27.

- **Principal state and country are blank in the state's corporate file.** The state leaves these two fields empty in the corporate records, while the principal street, city and ZIP are filled. The Actor keeps them `null` rather than guessing. For the state, use `mailingAddress.state`, which is filled for most records, or `homeStateOrCountry`, the state or country of formation. DBA records do carry a state.
- **`lastTransactionDate` is usually blank.** In the 2026-10-27 file the state filled it in for fewer than 1% of records, mostly existing entities that filed again. For brand-new filings it is `null`; use `fileDate`.
- **`nameChanged` on corporate events** is `true` when the state's name-change flag is set or when the event code or description is a name change (codes ending in `NC`, such as `CORLCNC`, or "NAME CHANGE"). `nameChangeSource` tells you which (`flag` or `eventCode`), and `nameChangeFlag` holds the raw flag.
- Country codes are upper-cased (`Us` becomes `US`). When the second street line only repeats a unit already in the first line (for example `UNIT 105L`, or `304` after `APT 304`), `street2` is `null`.

You can download the dataset as JSON, CSV, Excel or XML, or read it through the Apify API. Each run also saves a `RUN_SUMMARY` record in its key-value store, listing files processed, counts, skipped dates and the stop reason. When a line in a file has the wrong length, a `REJECTS` record lists its file and line number.

### Scheduling: run it after midnight Eastern

The state publishes daily files on weekends as well as weekdays (for example, there were files for Saturday 2026-10-24 and Sunday 2026-10-25). The files usually appear late in the evening, around 10:30 PM Eastern. **Schedule the Actor for after midnight ET**, for example 1:00 AM ET every day, so that the previous day's file is complete.

To avoid paying twice for the same records on a schedule, turn on `onlyNewSinceLastRun`. A run that stops early at `maxResults` or the cost limit is continued by the next run from the next record; no record is charged twice.

### Use it from n8n, Make or Zapier

Run the Actor through the Apify API and read the dataset items:

- with Apify's Make, Zapier or n8n integrations, or
- with a plain HTTP request to the Apify API's "run Actor synchronously and get dataset items" endpoint.

A typical flow: a daily 1:00 AM ET schedule runs the Actor with your filters, then sends the new rows to a CRM or a spreadsheet. The Apify Console's API tab for this Actor shows the exact endpoint URLs.

### FAQ

**Is this every new business in Florida?** It is what the state puts in its daily files. The state describes them as the filings added to its record that day. Use `fileDate` and `filingType` to focus on new entities.

**How current and accurate is the data?** It is exactly what the state publishes, provided "as is". The state warns that in the data files, "data for addresses and listed officers may not reflect the most current information on sunbiz.org because of the limited space in the file." The state's own records are authoritative.

**Why are some officer and owner names missing?** By design, the Actor does not output names, addresses or other details of individual people. It does output company officers, registered-agent companies and entity owners.

**Why did I get 0 results?** Common reasons:

- There is no file for that date (for example a state holiday), or it has not been published yet. The state does publish weekend files.
- Your filters are too narrow.
- `onlyNewSinceLastRun` skipped files that were already processed, or continued files that were partly delivered.

Check the `RUN_SUMMARY` record.

**Does it cost money when nothing matches?** No. Only records written to the dataset are charged, and there is no start fee.

**What happens if the state server is down?** If the state server refuses the connection, does not answer, rejects the login or fails in any other way, the run still succeeds and returns one free row with `recordType: "status"`, `status: "error"` and a message starting "Not charged". Records delivered before the error are kept.

**What happens if my input is invalid?** For example an unknown `recordTypes` value, a bad date, a range over 31 days or a field of the wrong type: nothing is downloaded, no connection is opened, and the run still succeeds with one free row `{"recordType": "status", "status": "error", "errorType": "InvalidInput", "stage": "input", "statusRow": true, "charged": false, "message": "Invalid input, nothing was fetched or charged: <reason>", ...}`. Nothing is charged.

**How long does a small run take?** Runs with `maxResults` from 1 to 100 (including `{}` and the prefilled input) have a time budget: each connection or read step gets 10 seconds, the connection is tried at most twice, no new attempt or file is started after 40 seconds, and the run stops reading at 50 seconds at the latest. Larger runs allow 30 seconds per step and 3 attempts, and stop starting new work 30 seconds before the run timeout. A run stopped by the time budget keeps the records it delivered (and, with `onlyNewSinceLastRun`, its place in the file) and still succeeds; `RUN_SUMMARY` shows the budget under `timeBudget`. If the hard stop cuts a read short, the run also returns the free status row described above.

**How far back can I go?** The state keeps a rolling set of recent daily files on its server, and this Actor reads only what is there. One run can cover up to 31 days.

**Can I search for a specific company by name?** This Actor is a daily feed, not a search engine. `nameKeywords` filters within the daily files.

**Is it legal to use this data for marketing?** Florida publishes this data as public record. You are responsible for how you use it. Calls, texts and emails must comply with the TCPA, the National Do Not Call Registry, CAN-SPAM and the Florida Telemarketing Act. This Actor gives no legal advice.

### Limits

- Data comes only from the official daily files, never from the Sunbiz search site, so there are no detail-page fields such as document images.
- General partnership and quarterly full-snapshot files are not supported.
- Date ranges are limited to 31 days per run.
- Field lengths in the state files are fixed, so long names or addresses can be cut off by the state.

### Data source and attribution

Source: Florida Department of State, Division of Corporations, official daily data downloads. See https://dos.fl.gov/sunbiz/other-services/data-downloads/daily-data/. This Actor is not affiliated with or endorsed by the State of Florida.

# Changelog

This Actor's version history is a separate document: https://apify.com/fecklesspleb/florida-sunbiz-daily-filings/changelog.md

# Actor input Schema

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

Which official daily files to read. Corporations = new and updated corporations, LLCs, partnerships, trusts and registered agent designations. Events = amendments, mergers, dissolutions, reinstatements. Fictitious names = DBAs.

## `date` (type: `string`):

One filing date (YYYY-MM-DD). Leave empty (and leave the range empty) to get the newest file the state has published, normally yesterday's or today's filings. The state publishes files for weekend days too; a date without a file is skipped and listed in the run summary.

## `startDate` (type: `string`):

First filing date of a range (YYYY-MM-DD). Up to 31 days per run. Use instead of Filing date.

## `endDate` (type: `string`):

Last filing date of the range (YYYY-MM-DD). Defaults to the start date.

## `entityTypes` (type: `array`):

Keep only these entity types (corporation records only). Empty = all.

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

Raw state filing type codes, e.g. FLAL (Florida LLC), FORL (foreign LLC), DOMP, FORP, DOMNP, FORNP, DOMLP, FORLP, NPREG, TRUST, AGENT. Empty = all.

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

Active or inactive (for fictitious names, inactive = cancelled or expired). Event records have no status and are not filtered.

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

Keep records whose principal (business) ZIP starts with one of these, e.g. 331 for Miami, 32801 for one ZIP.

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

Exact principal-address city names, case-insensitive, e.g. Tampa, Orlando.

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

Only the fictitious name files have a county. Corporation files do not, so corporation records are dropped when this is set; use ZIP prefixes or cities for corporations.

## `nameKeywords` (type: `array`):

Keep records whose business name contains any of these words (case-insensitive), e.g. roofing, dental, realty.

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

Stop after this many records (default 5, at most $0.01 for corporation records). 0 = no limit: a full day is about 3,000 corporation records, about $6. You are charged per record returned. With onlyNewSinceLastRun, the next run continues where this one stopped.

## `onlyNewSinceLastRun` (type: `boolean`):

For scheduled runs: continue from where earlier runs of this Actor in your account stopped. Files read to the end are skipped; a file cut short by Max results or your max cost per run is continued after the last charged record, so the same record is never charged twice. Progress is saved per daily file in the key-value store florida-sunbiz-daily-filings-state. Off by default: every run then starts at the top of the newest file.

## `debugRawSample` (type: `boolean`):

DEBUG ONLY, for the Actor's maintainers. Saves the first 20 raw lines of each file read (exact bytes as base64, plus a text view and the sliced fields) to the run's key-value store as RAW_SAMPLE\_<file name>. Raw lines can contain personal names and addresses. Off by default.

## Actor input object example

```json
{
  "recordTypes": [
    "corporations"
  ],
  "status": "any",
  "maxResults": 5,
  "onlyNewSinceLastRun": false,
  "debugRawSample": false
}
```

# Actor output Schema

## `records` (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 = {
    "recordTypes": [
        "corporations"
    ],
    "maxResults": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("fecklesspleb/florida-sunbiz-daily-filings").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 = {
    "recordTypes": ["corporations"],
    "maxResults": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("fecklesspleb/florida-sunbiz-daily-filings").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 '{
  "recordTypes": [
    "corporations"
  ],
  "maxResults": 5
}' |
apify call fecklesspleb/florida-sunbiz-daily-filings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fecklesspleb/florida-sunbiz-daily-filings"
        }
    }
}
```

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/cHiXtsV0RYO2HbRaa/builds/R4TEjoT7UabzswDFd/openapi.json
