US Company Data
Look up a US listed company in SEC EDGAR by CIK, ticker or name. Returns name, CIK, SIC code, state and a summary of filings.
Example
{
"cik": "0001418121",
"ein": "261379210",
"sic": "6798",
"state": "VA",
"status": "active",
"ticker": "APLE",
"address": "814 EAST MAIN STREET, RICHMOND, VA, 23219",
"exchange": "NYSE",
"entity_type": "operating",
"company_name": "Apple Hospitality REIT, Inc.",
"searched_name": null,
"is_exact_match": true,
"fiscal_year_end": "1231",
"sic_description": "Real Estate Investment Trusts",
"match_confidence": "exact",
"resolution_method": "ticker"
} Inputs
| Field | Type | Required | What it is |
|---|---|---|---|
cik | string | No | SEC CIK number. Alternate to 'company' — same resolution rules apply. |
ticker | string | No | Stock ticker symbol. Alternate to 'company' — same resolution rules apply. |
company | string | No | CIK number, ticker symbol, or company name. Resolution order: exact CIK match, then exact ticker match, then exact company-name match (both via the SEC ticker/title map — no LLM call), then a best-effort LLM name extraction + SEC full-text filing search as a last resort (gated by match_confidence / allow_low_confidence below). |
company_name | string | No | US company name. Alternate to 'company' — same resolution rules apply. |
allow_low_confidence | boolean | No | If true, return the best-effort match even when the name could not be confidently resolved (match_confidence "low"). Default false — a low-confidence name lookup errors instead of returning a possibly-wrong company identity, so it can't silently feed downstream screening. Only relevant to the LLM+full-text-search fallback path; exact CIK/ticker/title-map resolutions are always match_confidence "exact" and are never gated by this flag. |
Output fields
How reliably each field appears in a successful answer.
| Field | Type | Appears |
|---|---|---|
cik | string | Always (present in every successful answer) |
state | string | Always (present in every successful answer) |
status | string or null | Not stated |
sic_code | string | Sometimes (present only for some inputs) |
vat_number | string or null | Not stated |
company_name | string | Always (present in every successful answer) |
searched_name | string or null | Usually (present for most inputs) |
is_exact_match | boolean | Always (present in every successful answer) |
fiscal_year_end | string | Always (present in every successful answer) |
match_confidence | one of exact, high, low | Always (present in every successful answer) |
resolution_method | — | Always (present in every successful answer) |
How to call it
The same tool through each route. MCP clients reach it through Strale’s server at https://api.strale.io/mcp; the call below is what the agent sends.
# Needs an API key. max_price_cents caps what this call may cost.
curl -X POST https://api.strale.io/v1/do \
-H "Authorization: Bearer $STRALE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"capability_slug": "us-company-data",
"inputs": {
"company": "320193"
},
"max_price_cents": 5
}' {
"tool": "strale_execute",
"arguments": {
"slug": "us-company-data",
"inputs": {
"company": "320193"
},
"max_price_cents": 5
}
} import { Strale } from "straleio";
const strale = new Strale({ apiKey: process.env.STRALE_API_KEY! });
const result = await strale.do({
capability_slug: "us-company-data",
inputs: {
"company": "320193"
},
max_price_cents: 5,
}); import os
from straleio import Strale, DoRequest
strale = Strale(api_key=os.environ["STRALE_API_KEY"])
result = strale.do(DoRequest(
capability_slug="us-company-data",
inputs={
"company": "320193",
},
max_price_cents=5,
)) # No account. The first request answers 402 with the price in USDC;
# an x402 client pays it from your wallet and repeats the request.
curl -i 'https://api.strale.io/x402/v2/us-company-data?company=320193' Limitations
State registry coverage varies
Coverage varies by state — Delaware, California, New York most complete. Some states have limited electronic registry access
What to do instead: For states with limited coverage, supplement with the state's Secretary of State website directly
Name searches can match filings by another company
Name and ticker searches find SEC filings mentioning the query, which can belong to another company, particularly for private companies without filings. Low-confidence matches return an error by default; accepted matches report exact or high `match_confidence`.
What to do instead: Supply the CIK directly for an exact, unambiguous lookup. To receive the best-effort match for an unresolved name anyway, pass allow_low_confidence=true and gate on the returned is_exact_match / match_confidence fields yourself.
Private company financial information is not included
Does not include privately held financial data — only publicly filed information
What to do instead: Request privately held financial information directly from the company.
State filings can lag by 1–5 business days
Secretary of State filings may lag 1-5 business days behind actual filing date
What to do instead: For time-critical checks, compare the filing_date in the response against SEC EDGAR for publicly traded companies
Bundled checks that include it
Related tools
- Australian Company Data €0.05
- Austrian Company Data €0.05
- Belgian Company Data €0.05
- Brazilian Company Data €0.05
- Canadian Company Data €0.80
- Company Enrichment €0.50