# Sunbiz Scraper (`automation-lab/florida-sunbiz-business-search`) Actor

Search Florida Sunbiz and export business identity, status, filing, registered-agent, officer, address, annual-report, and filing-document records for KYB.

- **URL**: https://apify.com/automation-lab/florida-sunbiz-business-search.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Business, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 0.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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Sunbiz Scraper

Search Florida's official Sunbiz registry and export business identity, status, filing, registered-agent, officer, address, annual-report, and filing-document records.

This Actor turns a **sunbiz business search** into structured JSON, CSV, Excel, or API-ready data for Florida KYB verification and company enrichment.

### What does Sunbiz Scraper do?

Sunbiz Scraper searches the Florida Division of Corporations public registry by entity name.

For every matched company, it can open the official entity page and collect:

- official entity name;
- Florida document number;
- active or inactive status;
- entity type and jurisdiction;
- filed and effective dates;
- public FEI/EIN when displayed;
- principal and mailing addresses;
- registered-agent name and address;
- authorized people and officer titles;
- annual-report years and filing dates;
- filing events and official PDF links.

You can also supply official Sunbiz detail URLs when you already know the exact records you need.

### Who is this Florida business search for?

**KYB and compliance teams** can verify that a Florida entity exists and review its current public status.

**Sales and enrichment teams** can add registry identifiers, addresses, agents, and officers to company records.

**Researchers and analysts** can export search results without manually opening each entity page.

**Developers and data teams** can schedule the Actor and send normalized records to a database, spreadsheet, or webhook.

Sunbiz data is a public registry source, not a substitute for legal advice or a complete risk assessment.

### Why use this Actor?

The Actor provides one consistent output shape for both business-name searches and exact entity URLs.

It follows official result pagination, deduplicates entities by document number, and respects your requested item limits.

Full-detail mode combines fields that otherwise appear across several sections of each Sunbiz entity page.

A single run can process multiple buyer-supplied names for recurring enrichment workflows.

### What data can I extract?

| Field | Meaning |
| --- | --- |
| `searchQuery` | Name search that discovered the entity; null for a direct URL |
| `entityName` | Official registered entity name |
| `documentNumber` | Florida Division of Corporations document number |
| `status` | Registry status shown by Sunbiz |
| `entityType` | Corporation, LLC, partnership, trademark, or other displayed type |
| `feiEin` | Public FEI/EIN when the registry displays one |
| `dateFiled` | Filing date |
| `effectiveDate` | Effective date |
| `state` | State or jurisdiction code |
| `lastEvent` | Latest displayed filing event |
| `lastEventFiledDate` | Date of that event |
| `principalAddress` | Principal business address |
| `mailingAddress` | Mailing address |
| `registeredAgentName` | Public registered-agent name |
| `registeredAgentAddress` | Public registered-agent address |
| `officers` | Authorized people, titles, and addresses |
| `annualReports` | Report years and filed dates |
| `filingDocuments` | Filing-event dates, labels, and official PDF URLs |
| `sourceUrl` | Official entity-detail URL |
| `scrapedAt` | Extraction timestamp |

Fields may be null when Sunbiz does not publish them for a particular entity type.

### How to search Sunbiz business entities

1. Open the Actor input page.
2. Add one or more values to **Business names**.
3. Set **Maximum records** and **Results per name**.
4. Keep **Fetch full entity details** enabled for KYB fields.
5. Start the run.
6. Open the dataset and export JSON, CSV, Excel, XML, or RSS.

A useful first input is:

```json
{
  "searchNames": ["APIFY"],
  "maxItems": 2,
  "maxResultsPerSearch": 2,
  "fetchDetails": true
}
```

### Input parameters

#### `searchNames`

An array of 2–100 character business names or prefixes.

You can submit up to 10 names in one run.

Sunbiz determines the matching order and available results.

#### `startUrls`

Optional official `search.sunbiz.org` entity-detail URLs.

Use this route when a prior workflow already stored exact Sunbiz record links.

Other domains and non-detail Sunbiz URLs are rejected.

#### `maxItems`

Maximum distinct records saved across all searches and direct URLs.

Allowed range: 1–200.

#### `maxResultsPerSearch`

Maximum records accepted from each name search.

Allowed range: 1–100.

#### `fetchDetails`

When true, the Actor opens every entity page and returns the complete supported fields.

