Compliance monitoring

Flag entities with lapsed annual reports before they dissolve.

1 API call · $0.005
← All examples
📋 Property managers
⚖️ Attorneys
📊 CPAs & registered agents
🏦 Lenders

How can I check if a Florida entity has filed its annual report? You manage a portfolio of LLCs — for clients, for your firm, or for a property management company. Florida entities must file an annual report by May 1 each year. Miss it and face administrative dissolution. You need to know when one is at risk — before it's too late.

In this example, you check "Example Community Association Inc" and discover its 2026 annual report hasn't been filed yet.

The lookup

Get entity detail and check annual reports
GET /api/v1/corporations/detail?documentNumber=P00000000006
Entity
EXAMPLE COMMUNITY ASSOCIATION INC
Status
Active
Annual reports
2023, 2024, 2025 — 2026 not filed
Principal address
900 Example Ave, Fort Lauderdale, FL 33602

What you learn

⚠️
Annual report overdue. The 2026 report hasn't been filed — if not submitted by the third Friday in September, the entity faces administrative dissolution.
Automate for a portfolio. Check 100 entities for $0.50. Run monthly to catch lapses before they become dissolutions.
ℹ️
Compare annualReports array against current year. If the current year isn't in the array after May 1, the entity is overdue.
Prevent dissolution. Early detection gives the owner time to file and pay the $138.75 fee before the state takes action.
The decision is simple

Set up a monthly batch check. Flag any entity where the annualReports array doesn't include the current year after May 1. Send a reminder to the client or owner. Prevent dissolution before it happens.

  • Run monthly from May through September (the dissolution window)
  • Check your entire portfolio in one batch — 100 entities = $0.50
  • Send automated alerts to clients who are overdue
  • Offer annual report filing as a paid service — you'll know who needs it

Total cost per entity per check: $0.005.

How it's built

One API call per entity. Check the annualReports array against the current year. Batch it for your entire portfolio.

Try it — copy, paste, run
terminal
# Check an entity's annual report compliance
# Replace "P00000000006" with the document number of the entity to check
$ curl -s -H "x-api-key: $API_KEY" \
    "https://api.sunbizdata.com/api/v1/corporations/detail?documentNumber=P00000000006"

< 200 OK (38ms)
{
  "corporationName": "EXAMPLE COMMUNITY ASSOCIATION INC",
  "status": "Active",
  "fileDate": "06122019",
  "principalAddress": "900 Example Ave, Fort Lauderdale, FL 33602",
  "registeredAgent": { "name": "CARLOS EXAMPLE", "type": "P" },
  "officers": [{ "name": "MARIA EXAMPLE", "title": "President" }],
  "annualReports": [
    { "year": "2023", "filedDate": "01152023" },
    { "year": "2024", "filedDate": "02102024" },
    { "year": "2025", "filedDate": "03012025" }
  ]
}
Drop into your app
node.js
// Check a list of entities for annual report compliance
async function checkCompliance(documentNumbers) {
  const headers = { "x-api-key": process.env.SUNBIZDATA_KEY };
  const currentYear = new Date().getFullYear().toString();
  const currentMonth = new Date().getMonth() + 1;

  // Only flag after May 1 (when annual reports are due)
  if (currentMonth < 5) return { message: "Too early — reports not due until May 1" };

  const results = [];

  for (const docNum of documentNumbers) {
    const detail = await fetch(
      `https://api.sunbizdata.com/api/v1/corporations/detail?documentNumber=${docNum}`,
      { headers }
    ).then(r => r.json());

    const filedYears = detail.annualReports.map(r => r.year);
    const isCompliant = filedYears.includes(currentYear);

    results.push({
      name: detail.corporationName,
      documentNumber: docNum,
      compliant: isCompliant,
      lastFiled: filedYears[filedYears.length - 1],
    });
  }

  return {
    total: results.length,
    overdue: results.filter(r => !r.compliant),
    compliant: results.filter(r => r.compliant),
  };
}

// Check your portfolio
const portfolio = ["P00000000006", "L00000000004", "L00000000008"];
const report = await checkCompliance(portfolio);
console.log(`${report.overdue.length} entities overdue`);

Start with $5, get 1,000 requests

Pay per request. No subscription. Requests never expire.

Get started