Company Dossier API: SEC, Companies House, State Registries avatar

Company Dossier API: SEC, Companies House, State Registries

Pricing

from $150.00 / 1,000 full company dossiers

Go to Apify Store
Company Dossier API: SEC, Companies House, State Registries

Company Dossier API: SEC, Companies House, State Registries

Cited company dossier from a name or domain: SEC EDGAR filings and financials, UK Companies House, NY/CO/OR/CT registries, website contacts. Every field has source URL, fetch time and SHA-256; signed. $0.03 basic, $0.15 full; no match free.

Pricing

from $150.00 / 1,000 full company dossiers

Rating

0.0

(0)

Developer

LMH Solutions

LMH Solutions

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Share

Company Dossier API for AI Agents: SEC EDGAR, UK Companies House, US State Registries, Website Contacts, Every Field Cited

Give it a company name and/or domain. Get back one cited company dossier: SEC EDGAR profile, filings and financials, UK Companies House registration, US state business-registry records (New York, Colorado, Oregon, Connecticut), and the company website's emails, phones and social links. Every single field carries the source URL it came from, the time it was fetched and a SHA-256 hash of the exact bytes received. Full dossiers are Ed25519-signed so an agent, auditor or downstream system can prove the record was not altered.

Built for AI agents (MCP), KYC / KYB and due-diligence checks, vendor onboarding, B2B lead generation and CRM enrichment.

Why this Actor

  • Five official sources in one call: SEC EDGAR (US public companies), UK Companies House, four US state registries, plus the company's own website and contact pages.
  • Cited at field level, not just "sources: [...]": each value is {value, sourceUrl, fetchedAt, contentSha256}. Your agent can quote it, your compliance team can re-check it.
  • Signed: full dossiers include an Ed25519 signature over the canonical JSON. Public key below; verify offline in a few lines.
  • No match, no charge: if no registry matches (full) or nothing at all is found (basic), you pay nothing.
  • Official, free public data only: SEC's JSON APIs (with a declared contact User-Agent and polite retry), Companies House, state open-data portals. No scraping of paywalled databases, no logins.
  • Fast, no browser: plain HTTP. A full dossier usually takes 2 to 10 seconds.

Pricing (pay per event)

EventPriceWhen it is charged
full-dossier$0.15 per companyFull mode, at least one registry (SEC, Companies House or a state) matched. All sources, financials, filings, signature.
basic-profile$0.03 per companyBasic mode, website and/or one registry match found.
No match / failed lookupfreeNothing charged.

Apify adds its tiny standard start event. Set a max charge per run and the Actor stops cleanly when it is reached.

Coverage compared

Company Dossier (this Actor)Typical SEC + Companies House MCP tools
SEC EDGAR profile, filingsYesYes
SEC XBRL financials (revenue, net income, assets, cash, shares, float)Yes, latest annual 10-K values with concept, period and filing dateVaries
UK Companies HouseYes (official API when a key is configured, public register pages otherwise)Yes
US state registriesNY, CO, OR, CTNo
Company website: emails, phones, socials, addressYes, with the page each item came fromNo
Per-field source URL + fetch time + SHA-256YesNo
Cryptographic signatureEd25519No
One-shot "dossier" across sourcesYesUsually one tool call per source
Price$0.03 basic / $0.15 full, no match freeper call

Input

{
"companies": [
{ "name": "Apple Inc.", "domain": "apple.com" },
{ "name": "Tesco PLC", "country": "GB" },
{ "name": "Nike, Inc.", "state": "OR" },
"stripe.com"
],
"mode": "full"
}
  • companies: strings (name or domain) or objects {name, domain, ticker, country, state}.
  • Or single-company shortcuts: name, domain, country (US/GB), state (two letters).
  • mode: full (default) or basic.

Output (one item per company, trimmed)

