Skip to main content

API Documentation

Search and retrieve Florida business filing data programmatically

Overview

The Sunbiz Daily API provides read-only access to the full Florida business filing record across three datasets, each its own resource:

ResourceWhat it isRecordsEndpoint
Corporate filings Corporations & LLCs 12,786,603 /api/v2/filings/
Fictitious names DBA registrations 757,406 /api/v2/fictitious-names/
Partnerships General partnerships 31,196 /api/v2/partnerships/

Record counts as of June 22, 2026.

This is the complete Florida business registry — every corporation, LLC, fictitious name, and partnership on file with the state, not just recently registered businesses. New filings are added every business day, and counts grow continuously.

Base URL https://sunbizdaily.com/api/v2/

All responses are JSON, and the API is free for any registered user. Interactive API explorer available at /api/v2/docs/ (requires authentication).

Authentication

All API requests require an API key sent via the X-API-Key header. API access is available to all authenticated users.

curl -H "X-API-Key: sb_your_key_here" \ https://sunbizdaily.com/api/v2/filings/

Keys use the format sb_<32 characters>. The full key is shown once at creation time — store it securely. You can create and manage keys from your API Keys dashboard.

Corporate Filings

Florida corporations and LLCs. Each filing carries officers, a registered agent, and addresses.

GET /api/v2/filings/

List and search corporate filings.

curl -H "X-API-Key: sb_your_key_here" \ "https://sunbizdaily.com/api/v2/filings/?city=miami&filing_type=FLAL&per_page=5"

GET /api/v2/filings/{corporation_number}/

Get one filing with its officers and registered agent.

{ "corporation_number": "P24000012345", "corporation_name": "MIAMI GRILL LLC", "filing_type": "FLAL", "filing_type_display": "Florida Limited Liability Company", "status": "A", "file_date": "2025-01-15", "fei_number": "12-3456789", "principal_address": { "address_1": "123 BISCAYNE BLVD", "city": "MIAMI", "state": "FL", "zip": "33101", "country": "US" }, "mailing_address": null, "registered_agent": { "name": "JOHN SMITH", "agent_type": "P", "address": { } }, "officers": [ { "position": 1, "name": "JOHN SMITH", "title": "MGR", "officer_type": "P" } ] }

Resource-specific filters:

ParameterDescriptionExample
corporation_nameBusiness name (substring)GRILL
corporation_numberExact corporation numberP24000012345
officer_nameOfficer name (substring)smith
registered_agent_nameRegistered agent name (substring)CT CORPORATION
filing_typeComma-separated filing type codes (see below)DOMP,FLAL
countyCounty of the principal address (see note below)Orange

Recognized filing_type codes for /api/v2/filings/. Any unrecognized code is ignored; a value containing no recognized code returns no results.

CodeEntity type
FLALFlorida Limited Liability Company
FORLForeign Limited Liability Company
DOMPDomestic Profit Corporation
FORPForeign Profit Corporation
DOMNPDomestic Non-Profit Corporation
FORNPForeign Non-Profit Corporation
DOSLPDomestic Limited Partnership
FOSLPForeign Limited Partnership
DORLPDomestic Registered Limited Liability Partnership
FORLPForeign Registered Limited Liability Partnership
TRUSTTrust
FICTIFictitious Name

Date filters use file_date. Sort fields: corporation_name, corporation_number, filing_type, file_date (default), city, state, zip, county.

county for corporate filings is derived from address enrichment, which is still backfilling across the registry — filings whose address has not been enriched yet have an empty county and are not matched by the filter. Coverage grows continuously; a missing county does not mean the business has none. A trailing “County” is tolerated (Orange County = Orange).

Fictitious-Name Filings

"Doing business as" (DBA) registrations. Each filing carries owners and a principal address — no registered agent or mailing address.

GET /api/v2/fictitious-names/

List and search fictitious-name filings.

curl -H "X-API-Key: sb_your_key_here" \ "https://sunbizdaily.com/api/v2/fictitious-names/?fictitious_name=bakery&county=PINELLAS"

GET /api/v2/fictitious-names/{document_number}/

Get one filing with its owners.

{ "document_number": "G24000056789", "fictitious_name": "SUNSHINE BAKERY", "status": "A", "filing_date": "2025-02-03", "county": "PINELLAS", "fei_number": "", "principal_address": { "address_1": "55 GULF BLVD", "city": "ST PETERSBURG", "state": "FL", "zip": "33706", "country": "US" }, "owners": [ { "position": 1, "name": "MARIA LOPEZ" } ] }

Resource-specific filters:

ParameterDescriptionExample
fictitious_nameTrade name (substring)bakery
document_numberExact document numberG24000056789
owner_nameOwner name (substring)lopez
countyCounty of filingPINELLAS

Date filters use filing_date. Sort fields: fictitious_name, document_number, filing_date (default), county, city, state, zip.

Partnerships

Florida general partnerships. Each carries partners, a registered agent, and addresses.

GET /api/v2/partnerships/

List and search partnerships.

curl -H "X-API-Key: sb_your_key_here" \ "https://sunbizdaily.com/api/v2/partnerships/?name=acme&state=FL"

GET /api/v2/partnerships/{document_number}/

Get one partnership with its partners and registered agent.

