Vendor due diligence
Check a vendor's filing, officers, and connections — in 3 calls.
3 API calls · $0.015How can I vet a Florida vendor before onboarding them? You're onboarding a new vendor — adding them to an approved list, issuing a purchase order, or binding an insurance policy. Before committing, you want to know: Is this a real business? Who runs it? Do they have other companies that suggest experience — or a pattern of abandoned entities?
In this example, a landscaping company submits a bid: "Example Landscaping Services LLC."
The lookup
L00000000004What you learn
You have a clear picture — an established business with an accountable, experienced owner:
- Active filing with four years of compliant history
- Named officer who is personally accountable
- Multiple active businesses in the same industry (experience signal)
- One dissolved entity (normal business lifecycle, not a pattern of abandonment)
Proceed with standard vendor paperwork. Total cost of finding out: $0.015.
How it's built
Three API calls, one API key. Search the name, get the detail, then search the officer to see their full footprint.
# Step 1: Search by name
# Replace "EXAMPLE+LANDSCAPING" with the vendor's business name
$ curl -s -H "x-api-key: $API_KEY" \
"https://api.sunbizdata.com/api/v1/corporations/search/name?name=EXAMPLE+LANDSCAPING"
< 200 OK (35ms)
{ "results": [{
"documentNumber": "L00000000004",
"corporationName": "EXAMPLE LANDSCAPING SERVICES LLC",
"status": "Active"
}], "total": 1 }
# Step 2: Get full detail
# Replace "L00000000004" with the documentNumber from step 1
$ curl -s -H "x-api-key: $API_KEY" \
"https://api.sunbizdata.com/api/v1/corporations/detail?documentNumber=L00000000004"
< 200 OK (42ms)
{
"corporationName": "EXAMPLE LANDSCAPING SERVICES LLC",
"status": "Active",
"feiNumber": "00-0000002",
"officers": [{ "name": "CARLOS EXAMPLE", "title": "MGR", "type": "P" }],
"annualReports": [{ "year": "2026" }, { "year": "2025" }, { "year": "2024" }]
}
# Step 3: Search officer to find their other entities
# Replace "CARLOS+EXAMPLE" with the officer name from step 2
$ curl -s -H "x-api-key: $API_KEY" \
"https://api.sunbizdata.com/api/v1/corporations/search/officer?name=CARLOS+EXAMPLE"
< 200 OK (39ms)
{ "results": [
{ "corporationName": "EXAMPLE LANDSCAPING SERVICES LLC", "status": "Active" },
{ "corporationName": "EXAMPLE OUTDOOR LLC", "status": "Active" },
{ "corporationName": "EXAMPLE LAWN CARE LLC", "status": "Inactive" }
], "total": 3 }// Full vendor due diligence: name → detail → officer connections
async function vendorDueDiligence(vendorName) {
const headers = { "x-api-key": process.env.SUNBIZDATA_KEY };
const search = await fetch(
`https://api.sunbizdata.com/api/v1/corporations/search/name?name=${vendorName}`,
{ headers }
).then(r => r.json());
if (!search.results.length) return { found: false };
const detail = await fetch(
`https://api.sunbizdata.com/api/v1/corporations/detail?documentNumber=${search.results[0].documentNumber}`,
{ headers }
).then(r => r.json());
const officerName = detail.officers[0]?.name;
const connections = officerName
? await fetch(
`https://api.sunbizdata.com/api/v1/corporations/search/officer?name=${officerName}`,
{ headers }
).then(r => r.json())
: { results: [] };
return {
found: true,
name: detail.corporationName,
status: detail.status,
officer: officerName,
otherEntities: connections.results.length - 1,
activeEntities: connections.results.filter(r => r.status === "Active").length,
};
}Start with $5, get 1,000 requests
Pay per request. No subscription. Requests never expire.
Get started