{
"query": { "name": "Apple Inc.", "domain": "apple.com" },
"mode": "full", "status": "ok", "chargedEvent": "full-dossier",
"summary": { "secName": "Apple Inc.", "cik": "0000320193", "tickers": ["AAPL"], "domain": "apple.com", "socials": ["linkedin", "youtube"] },
"coverage": { "website": "fetched", "sec": "matched", "companiesHouse": "no_match", "stateRegistries": "NY:no_match CO:no_match OR:no_match CT:no_match" },
"sec": {
"name": { "value": "Apple Inc.", "sourceUrl": "https://data.sec.gov/submissions/CIK0000320193.json", "fetchedAt": "2026-11-02T13:10:00.000Z", "contentSha256": "9f2c..." },
"stateOfIncorporation": { "value": "CA", "sourceUrl": "...", "fetchedAt": "...", "contentSha256": "..." },
"financials": { "revenue": { "value": { "value": 416161000000, "unit": "USD", "fiscalYear": 2025, "periodEnd": "2025-09-27", "form": "10-K", "concept": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" }, "sourceUrl": "https://data.sec.gov/api/xbrl/companyfacts/CIK0000320193.json", "fetchedAt": "...", "contentSha256": "..." } },
"recentFilings": { "value": [{ "form": "10-K", "filingDate": "2025-10-31", "url": "https://www.sec.gov/Archives/edgar/data/320193/..." }], "sourceUrl": "...", "fetchedAt": "...", "contentSha256": "..." }
},
"companiesHouse": null,
"stateRegistries": [{ "state": "NY", "status": "no_match" }],
"website": { "domain": "apple.com", "phones": [{ "value": "...", "sourceUrl": "https://www.apple.com/contact/", "fetchedAt": "...", "contentSha256": "..." }], "socials": { "linkedin": { "value": "https://www.linkedin.com/company/apple", "sourceUrl": "https://www.apple.com/" } } },
"sources": [{ "url": "https://data.sec.gov/submissions/CIK0000320193.json", "fetchedAt": "...", "contentSha256": "...", "httpStatus": 200, "source": "sec-edgar" }],
"signature": { "alg": "Ed25519", "keyId": "p2j-JX8i4uxGCZqSSDrd", "domain": "company-dossier-v1", "payloadSha256": "...", "signature": "base64url..." }
}

Fields: SEC (CIK, name, tickers, exchanges, EIN, LEI, SIC and description, state of incorporation, fiscal year end, business and mailing address, phone, former names, last 8 filings with links, XBRL financials); Companies House (company number, name, status, type, incorporation and dissolution date, registered office, SIC codes, other close matches); state registries (entity ID, name, entity type, jurisdiction, formation date, status, registered agent / process address); website (name, description, address, emails, phones, socials, pages scanned).

Matching note: registries are matched by company name (score 1 = identical after removing suffixes like Inc or Ltd; 0.85 = name plus extra trailing words). Different companies can share a name, so confirm the registry number before relying on a match for KYC. Adding domain, country and state gives better results.

Verify the signature

Signed bytes = "company-dossier-v1\n" + canonicalJson(dossier without "signature") (keys sorted, no whitespace, undefined dropped). Public key (JWK): {"kty":"OKP","crv":"Ed25519","x":"W7fo3MOr-WnJe__hpWGTHlhucxLhhp_LCKGvTLBlAMc"}, key ID p2j-JX8i4uxGCZqSSDrd.

const canon = (v) => v === null || typeof v !== "object" ? JSON.stringify(v) : Array.isArray(v) ? `[${v.map(canon).join(",")}]`
: `{${Object.keys(v).filter((k) => v[k] !== undefined).sort().map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",")}}`;
const { signature, ...rest } = dossier;
const key = await crypto.subtle.importKey("jwk", { kty: "OKP", crv: "Ed25519", x: "W7fo3MOr-WnJe__hpWGTHlhucxLhhp_LCKGvTLBlAMc" }, { name: "Ed25519" }, false, ["verify"]);
const ok = await crypto.subtle.verify({ name: "Ed25519" }, key, Buffer.from(signature.signature, "base64url"), new TextEncoder().encode("company-dossier-v1\n" + canon(rest)));

Use it from an AI agent (MCP)

Add the Actor as a tool on Apify's hosted MCP server:

https://mcp.apify.com/?tools=lmhsolutions/company-dossier

Claude, Cursor, ChatGPT connectors, LangChain, n8n and other MCP clients can then call it with { "name": "...", "domain": "..." } and get the cited dossier back. Tool description for your agent: "Look up a company in SEC EDGAR, UK Companies House, US state registries and its website; returns a cited, signed dossier."

Synchronous HTTP API (Standby)

curl -H "Authorization: Bearer $APIFY_TOKEN" "https://lmhsolutions--company-dossier.apify.actor/?name=Apple%20Inc.&domain=apple.com&mode=full"
curl -X POST -H "Authorization: Bearer $APIFY_TOKEN" -H "content-type: application/json" \
-d '{"name":"Tesco PLC","country":"GB","mode":"basic"}' https://lmhsolutions--company-dossier.apify.actor/

Same events and prices per request; no-match responses are free. GET /keys returns the public signing key. Standby runs also use some platform compute per Apify's Standby billing rules.

Run from the API

curl -X POST "https://api.apify.com/v2/acts/lmhsolutions~company-dossier/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "content-type: application/json" -d '{"companies":[{"name":"Apple Inc.","domain":"apple.com"}],"mode":"full"}'

FAQ

Which US states are covered? New York, Colorado, Oregon and Connecticut, via their official open-data registries. More states will follow where free official data exists. Does it cover private US companies? Yes where they are registered in a covered state; SEC only lists companies that file with the SEC. Is the data current? Everything is fetched live at request time; fetchedAt shows exactly when. Is this legal advice or a KYC decision? No. It gathers public registry data with citations so your own process can decide. Data sources and terms: SEC EDGAR (sec.gov fair-access policy, declared User-Agent), Companies House (Crown copyright, Open Government Licence), state open-data portals (their own open licences), and the company's public website.

Questions or a state you need? Open an issue on the Actor page.