# Sunbiz Florida Business Record Scraper (`muhammadafzal/sunbiz-florida-business-scraper`) Actor

Read-only Florida Sunbiz business scraper. Search by company name, FEI/EIN, officer, registered agent, address, or ZIP and return structured public registry records.

- **URL**: https://apify.com/muhammadafzal/sunbiz-florida-business-scraper.md
- **Developed by:** [Muhammad Afzal](https://apify.com/muhammadafzal) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 66.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 florida business records

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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 Florida Business Scraper

**Sunbiz Florida Business Scraper** reads the public Florida Division of Corporations registry and returns one structured business record per dataset item. It is designed for company research, KYC preparation, lead-list verification, compliance workflows, and registry monitoring.

The actor uses the official `search.sunbiz.org` read-only search and detail pages. It never submits filings, annual reports, reinstatement requests, registered-agent changes, payments, or other state-changing forms.

Pricing is **$0.00005 per Actor start** plus **$0.005 per delivered business record**. With `maxResults: 25`, result events are capped at **$0.125**, before the startup event. The fast prefilled health check requests one record without annual-report history and is designed to complete within Apify's five-minute automated-test envelope. Larger batches can be requested explicitly; the default run is configured with 1 GB memory and a five-minute timeout.

### Extracted fields

| Field | Description |
| --- | --- |
| `entityName`, `filingType`, `documentNumber`, `status` | Core Florida registry identity |
| `feiEin`, `dateFiled`, `state`, `lastEvent` | Public filing metadata when available |
| `principalAddress`, `mailingAddress` | Public business addresses |
| `registeredAgentName`, `registeredAgentAddress` | Public registered-agent details |
| `officers` | Public officer/director titles, names, and addresses |
| `annualReports` | Inline annual-report history when enabled |
| `sourceUrl`, `sourceSearchUrl`, `searchTerm`, `scrapedAt` | Source provenance and extraction time |

Missing source values are returned as `null`; the dataset shape remains stable across entities.

### Input

Search one or more terms by entity name, officer/registered agent, registered agent, FEI/EIN, address, or ZIP:

```json
{
  "searchTerms": ["Disney"],
  "searchType": "entityName",
  "maxResults": 25,
  "includeFilingHistory": true
}
```

You can also provide official Sunbiz search-results or detail URLs in `startUrls`. Search terms and URLs can be used together. Terms are trimmed to Sunbiz's 45-character search limit, and requests are paced at one second by default.

### Output example

```json
{
  "entityName": "SUNSHINE HOLDINGS LLC",
  "filingType": "Florida Limited Liability Company",
  "documentNumber": "L123456789",
  "feiEin": "12-3456789",
  "status": "Active",
  "dateFiled": "2024-01-02",
  "principalAddress": "100 MAIN STREET MIAMI, FL 33101",
  "registeredAgentName": "REGISTERED AGENT LLC",
  "officers": [{"title": "Manager", "name": "DOE, JANE", "address": "100 MAIN STREET MIAMI, FL 33101"}],
  "annualReports": [{"year": 2024, "filedDate": "2024-02-03"}],
  "sourceUrl": "https://search.sunbiz.org/Inquiry/CorporationSearch/SearchResultDetail?...",
  "scrapedAt": "2026-08-02T12:00:00.000Z",
  "warnings": []
}
```

### Reliability and limits

Sunbiz search pages expose up to roughly 20 rows per page and are alphabetically ordered rather than relevance-ranked. The actor follows public next-page links until `maxResults` is reached, deduplicates by document number, and skips trademark links so the dataset stays focused on business entities.

The source may return a Cloudflare or JavaScript-verification page. When that happens, the actor reports a blocked run and does not fabricate records or charge result events. Retry later or reduce the batch if the official site is temporarily unavailable. The actor does not use third-party business-data providers or private credentials.

For agents and MCP clients, use this actor when the task requires current public Florida business-registry data. Do not use it for general web search, private company data, legal advice, filing submissions, payments, or any other state-changing action. Each dataset item is one `business-record` event and contains a stable structured business record plus source provenance.

### API example

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('YOUR_USERNAME/sunbiz-florida-business-scraper').call({
  searchTerms: ['Disney'],
  searchType: 'entityName',
  maxResults: 25
});
console.log(run.defaultDatasetId);
```

### Responsible use

This actor collects public registry data. Public addresses and officer information may be personal data; use the output lawfully, minimize retention, and verify material legal, compliance, identity, and eligibility decisions against the current official record. This independent tool is not affiliated with or endorsed by the Florida Department of State.

# Actor input Schema

## `searchTerms` (type: `array`):

Use this for one or more Florida registry lookups. Enter a business name such as 'Disney', an FEI/EIN, an officer or agent name, a street address, or a ZIP code depending on searchType. Each term is trimmed to Sunbiz's 45-character limit. Defaults to 'Disney'. This is not a general web search.

## `searchType` (type: `string`):

Use entityName for company names, officerOrRegisteredAgent or registeredAgent for people and agents, feiNumber for FEI/EIN, address for street address, or zipCode for ZIP. The selected type applies to every searchTerms value and is not a detail-page filter.

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

Use this when you already have an official Sunbiz search-results or business-detail URL. URLs must begin with https://search.sunbiz.org/Inquiry/CorporationSearch/. This is not a filing or payment URL; the actor never submits state-changing forms.

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

Use this to cap stored business records and result-event charges. Enter 1 to 1,000; the fast default is 1. Request more records explicitly for larger batches. This is a record limit, not a page limit.

## `includeFilingHistory` (type: `boolean`):

Use true when you need the annualReports array from each detail page. Set false for smaller records when you only need identity, status, address, agent, and officer fields. This does not download document images or submit filings.

## `requestDelayMs` (type: `integer`):

Use this to pace read-only requests to the public registry. Allowed values are 500 to 5,000 milliseconds; the default is 1,000. This is not a run-timeout setting.

## Actor input object example

```json
{
  "searchTerms": [
    "Disney"
  ],
  "searchType": "entityName",
  "startUrls": [],
  "maxResults": 1,
  "includeFilingHistory": true,
  "requestDelayMs": 1000
}
```

# Actor output Schema

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

Structured Sunbiz business records in the default dataset.

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

Counts, charges, blocked requests, and non-fatal 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 = {
    "searchTerms": [
        "Disney"
    ],
    "searchType": "entityName",
    "startUrls": [],
    "maxResults": 1,
    "includeFilingHistory": false,
    "requestDelayMs": 500
};

// Run the Actor and wait for it to finish
const run = await client.actor("muhammadafzal/sunbiz-florida-business-scraper").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 = {
    "searchTerms": ["Disney"],
    "searchType": "entityName",
    "startUrls": [],
    "maxResults": 1,
    "includeFilingHistory": False,
    "requestDelayMs": 500,
}

# Run the Actor and wait for it to finish
run = client.actor("muhammadafzal/sunbiz-florida-business-scraper").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 '{
  "searchTerms": [
    "Disney"
  ],
  "searchType": "entityName",
  "startUrls": [],
  "maxResults": 1,
  "includeFilingHistory": false,
  "requestDelayMs": 500
}' |
apify call muhammadafzal/sunbiz-florida-business-scraper --silent --output-dataset

```

## MCP server setup

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

```

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/Mp8yQhZqJmTtrPcDN/builds/oXzmrXy7tV6A4rmpX/openapi.json
