# Florida Sunbiz Officers Search - Registered Agent Lookup (`captainhandsome/fl-sunbiz-officer-search`) Actor

Find every Florida company tied to a person. Florida registered agent lookup and company directors search: query Sunbiz by officer, director or registered agent name and get entity names and document numbers back as structured rows.

- **URL**: https://apify.com/captainhandsome/fl-sunbiz-officer-search.md
- **Developed by:** [Joseph McRell](https://apify.com/captainhandsome) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 results

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?

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

## Florida Sunbiz Officer Search

Search Florida Sunbiz by officer or registered-agent name and export every company that person is tied to - with the company's status, filing date, FEI/EIN, principal and mailing addresses, registered agent, full officer list and annual-report history. The Actor returns a structured default dataset suitable for CSV, JSON, spreadsheets, automations, and AI-agent workflows.

### What data can I extract?

Every search result row:

- `officer_name` - Officer or registered-agent name shown in Sunbiz.
- `entity_name` - Florida business entity linked to the officer or agent.
- `document_number` - Florida Division of Corporations document number.
- `detail_url` - Direct link to the company's Sunbiz detail page, so any record can be audited against the state registry.

With `include_details` enabled, each record also carries the company's full Sunbiz record:

- `entity_type` - Registry classification, such as Florida Limited Liability Company or Foreign Profit Corporation.
- `cross_reference_name` - Earlier or alternate registered name, present only on entities the state has cross-referenced after a name change.
- `status` - Current Florida registration status, normally ACTIVE or INACTIVE.
- `date_filed` - Date the entity was first filed with the Florida Division of Corporations, as MM/DD/YYYY.
- `state_of_formation` - Two-letter state or country code the entity was formed in; FL for domestic entities.
- `fei_ein_number` - Federal Employer Identification Number on file, or N/A when the entity has not reported one.
- `last_event` - Most recent registry event recorded against the entity, such as an amendment or a dissolution.
- `last_event_date` - Date the most recent registry event was filed, as MM/DD/YYYY.
- `event_effective_date` - Effective date of that event when the filing sets one, otherwise NONE.
- `principal_address` - Principal place of business on file, street through ZIP as one line.
- `mailing_address` - Mailing address on file, street through ZIP as one line.
- `registered_agent_name` - Person or corporate service company accepting service of process for the entity.
- `registered_agent_address` - Street address of the registered agent, street through ZIP as one line.
- `officers` - Every officer, director or authorized person listed on the record, each as name (title), separated by semicolons.
- `annual_report_years` - Years for which an annual report has been filed, comma separated, oldest first.
- `last_annual_report_date` - Filing date of the most recent annual report, as MM/DD/YYYY - the freshest proof the company is still being maintained.

Data source: Florida Division of Corporations Sunbiz public search pages.

### Input example

Use a bounded input to control output volume and cost:

```json
{
  "start_urls": [
    "https://search.sunbiz.org/Inquiry/CorporationSearch/SearchResults?inquiryType=OfficerRegisteredAgentName&searchTerm=SMITH"
  ],
  "max_items": 10,
  "include_details": true
}
```

`max_items` is a hard ceiling on records returned and billed. The default returns at most 10 records so the Store test and first trial remain inexpensive.

### Output example

Each dataset item is one normalized record. Text is normalized to lower case. This is a real record from a `SMITH` search with `include_details` enabled:

```json
{
  "officer_name": "smith , nathan",
  "entity_name": "the e group alabama, l.l.c.",
  "document_number": "m16000000711",
  "detail_url": "https://search.sunbiz.org/Inquiry/CorporationSearch/SearchResultDetail?inquirytype=OfficerRegisteredAgentName&directionType=Initial&searchNameOrder=SMITH%09NATHAN%20M160000007113&aggregateId=forl-m16000000711-9e72a51e-6381-49c4-8faa-c591f95c507c&searchTerm=SMITH&listNameOrder=SMITH%20L030000468352",
  "entity_type": "foreign limited liability company",
  "cross_reference_name": "the e group,l.l.c.",
  "status": "active",
  "date_filed": "12/22/2015",
  "state_of_formation": "al",
  "fei_ein_number": "63-1240737",
  "last_event": "lc amendment",
  "last_event_date": "06/29/2016",
  "event_effective_date": "none",
  "principal_address": "31 inverness center parkway suite 415 brimingham, al 35242",
  "mailing_address": "31 inverness center parkway suite 415 brimingham, al 35242",
  "registered_agent_name": "corporation service company",
  "registered_agent_address": "1201 hays street tallahassee, fl 32301-2525",
  "officers": "ellis, scott (manager); ellis, holley (manager); smith , nathan (authorized representative)",
  "annual_report_years": "2024, 2025, 2026",
  "last_annual_report_date": "01/28/2026"
}
```

Without `include_details` the record carries the four search-result columns only, and the run makes one page request instead of one per company.

Download the default dataset as JSON, CSV, Excel, XML, or RSS, or retrieve it through the Apify API.

### Pricing and cost control

This Actor uses Pay Per Event. The built-in `apify-actor-start` event is charged once at run start and `apify-default-dataset-item` is charged once for each dataset item. The live Store pricing panel is authoritative. Set `max_items` to establish a predictable output-charge ceiling; there is no duplicate explicit item charge in the runtime.

### Use with AI agents and MCP

Apify's MCP server can discover this Actor, inspect its strict input and output schemas, call it with `call-actor`, and retrieve structured results with `get-actor-output`.

**Find Florida companies associated with an officer named Smith**

```json
{
  "start_urls": [
    "https://search.sunbiz.org/Inquiry/CorporationSearch/SearchResults?inquiryType=OfficerRegisteredAgentName&searchTerm=SMITH"
  ],
  "max_items": 50
}
```

### Common use cases

- Company verification and registry research
- Due-diligence and compliance workflows
- Business-directory enrichment
- Spreadsheet and CRM preparation
- Scheduled public-record monitoring

### Limitations and responsible use

- Public registry data only; this is not an official certificate or legal opinion.
- Source sites can omit fields, change markup, throttle traffic, or be temporarily unavailable.
- Name searches can produce unrelated matches; verify critical records with the originating agency.
- Output coverage is limited to fields displayed by the public result pages.
- The Actor does not bypass authentication, CAPTCHAs, or access controls.

### FAQ

#### Is the output structured?

Yes. Names, identifiers, status, location, and other supported values are separate dataset columns rather than concatenated table-cell blobs.

#### Can I cap cost?

Yes. `max_items` is the hard maximum number of result events and dataset records for a run.

#### Can an AI agent call it?

Yes. The input schema acts as a strict tool contract, and the dataset and Actor output schemas describe every returned field.

#### Is this an official government service?

No. It is an independent extraction tool that reads publicly available registry pages. Confirm consequential decisions at the original source.

### Reliability

The Actor is protected by production canaries, typed output contracts, bounded defaults, and fleet monitoring. If a source-page change causes incomplete output, open an Actor issue with the run ID and a redacted input example.

# Actor input Schema

## `start_urls` (type: `array`):

One or more Florida Sunbiz OfficerRegisteredAgentName SearchResults URLs. Generate the URL on Sunbiz with the desired person or agent name, then paste it here.

## `max_items` (type: `integer`):

Hard maximum number of officer-to-entity records returned and billed.

## `include_details` (type: `boolean`):

Open each company's Sunbiz detail page to add status, filing date, FEI/EIN, principal and mailing addresses, registered agent, the full officer list and the annual-report history. Adds one page load per record, so runs take longer. Leave off for a fast person-to-company lookup.

## Actor input object example

```json
{
  "start_urls": [
    "https://search.sunbiz.org/Inquiry/CorporationSearch/SearchResults?inquiryType=OfficerRegisteredAgentName&searchTerm=SMITH"
  ],
  "max_items": 10,
  "include_details": false
}
```

# Actor output Schema

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

Items from the run's default dataset.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("captainhandsome/fl-sunbiz-officer-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("captainhandsome/fl-sunbiz-officer-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 '{}' |
apify call captainhandsome/fl-sunbiz-officer-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,captainhandsome/fl-sunbiz-officer-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/DoeyDkCDeExapMeSY/builds/V8BRm0MJDD287qJfe/openapi.json
