Search Entities
Search business entities by name, registered agent, and state. Filter by status and entity type with pagination support.
Endpoint
GET /api/v1/searchSearch business entities by name, registered agent, and state. Returns matching entities with basic details. Costs 1 credit per request (see Credits for exceptions).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
name | string | conditional | Business name to search for (required if agent not provided) |
state | string | no | Two-letter state code (e.g., FL, NY, CT). Omit to search across all states (5 credits). |
agent | string | conditional | Registered agent name to search for |
status | string | no | Filter by status: active, inactive, all (default: all) |
type | string | no | Filter by entity type: llc, corporation, lp |
record_class | string | no | Comma-separated list of record classes to return, or all to disable this filter entirely. Default (when omitted): registry_entity,federal_registration. Valid class names: registry_entity, federal_registration, filing_event, license, name_registration, government_vendor, financial_assistance_award. An unrecognised value returns 400 naming the valid set. See Record Classes. |
exact | boolean | no | true to require an exact name match instead of a prefix/fuzzy search |
formed_after | string | no | Return only entities formed after this date (ISO 8601, e.g., 2010-01-01) |
formed_before | string | no | Return only entities formed before this date (ISO 8601) |
filing_number | string | no | Search by state-assigned filing number |
officer | string | no | Search by officer name (5 credits) |
limit | integer | no | Results per page, max 50 (default: 10) |
offset | integer | no | Pagination offset (default: 0) |
Credits
Most searches cost 1 credit. Two cases cost 5 credits:
- Cross-state search — omitting
statesearches all covered states simultaneously; if a state cannot be reached, the response is markedpartialand names it (see Cross-state completeness below). - Officer search — passing
officersearches officer/director records across entities.
Example Request
curl "https://filed.dev/api/v1/search?name=Acme&state=FL" \
-H "Authorization: Bearer YOUR_API_KEY"
# Search by registered agent
curl "https://filed.dev/api/v1/search?agent=CSC+Global&state=FL" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
# Search by name
resp = requests.get(
"https://filed.dev/api/v1/search",
params={"name": "Acme", "state": "FL"},
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
# Search by registered agent
resp = requests.get(
"https://filed.dev/api/v1/search",
params={"agent": "CSC Global", "state": "FL"},
headers={"Authorization": "Bearer YOUR_API_KEY"}
)// Search by name
const res = await fetch(
"https://filed.dev/api/v1/search?name=Acme&state=FL",
{ headers: { Authorization: "Bearer YOUR_API_KEY" } }
);
// Search by registered agent
const res2 = await fetch(
"https://filed.dev/api/v1/search?agent=CSC+Global&state=FL",
{ headers: { Authorization: "Bearer YOUR_API_KEY" } }
);req, _ := http.NewRequest("GET",
"https://filed.dev/api/v1/search?name=Acme&state=FL", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, _ := http.DefaultClient.Do(req)
// Search by registered agent
req2, _ := http.NewRequest("GET",
"https://filed.dev/api/v1/search?agent=CSC+Global&state=FL", nil)
req2.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp2, _ := http.DefaultClient.Do(req2)Response
{
"data": [
{
"id": "ent_mNqR7xKp",
"name": "ACME HOLDINGS LLC",
"state": "FL",
"type": "LLC",
"status": "Active",
"formedDate": "2019-03-14",
"registeredAgent": {
"name": "CSC Global",
"address": "1234 Main St, Tallahassee, FL 32301"
},
"principalAddress": "123 Main St, Miami, FL 33101",
"officerCount": 3,
"lastUpdated": "2026-02-27T12:00:00Z",
"recordClass": "registry_entity",
"subjectType": "organization",
"jurisdictionLevel": "state",
"sourceAgency": "Florida Division of Corporations (Sunbiz)"
}
],
"meta": {
"total": 1,
"limit": 10,
"offset": 0,
"state": "FL",
"source": "Florida Division of Corporations",
"record_class": ["registry_entity", "federal_registration"]
}
}Cross-state completeness
Omitting state fans out across every covered state and merges the results. Each state is queried independently, so one unreachable state does not fail the whole search — but it does mean the merged result set may not be complete. The cross-state response always carries three extra meta fields that say so explicitly, rather than leaving a partial result indistinguishable from a complete one:
| Field | Type | Description |
|---|---|---|
meta.partial | boolean | true if any covered state could not be searched. false means every covered state answered. |
meta.statesSearched | integer | Count of states that successfully answered. |
meta.statesFailed | array of string | Two-letter codes of states that could not be reached. Empty when partial is false. |
{
"data": [ /* ... */ ],
"meta": {
"total": 42,
"limit": 10,
"offset": 0,
"source": "Cross-state search",
"record_class": ["registry_entity", "federal_registration"],
"partial": true,
"statesSearched": 49,
"statesFailed": ["FL", "GA"]
}
}A partial: true response means we could not reach some states — it does not mean the company is not registered there. Treat statesFailed as "retry later," not as a negative result for those states.
If the directory that distinguishes a covered state from an uncovered one cannot itself be read, the search answers 503 upstream_unavailable instead of guessing — both for a cross-state request and for a single-state request naming a state outside the small set served directly from a live third-party feed (NY, CT, OR, PA, DC), which is unaffected.
Record classification
Every result carries two fields describing what kind of record it is:
| Field | Type | Description |
|---|---|---|
recordClass | string | registry_entity, federal_registration, filing_event, license, name_registration, government_vendor or financial_assistance_award |
subjectType | string | organization or person |
By default — when record_class is omitted — /v1/search already narrows results to two classes, registry_entity and federal_registration, so a default search is not only state-registered companies: a federal organisation register entry can match the same name as a state registration. These two fields are how you tell which is which. Pass record_class=registry_entity if you want only state registry records — see Filtering by class below for the full set of options, including record_class=all to remove the filter entirely. Both fields are always present.
See Record Classes for what each value means.
Filtering by class
By default — when record_class is omitted — results are limited to two classes: registry_entity (state business-entity registrations) and federal_registration (authoritative federal registers of organisations). Records of the other five classes are not included unless you ask for them.
Nothing has been removed: pass record_class=all to get the full, unfiltered result set, or name the classes you want, for example record_class=license,name_registration. The classes actually applied to a response are echoed back in meta.record_class (as the literal ["all"] when you passed all). An unrecognised class name returns 400 with the valid list in the error message.
meta.total is computed independently of record_class and is not narrowed by it — on a filtered request total can report more records than the filter will return. Coverage of state business-entity registrations also varies by state, so in some states the default returns noticeably fewer rows than record_class=all does; both are properties of the underlying data, not a failed query.
/v1/entity/{id} does not accept record_class and never filters — a lookup by id always returns the record, with its recordClass and subjectType fields, regardless of class.
Authority
Every result also carries two fields describing who actually asserted the record, independent of recordClass:
| Field | Type | Description |
|---|---|---|
jurisdictionLevel | string or null | federal, state, county, or null if unverified for this record's source |
sourceAgency | string or null | The real asserting body, e.g. "Internal Revenue Service" — or null alongside a null jurisdictionLevel |
Unlike recordClass and subjectType, these two fields can be null — check for that before displaying them. See Record Classes for the full explanation and the current coverage.
Try It
Test this endpoint in the Playground — no code required.
Credits
How the Filed API credit system works — what credits are, how they're counted, limits by plan, and what happens when you hit your limit.
Get Entity
Retrieve full details for a specific business entity by ID, with optional enrichment from federal databases, SAM.gov, IRS 990 filings, UCC records, SBA PPP loans, and related-entity data.