When false, it returns the name, document number, status, and source URL from search results without detail enrichment.

### Output example

A full-detail result has this shape:

```json
{
  "searchQuery": "APIFY",
  "entityName": "APIFYCLOUD LLC",
  "documentNumber": "L19000270944",
  "status": "ACTIVE",
  "entityType": "Florida Limited Liability Company",
  "dateFiled": "10/29/2019",
  "state": "FL",
  "principalAddress": "10370 NW 30th Terrace, Doral, FL 33172",
  "registeredAgentName": "Castañeda, Cindy Paola",
  "officers": [
    {
      "title": "President",
      "name": "Cindy, Castañeda Paola",
      "address": "10370 NW 30th Terrace, Doral, FL 33172"
    }
  ],
  "annualReports": [
    { "year": "2026", "filedDate": "03/24/2026" }
  ],
  "filingDocuments": [
    {
      "date": "03/24/2026",
      "event": "ANNUAL REPORT",
      "pdfUrl": "https://search.sunbiz.org/Inquiry/CorporationSearch/GetDocument?..."
    }
  ],
  "sourceUrl": "https://search.sunbiz.org/Inquiry/CorporationSearch/SearchResultDetail?...",
  "scrapedAt": "2026-08-13T20:46:46.065Z"
}
```

Public registry values can change after the example was captured.

### How much does it cost to search Florida Sunbiz businesses?

This is a pay-per-event Actor.

Each run charges one `start` event and one `item` event for every record saved to the dataset.

The one-time start price is **$0.005**. The BRONZE item price is **$0.00968 per saved record**, with distinct plan-tier discounts shown on the Actor page.

Your total Actor charge is:

```text
$0.005 start + (saved records × your plan's item price)
```

At BRONZE, 1 saved business costs **$0.01468**, 10 cost **$0.10180**, and 100 cost **$0.97300** in Actor charges.

No item event is charged for a rejected, duplicate, or failed record.

Full-detail fields and filing links are included in the same item event; they are not separate charged records.

Residential proxy and compute costs are paid by the Actor owner under PPE pricing.

### Tips and limits

Use specific names when you need a precise KYB match.

Use `maxResultsPerSearch` to prevent a broad prefix from consuming the complete run limit.

Keep `fetchDetails` enabled when agent, officer, address, or history fields matter.

Disable it only when search-result identity and status fields are sufficient.

The source allows at most 20 visible records per result list; the Actor follows the official next-list links when your limit is higher.

The Actor uses a US residential browser session because the official site applies automated-traffic verification.

A source challenge, timeout, or changed page structure causes a failed run instead of silently returning an empty dataset.

### KYB and enrichment workflows

#### One-time Florida entity verification

Search a legal name, confirm the document number and status, and retain the official source URL with your case record.

#### Scheduled company enrichment

Store a list of names in an Apify Task, schedule weekly or monthly runs, and merge results by `documentNumber`.

#### Registered-agent research

Export `registeredAgentName` and `registeredAgentAddress` for entities returned by your supplied searches.

#### Filing-history review

Use `annualReports` and `filingDocuments` to identify available public events and link reviewers to official documents.

#### Data warehouse ingestion

Use the dataset API or webhook integration to load records into BigQuery, Snowflake, PostgreSQL, or another destination.

### Run with the Apify API

Replace `YOUR_TOKEN` with an Apify API token.

#### cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~florida-sunbiz-business-search/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchNames":["APIFY"],"maxItems":2,"fetchDetails":true}'
```

#### JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/florida-sunbiz-business-search').call({
  searchNames: ['APIFY'],
  maxItems: 2,
  fetchDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/florida-sunbiz-business-search').call(
    run_input={
        'searchNames': ['APIFY'],
        'maxItems': 2,
        'fetchDetails': True,
    }
)
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### Use with MCP and AI agents

Add the Actor to Claude Code through Apify MCP:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=automation-lab/florida-sunbiz-business-search"
```

#### Claude Desktop

