Find newly registered Florida businesses by ZIP code
Every business day the State of Florida publishes the companies formed that day. This guide turns that file into a list of brand-new LLCs (or corporations) in the ZIP codes you sell to: company name, State document number, filing date, principal address and city, mailing city, a company registered agent where there is one, and how many officers are listed. It is for anyone who sells to new businesses in an area: insurance, accounting and payroll, banking, signage, web design, office fit-out.
What you get
From a run on 1 October 2026 with the default settings (Florida LLCs, ZIP codes 33401 and 33480, State daily file of 30 September 2026). Street addresses are delivered too; they are left out of this page.
| document_number | entity_name | file_date | principal_city | principal_zip | officers_listed |
|---|---|---|---|---|---|
| L26000497280 | DUBBYA, HAMMER & KEY, LLC | 2026-09-23 | PALM BEACH | 33480 | 1 |
| L26000496223 | CMG BARINGTON MANAGEMENT LLC | 2026-10-01 | WEST PALM BEACH | 33401 | 1 |
| L26000496475 | RPSTOPCO LLC | 2026-09-23 | PALM BEACH | 33480 | 2 |
The CSV or sheet gets 19 columns: document_number (the State's ID, used to avoid duplicates), entity_name, filing_type_label, status, file_date, posted_date, state_or_country_of_formation, principal address (principal_address_1, principal_address_2, principal_city, principal_state, principal_zip), mailing_city, mailing_state, registered_agent_company_name, fei_number, officers_listed, source_file and last_seen. A second tab, Run log, gets one row per run: when, the run ID, the outcome, records received, records charged and the run's own status message.
Get it in one click
Open the Actor, New Florida Businesses Daily — Sunbiz New LLC & Corp Filings, open it in Apify Console, paste this input into the JSON view of the input and press Start (10 companies, $0.50 on Apify's Free plan):
{"days": 5, "filingTypes": ["FLAL"], "zipPrefixes": ["33401", "33480"], "maxRecords": 10}
FLAL is a Florida LLC; add DOMP for Florida corporations. A ZIP entry can be a full ZIP or its first digits.
Get it from code
The same call from any language (returns the records as JSON; replace the token):
curl -X POST "https://api.apify.com/v2/acts/nexgensignal~florida-new-business-filing-records/run-sync-get-dataset-items?maxTotalChargeUsd=1" \
-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"days": 5, "filingTypes": ["FLAL"], "zipPrefixes": ["33401", "33480"], "maxRecords": 10}'
For a daily list, use the ready-made Python script under Downloads. It keeps a CSV that Excel or Google Sheets opens, remembers the last daily file it read, and never repeats a paid run start on its own:
export APIFY_TOKEN=your_apify_token # Windows: set APIFY_TOKEN=your_apify_token
python florida_new_llcs_to_csv.py --zip 33401 --zip 33480
It writes new_florida_llcs.csv (one row per company, matched on document_number), new_florida_llcs.csv.runlog.csv and a small .state.json file holding the last daily file read. Schedule it with cron or Windows Task Scheduler.
Put it in a Google Sheet every weekday (n8n)
- Get the workflow. In n8n choose Import from URL and paste the workflow link under Downloads (or download the file and use Import from File).
- Add your Apify token. In Apify Console, copy your API token (Settings → API & Integrations). In n8n create a credential of type Header Auth named
Apify API token: NameAuthorization, ValueBearerfollowed by your token. Select it in the five HTTP Request nodes (Get saved run, Start Apify run, Check run, Get run receipt, Get records). - Make the sheet. Create a Google Sheet with two tabs, New Florida LLCs and Run log, and paste the header rows from the two header files under Downloads into row 1 of each tab.
- Point the workflow at it. Paste the sheet's URL into the two Google Sheets nodes and choose your Google credential.
- Choose your area. Open Settings (edit me): ZIP code starts (
zipPrefixes), filing types (FLAL= Florida LLC,DOMP= Florida corporation), the most records per run and a spending cap per run. - Run it once with Execute workflow, check the sheet, then switch the workflow to Active. It runs Monday to Friday at 11:00 (New York time); change the schedule node if you like.
The workflow remembers the newest State daily file it has read in full, so a normal scheduled run asks only for newer files and does not buy the same companies again; if the State has not posted a new file yet, the run reads nothing and costs nothing. A run that stops at its maximum or spending cap does not move that mark: the same day is read again next time, and the companies already saved are charged again (their rows are only updated).
Google Sheets delivery: not yet verified
The workflow's Google Sheets nodes follow n8n 2.41.4's own Google Sheets node definition (append-or-update on document_number; values are written as plain text so numbers such as 00445790 keep their leading zeros), and the file imports into n8n. They have not yet been run against a real Google Sheet. Everything before the sheet has been tested in n8n, including scheduled runs, with a local stand-in that applies the same append-or-update rule. Try it on a copy of your sheet first.
If something is interrupted
- The sheet could not be written. Each run's ID is saved as soon as Apify answers. The next execution collects that same run instead of starting and paying for a new one, and saved progress (the newest daily file read) moves on only after the rows are written. (Tested, including a scheduled run whose sheet write failed.)
- No answer when starting a run. Apify's API offers no way to make starting a run safe to repeat. If no answer comes back, the original request may have started a run; no second start is attempted automatically. The workflow stops with START OUTCOME UNKNOWN until you decide. If Apify Console → Runs shows the run, paste its ID into
resumeRunIdin the settings node: its results are collected without paying again. If no run started, paste the time shown in the message intostartNewAfterUnknown. - Two executions at the same time. If the workflow starts while an earlier execution is still waiting for its run (for example a manual run while a scheduled one is still going), it first asks Apify whether a run of this Actor with the same settings is still going. If one is, it stops with ALREADY RUNNING without starting or paying for anything, and the earlier execution writes those results. A run with the same settings started another way (for example by hand in Apify Console) counts too. (Tested in n8n with two overlapping executions.) The script does not make this check, so don't start it again while an earlier run of it is still going.
- Where the memory lives. The saved run ID and the newest daily file read are kept inside the n8n workflow. Re-importing the workflow resets them (tested); after that the first run reads the newest daily file again, which can re-buy that day.
- The script follows the same rules (
--resume-run RUN_ID,--start-new); after an uncertain start it looks for the run on its next start and reuses it if it finds exactly one.
What it costs
Prices are the Actor's existing pay-per-record prices. There is no start fee for this Actor: a run that finds nothing costs nothing.
| Apify plan | Per company | One run at the default maximum (25) | Illustration only: a month at 5 a day |
|---|---|---|---|
| Free | $0.05 | up to $1.25 | about $5.25 |
| Bronze | $0.045 | up to $1.13 | about $4.73 |
| Silver | $0.04 | up to $1.00 | about $4.20 |
| Gold / Platinum / Diamond | $0.0335 | up to $0.84 | about $3.52 |
The last column is an illustration from three observed days, not a forecast: we counted 7, 5 and 3 new LLCs in ZIPs 33401 and 33480 on 28, 29 and 30 September 2026, about 5 a day, times 21 business days. Real months will differ, and so will your ZIPs: all of Miami's 331 ZIPs had over 200 new LLCs on 30 September alone. Each run also stops at the spending cap in Settings.
De-duplicated rows are not de-duplicated charges. Every company a run delivers is charged, even if it is already in your sheet. That happens when a run stopped at its maximum or cap (that day is read again), when you collect results with the script after the workflow already did, or when the workflow's memory is reset.
When things don't go to plan
| What the run log says | What it means | What the workflow does |
|---|---|---|
complete |
New companies were added or updated | Nothing else to do |
no_match |
The State's file was read in full and nothing matched your ZIPs and types | Nothing charged |
no_new_daily_file_yet |
The State has not posted a newer daily file since the last run | Nothing charged; the next run tries again |
partial |
The run stopped at your spending cap or maximum, so that day may have more companies | The rows received are saved; the same day is read again next time (saved rows are updated, but charged again). Raise the maximum or narrow the ZIPs |
source_unavailable |
The State's server did not answer after retries | Nothing charged; the workflow stops with an error so n8n can alert you |
failed |
The run itself failed (for example an invalid date range) | Stops with an error message that names the run |
Know before you rely on it
- Source date. The Florida Division of Corporations posts one daily file per business day. The default reads newly formed businesses only (formed in the last week, or with a future effective date); turn
newFormationsOnlyoff in the Actor input to include reinstatements and other filings. - No people. Officer names are never delivered (you get how many officers are listed); the registered agent is delivered only when the State marks it as a company.
- Addresses as filed. A one-person business's principal address can be a home address. FEI numbers are usually blank for new entities.
- A filing feed, not a status check. For the current status of a company you already know, use Sunbiz Florida Business Scraper — Company Lists or the State's Sunbiz search.
Links
- Actor: New Florida Businesses Daily — Sunbiz New LLC & Corp Filings
- Apify API reference used: Run Actor, Get run
Downloads
- n8n workflow (import from URL or file; Google Sheets step not yet verified) — save as
n8n-workflow.json - Python script (CSV instead of n8n) — save as
florida_new_llcs_to_csv.py - Header row for the New Florida LLCs tab — save as
sheet-headers-new-florida-llcs.csv - Header row for the Run log tab — save as
sheet-headers-run-log.csv - This tutorial as a web page
Published by NexGen Signal (official-source data products on Apify). Prices are the Actors' existing pay-per-record prices on 1 October 2026; check the Actor page for current prices.