{ "document_number": "A24000098765", "name": "ACME PARTNERS", "status": "A", "filed_date": "2025-01-20", "fei_number": "98-7654321", "county": "ORANGE", "principal_address": { "address_1": "200 MAIN ST", "city": "ORLANDO", "state": "FL", "zip": "32801", "country": "US" }, "mailing_address": null, "registered_agent": { "name": "JANE ROE", "agent_type": "P", "address": { } }, "partners": [ { "name": "ALICE STONE", "partner_type": "I" } ] }

Resource-specific filters:

ParameterDescriptionExample
namePartnership name (substring)acme
document_numberExact document numberA24000098765
partner_namePartner name (substring)stone
registered_agent_nameRegistered agent name (substring)CT CORPORATION
countyCounty of the principal address (enrichment-derived, same caveat as corporate filings)Orange

Date filters use filed_date. Sort fields: name, document_number, filed_date (default), city, state, zip, county.

Common Parameters

These apply to every resource above. All parameters are optional and combined with AND logic; text parameters accept comma-separated values, ORed within that filter.

Shared filters

ParameterDescriptionExample
cityCity (case-insensitive)miami
stateState codeFL
zipZIP code prefix331
statusactive, inactive, or a raw status code (see note below)active
periodDate preset: yesterday, 7d, 14d, 30d, all7d
start_dateStart of date range (YYYY-MM-DD)2025-01-01
end_dateEnd of date range (YYYY-MM-DD)2025-01-31

status=active matches filings with status code A; status=inactive matches everything else — corporate filings use I, but partnerships carry several terminal codes (revoked, dissolved, merged, …), so “inactive” means “not active”. A raw single-character code (e.g. A, I) is accepted verbatim; any other value returns 422. Responses keep emitting the raw code in status.

Date filters operate on each resource's filing date (see each section above). Future-dated values are never returned.

Pagination & Sorting

ParameterTypeDefaultDescription
pageinteger1Page number (1-indexed, max 100)
per_pageinteger25Results per page (max 100)
sortstringfiling dateSort field (see each resource)
orderstringdescasc or desc

For very broad filters, counting every match is more expensive than returning the page itself — so counting stops at 10,000. When that happens the envelope reports "total": 10000 with "total_capped": true, meaning at least 10,000 matches; narrow the filters (a date range helps most) for an exact total. Exact counts report total_capped: false.

Asynchronous Searches

Most queries return immediately. A few are inherently expensive — for example, finding every business tied to a common officer or agent name across the whole registry. Rather than make you wait (or time out), the API runs each list request under a short time budget and, if it would exceed it, hands back a background job instead of the results.

This is automatic and uses the same list endpoints — you don't choose up front. When a query is offloaded, the list endpoint returns 202 Accepted with a job id and a poll URL:

GET /api/v2/filings/?officer_name=john+smith 202 Accepted { "job_id": "f1a2b3c4-...", "status": "queued", "poll_url": "/api/v2/jobs/f1a2b3c4-.../" }

GET /api/v2/jobs/{job_id}/

Poll the job until status is done. While it runs, the status is queued or running. When done, the response carries the result in the same filings + pagination envelope the synchronous endpoints use, paged with the normal page and per_page parameters. Left unset, they default to the values from your original request, so the job result matches what the synchronous response would have been:

GET /api/v2/jobs/f1a2b3c4-.../?page=1&per_page=25 { "job_id": "f1a2b3c4-...", "status": "done", "resource": "corporate", "truncated": false, "filings": [ ... ], "pagination": { "total": 842, "page": 1, "per_page": 25, "total_pages": 34 } }

Notes: fetchable results are capped — for very common names truncated is true, meaning only the first page-load of rows is reachable. total stays exact (the true match count) and total_pages reflects the reachable rows, not total. Every search term must be 3 or more characters (otherwise 422) — a one- or two-character name term matches most of the registry and could never finish. Each user may have up to 3 jobs in flight at once (a 4th returns 429). Job results expire after 24 hours; polling an expired job returns 410. Jobs are private to the key's owner.

Privacy

Florida business filings are public record. A business owner who used a home address can request a privacy takedown; for those filings the API hides the people (officers, owners, or partners), the registered agent, and the mailing address, and generalizes the principal address to city level. The filing itself still appears in results.

Rate Limits

Rate limits are enforced per API key using a sliding 1-hour window.

All Users
1,000
requests / hour
Need higher limits? Reach out through support.

Every response includes rate limit headers:

X-RateLimit-Limit: 1000 X-RateLimit-Remaining: 998

When the limit is exceeded, the API returns a 429 status. Wait for the window to reset before retrying.

Error Responses

Errors return a JSON object with error and optional detail fields.

Status Meaning When
200 OK Request succeeded
202 Accepted Query offloaded to a background job (see Asynchronous Searches)
401 Unauthorized Missing, invalid, or expired API key
404 Not Found Document/corporation number or job does not exist
410 Gone Background job result has expired
422 Unprocessable Entity Background search term too short (under 3 characters)
429 Too Many Requests Rate limit exceeded, or too many in-flight search jobs
500 Internal Server Error Unexpected server error

Example error response:

{ "error": "Rate limit exceeded.", "detail": "1000 requests per hour." }

Get Started

Create an API key to start making requests. Free for all authenticated users.

Manage API Keys Interactive Docs