Add this server object to the Claude Desktop MCP configuration:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=automation-lab/florida-sunbiz-business-search"
    }
  }
}
```

#### Cursor

Open **Cursor Settings → MCP → Add server** and use the same Apify MCP URL shown above.

#### VS Code

Add the same HTTP server URL to your VS Code MCP configuration and name it `apify`.

Example prompts:

- "Search Florida Sunbiz for APIFY and return active entities with registered agents."
- "Extract this Sunbiz entity URL and summarize the latest filing event."
- "Run my Florida company list and save document numbers and statuses."

### Integrations

Connect the completed run to Google Sheets for analyst review.

Send a webhook when scheduled entity checks finish.

Use Make, Zapier, n8n, or the Apify API to start runs from an onboarding workflow.

Export the default dataset to CSV or Excel without changing the Actor input.

Join records across runs using `documentNumber`, not the mutable company name.

### Responsible use and legality

This Actor accesses public pages from the Florida Division of Corporations.

Use the output only for lawful purposes and follow applicable privacy, data-protection, and anti-discrimination requirements.

Registry records can be incomplete, delayed, amended, or entered by filers.

Verify important decisions against the current official source record.

Do not treat an active status as proof of creditworthiness, beneficial ownership, licensing, or regulatory approval.

You are responsible for your downstream retention and use of personal information in public filings.

### Troubleshooting

#### Why did my run fail during browser startup?

Confirm the run has normal Apify Proxy access and at least the configured 1024 MB memory.

The Actor requires an authenticated US residential proxy session.

#### Why did a name return unexpected matches?

Sunbiz controls its own name ordering and prefix behavior.

Try a longer legal-name prefix, reduce `maxResultsPerSearch`, or provide an exact entity URL.

#### Why is a field null?

Different entity types expose different fields, and older records may not include every value.

Null means the field was not displayed on the official page at extraction time.

#### Why are no PDF files downloaded?

The Actor returns official filing-document links; it does not download or duplicate the PDF files.

### FAQ

#### Can I search multiple Florida businesses?

Yes. Add up to 10 values to `searchNames` and set a shared `maxItems` limit.

#### Can I scrape Sunbiz LLC records?

Yes. LLCs are included when they match your entity-name searches or supplied detail URLs.

#### Does this Actor search by FEI/EIN or officer name?

Not in this release. It supports entity-name search and exact Sunbiz entity-detail URLs.

#### Can I monitor changes?

Schedule repeated runs and compare records in your own workflow by `documentNumber`.

The Actor returns current snapshots; it does not create a separate change-log dataset.

#### Does it download annual-report PDFs?

No. It returns the official PDF URLs shown on each entity page.

#### Is login required?

No Sunbiz account is required.

An Apify account and normal Actor run permissions are required.

### Related automation-lab Actors

For broader US business verification workflows, combine this Actor with our state-specific registry Actors where those sources match your jurisdiction.

Use [Texas Comptroller Entity Scraper](https://apify.com/automation-lab/texas-comptroller-entity-scraper) for Texas taxable-entity status records.

Use [Colorado Business Entity Search Scraper](https://apify.com/automation-lab/colorado-entity-search-scraper) for Colorado entity and registered-agent records.

Each Actor has its own source-specific input and output contract.

# Actor input Schema

## `searchNames` (type: `array`):

Florida entity names or name prefixes to search. Up to 10 searches per run.

## `startUrls` (type: `array`):

Optional official search.sunbiz.org entity-detail URLs to extract directly.

## `maxItems` (type: `integer`):

Maximum distinct business records saved across all searches and URLs.

## `maxResultsPerSearch` (type: `integer`):

Maximum records collected for each business-name search.

## `fetchDetails` (type: `boolean`):

Open each entity page to collect filing, address, registered-agent, officer, annual-report, and filing-document fields.

## Actor input object example

```json
{
  "searchNames": [
    "APIFY"
  ],
  "startUrls": [],
  "maxItems": 20,
  "maxResultsPerSearch": 20,
  "fetchDetails": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

Florida Sunbiz business records in the overview view.

# 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 = {
    "searchNames": [
        "APIFY"
    ],
    "startUrls": [],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/florida-sunbiz-business-search").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 = {
    "searchNames": ["APIFY"],
    "startUrls": [],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/florida-sunbiz-business-search").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 '{
  "searchNames": [
    "APIFY"
  ],
  "startUrls": [],
  "maxItems": 20
}' |
apify call automation-lab/florida-sunbiz-business-search --silent --output-dataset

```

## MCP server setup

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

```

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/mYrFsgnU3ybS0XiLE/builds/pGNwjTth0fcgsyLcA/openapi.json
