SEC EDGAR Company Lookup — Filings & Company Profile API avatar

SEC EDGAR Company Lookup — Filings & Company Profile API

Pricing

from $2.00 / 1,000 successful lookups

Go to Apify Store
SEC EDGAR Company Lookup — Filings & Company Profile API

SEC EDGAR Company Lookup — Filings & Company Profile API

Look up any US public company by stock ticker or SEC CIK — legal name, industry (SIC) code, entity type, state of incorporation, and 10 most recent filings, read straight from SEC's own official EDGAR data API. No scraping, no API key. Charged once per company found; a miss costs nothing.

Pricing

from $2.00 / 1,000 successful lookups

Rating

0.0

(0)

Developer

Adrian Voss

Adrian Voss

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

SEC EDGAR Company Lookup

Look up a US public company by stock ticker or SEC CIK and get its SEC EDGAR filer record back as one flat row: legal name, CIK number, industry (SIC) code, entity type, state of incorporation, fiscal year end, business address, former names, and its 10 most recent SEC filings. No API key, no scraping — this calls SEC's own official data.sec.gov submissions API directly and resolves plain tickers to CIKs using SEC's own published ticker mapping.

Who it's for

The accountable_eel catalogue sells company intelligence columns for outbound. Each actor takes a list of domains or company identifiers and returns one flat, stably-named row per input — firmographics, registry IDs, tech stack, email route, hiring activity — the shape a Clay table, an n8n workflow, or an AI agent can consume without post-processing. Pricing is pay-per-event and per-domain: a few tenths of a cent for a row that was actually found, and nothing for a miss, so a list that doesn't enrich costs you next to nothing. Where an official source exists — VIES, GLEIF, SEC EDGAR, Brønnøysund, PRH, RDAP — it is queried directly instead of scraped. No seat licence, no monthly minimum, no credit system to decode.

For this actor the identifier is a stock ticker or an SEC CIK, and the source is SEC EDGAR's company submissions API — the same record SEC itself serves to sec.gov.

Why this one

  • Reads SEC's own API, not a scrape. data.sec.gov/submissions/CIK<n>.json is SEC's intended machine-readable access path — the same data backing EDGAR's web pages, with SEC's fair-access User-Agent requirement handled for you. There's no HTML to parse and nothing that breaks when EDGAR redesigns its site.
  • Ticker resolution is built in. Submit a plain ticker like AAPL and it resolves to SEC's internal CIK automatically, using SEC's own published company_tickers.json mapping (fetched once when the actor starts) — you don't need to look up the CIK yourself first, and a numeric CIK still works directly if you already have it.
  • Batch-shaped. Paste a list of tickers or CIKs, get one row per item back, with maxConcurrency controlling how many requests run in parallel — no per-item clicking through the EDGAR web UI, and no writing your own retry logic around SEC's rate limits.
  • Filing history included for free. Every found row carries the 10 most recent filings — form type, filing date, accession number, primary document — at no extra charge over the company profile itself. You don't pay a second time to see what a company has filed recently.
  • You only pay for a resolved company. A ticker or CIK that doesn't resolve to a real SEC filer still returns a row (found: false), so your dataset always has one row per input line, but that row is never billed.

What you get

One row per input item. Every field below is a stable, always-present key — null or an empty array when SEC doesn't have that value for a given filer, never a missing key.

FieldType / formatDescription
querytextThe ticker or CIK you submitted, echoed back.
foundbooleantrue if the ticker/CIK resolved to a registered SEC filer, false for a miss.
statustextOK for a resolved company, or a short reason for a miss.
ciktextThe SEC Central Index Key, 10 digits, zero-padded (e.g. 0000320193).
nametextThe filer's legal name as registered with SEC.
tickersarrayAll stock ticker symbols currently registered to this filer.
exchangesarrayThe exchange(s) each ticker trades on (e.g. Nasdaq, NYSE).
sicCodetextThe 4-digit Standard Industrial Classification code SEC has on file.
sicDescriptiontextThe industry description for that SIC code.
entityTypetextSEC's entity classification (e.g. operating).
categorytextFiler category (e.g. Large accelerated filer, Smaller reporting company).
stateOfIncorporationtextTwo-letter state or jurisdiction code where the entity is incorporated.
fiscalYearEndtextFiscal year end as MMDD (e.g. 0928 for September 28).
addressobjectRegistered business address — street, city, state/country, zip, as SEC has it on file.
formerNamesarrayPrior legal names SEC has recorded for this filer, if any.
recentFilingsarrayThe 10 most recent SEC filings of any type, newest first. Each entry expands to:
  formtextFiling form type (e.g. 10-K, 10-Q, 8-K).
  filingDatedateThe date the filing was submitted to SEC.
  accessionNumbertextSEC's unique accession number for the filing.
  primaryDocumenttextFilename of the filing's primary document on EDGAR.
scrapedAttimestamp (ISO 8601)When this actor fetched the record.

Price

$4 per 1,000 companies, plus a $0.00005 start fee. Misses (found:false) are never charged.

That $4 per 1,000 is the FREE-tier per-row price ($0.004 per company found); it drops to $0.002 per company found on the GOLD tier. Either way, the actor-start fee ($0.00005) is charged once per run, not per item, and a ticker or CIK that doesn't resolve to a real SEC filer costs nothing at all.

Run 1,000 tickers or CIKs through this actor: ~$4 if every one resolves, less if some don't — that's 1,000 × $0.004 plus the one-time $0.00005 actor start. The same 1,000 rows through a credit-based enrichment platform: $80–$400. The gap is the point of going straight to the official source instead of routing through a general-purpose enrichment credit.

Realistically, expect a mixed list to cost less than the worst case: most outbound lists include private companies, small businesses, and non-US entities that were never going to be SEC filers in the first place, and none of those cost you anything here.

How to use

  1. In the Apify Console. Open the actor page and click Start — the tickersOrCiks field is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found.
  2. Via the API. Call it directly with a POST request — no Console needed once you have an API token:
    curl "https://api.apify.com/v2/acts/accountable_eel~sec-edgar-company-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"tickersOrCiks":["AAPL"]}'
  3. On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.
  1. Open the actor and paste your list of tickers or CIKs into tickersOrCiks — one per line. Mix formats freely: AAPL, 320193, and 0000320193 are all accepted.
  2. Optionally raise or lower maxConcurrency to control how many SEC requests run in parallel.
  3. Press Start. Each item becomes one dataset row: a resolved company with its full profile and recent filings, or found: false for anything SEC doesn't recognize.
  4. Export the dataset as CSV/JSON, or pull it via the API into Clay, n8n, Make, or a script — the field names are stable across runs.

Input

{
"tickersOrCiks": [
"AAPL"
]
}

One item per line — a stock ticker symbol or a numeric SEC CIK (with or without leading zeros). Accepted formats: AAPL, 320193.

maxConcurrency (optional) controls how many SEC requests run in parallel; it isn't shown in the input schema above but is accepted alongside tickersOrCiks.

Sample output

queryfoundstatusciknametickersexchangessicCodesicDescriptionentityTypecategorystateOfIncorporationfiscalYearEndaddressformerNamesrecentFilingsformfilingDateaccessionNumberprimaryDocumentscrapedAt
AAPLtrueOK0000320193Apple Inc.["AAPL"]["Nasdaq"]3571Electronic ComputersoperatingLarge accelerated filerCA0926{"street1":"ONE APPLE PARK WAY","street2":null,"city":"CUPERTINO","stateOrCountry":"CA","zipCode":"95014","stateOrCountryDescription":"CA","isForeignLocation":null,"foreignStateTerritory":null,"country":null,"countryCode":null}["APPLE INC","APPLE COMPUTER INC","APPLE COMPUTER INC/ FA"][{"form":"4","filingDate":"2026-08-27","accessionNumber":"0001140361-26-034741","primaryDocument":"xslF345X06/form4.xml"},{"form":"4","filingDate":"2026-08-20","accessionNumber":"0001140361-26-033928","primaryDocument":"xslF345X06/form4.xml"},{"form":"4","filingDate":"2026-08-13","accessionNumber":"0001140361-26-032884","primaryDocument":"xslF345X06/form4.xml"},{"form":"144","filingDate":"2026-08-11","accessionNumber":"0001950047-26-007959","primaryDocument":"xsl144X01/primary_doc.xml"},{"form":"10-Q","filingDate":"2026-07-31","accessionNumber":"0000320193-26-000020","primaryDocument":"aapl-20260627.htm"},{"form":"8-K","filingDate":"2026-07-30","accessionNumber":"0000320193-26-000018","primaryDocument":"aapl-20260730.htm"},{"form":"4","filingDate":"2026-06-17","accessionNumber":"0001140361-26-025622","primaryDocument":"xslF345X06/form4.xml"},{"form":"4","filingDate":"2026-06-17","accessionNumber":"0001140361-26-025620","primaryDocument":"xslF345X06/form4.xml"},{"form":"4","filingDate":"2026-05-29","accessionNumber":"0001140361-26-023363","primaryDocument":"xslF345X06/form4.xml"},{"form":"SD","filingDate":"2026-05-28","accessionNumber":"0001140361-26-023149","primaryDocument":"ef20073373_sd.htm"}]2026-08-31T06:10:17.719Z

A real row looks like this:

{
"query": "AAPL",
"found": true,
"data": {
"cik": "0000320193",
"name": "Apple Inc.",
"tickers": ["AAPL"],
"exchanges": ["Nasdaq"],
"sicCode": "3571",
"sicDescription": "Electronic Computers",
"entityType": "operating",
"category": "Large accelerated filer",
"stateOfIncorporation": "CA",
"fiscalYearEnd": "0928",
"address": {
"street1": "One Apple Park Way",
"city": "Cupertino",
"stateOrCountry": "CA",
"zipCode": "95014"
},
"formerNames": [],
"recentFilings": [
{
"form": "10-Q",
"filingDate": "2026-08-01",
"accessionNumber": "0000320193-26-000075",
"primaryDocument": "aapl-20260628.htm"
}
]
},
"scrapedAt": "2026-08-19T10:00:00.000Z"
}

A ticker or CIK that doesn't resolve to a registered company still gets a row (found: false), so you always get one row per input — you're just never charged for it.

Use it from Clay, n8n, Make, or an AI agent

This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.

curl "https://api.apify.com/v2/acts/accountable_eel~sec-edgar-company-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-X POST \
-H "Content-Type: application/json" \
-d '{"tickersOrCiks":["AAPL"]}'

n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~sec-edgar-company-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"tickersOrCiks":["AAPL"]} (swap in an expression from an earlier node for a real value).

Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~sec-edgar-company-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"tickersOrCiks":["{{company}}"]}, mapping the row's company into the tickersOrCiks array.

MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "SEC EDGAR Company Lookup | Apify" — the agent will find and run this actor.

Tips

  • Prefer the CIK when you already have it. It skips ticker resolution entirely and avoids ambiguity for companies whose ticker has changed or been reused.
  • A found row doesn't mean "currently trading." tickers and exchanges reflect what SEC has registered; a delisted company can still resolve and return a full filer record.
  • formerNames and stateOfIncorporation are good due-diligence fields — cross-check a counterparty's legal name against what they operate under before onboarding them.
  • Set maxConcurrency conservatively for large lists. SEC's fair-access policy expects well-behaved, identified traffic; the default is tuned to stay within it.
  • recentFilings is capped at 10. For a company with a longer filing history you'll get the 10 most recent, not the full archive — use the accessionNumber and EDGAR's own site for anything older.
  • Mixed lists are normal and cheap. If your source list blends public companies with private ones, don't pre-filter — the misses cost nothing, so it's simpler to run the whole list and let found tell you which rows are SEC filers.

vs. alternatives

What it costsWhat you getTrade-off
This actor (sec-edgar-company-lookup)$0.004 per company found (less on paid tiers), $0.00005 actor start, nothing for a missLegal name, industry classification, entity type, state of incorporation, and the 10 most recent SEC filings for a US public company, read from SEC's own EDGAR APICovers SEC-registered filers only — private and non-US companies won't match, and ticker resolution only covers entities in SEC's published ticker mapping.
SEC EDGAR directlyFreeThe same data, from the same sourceIt's the same source — this actor exists for the batch: paste N tickers or CIKs, get N rows back, ticker-to-CIK resolution and rate limits handled, in the format your table already reads. Looking up one company once? Use EDGAR's site directly.
Clay$0.08–$0.40 per enriched row in credits, on top of a seatA whole enrichment workspace — waterfalls across dozens of providers, plus the table and the sequencing around itIf you want one place that does everything and you're not counting rows, that's Clay. This is one column, priced per column, callable from Clay via its HTTP step.
Doing it yourselfYour time, plus: fetching and maintaining SEC's ~795KB ticker-to-CIK mapping, handling SEC's fair-access User-Agent requirement and rate limits, and parsing the JSON error body SEC returns for an unknown CIKThe same dataThe maintenance this actor absorbs — the ticker mapping refresh, the User-Agent policy, and the retry/rate-limit handling around a single free API.

Prices for third-party tools are their published list prices as of August 2026 and are not tracked here — check the vendor before relying on the comparison.

FAQ

What happens if a ticker or CIK doesn't resolve? You get a dataset row with found: false and never pay for it. Most privately held companies, small businesses, and non-US companies aren't SEC filers at all, so a miss usually means "not a US public company" rather than an error. SEC returns a non-JSON error body for an unknown CIK, and an unrecognized ticker simply fails to resolve — both are treated as a clean, unbilled miss.

Does this cover companies outside the US? Only if they're SEC-registered filers — foreign private issuers with an SEC CIK can be looked up by CIK. Most non-US companies simply aren't in SEC's system and won't resolve; this actor is built for the US public-company and SEC-filer population, not a general company registry.

Is this personal data? Any GDPR concerns? No. This is a filer record for a legal entity — company name, industry code, incorporation state, filing history — not personal data about an individual, so GDPR's personal-data rules don't apply to it.

Are there rate limits I should worry about? SEC's fair-access policy expects identified, well-behaved traffic rather than a hard published cap; this actor sends the required descriptive User-Agent and defaults maxConcurrency to a level that stays within it. For very large lists, keep maxConcurrency at the default or lower.

How fresh is the data? Every run queries data.sec.gov live — there's no cache or stored snapshot. scrapedAt on each row is the actual fetch time, so a company's most recent filing shows up as soon as SEC has indexed it.

Can I schedule this to run regularly? Yes — set up an Apify schedule to re-run the actor against a watchlist of tickers or CIKs on a cadence, and diff recentFilings or formerNames between runs to catch new filings or name changes.

Can an AI agent use this directly? Yes — the actor is discoverable through the Apify MCP server, so an MCP client (Claude, Cursor, or another agent runtime) can find and run it by name without you writing integration code.

Do I need proxies or an SEC account? No. SEC EDGAR's submissions API is free and unauthenticated; the actor's only obligation to SEC is sending a descriptive User-Agent, which it does automatically.

What filing types show up in recentFilings? Whatever SEC has most recently accepted from that filer — 10-Ks, 10-Qs, 8-Ks, proxy statements, Form 4 insider transactions, and everything else in EDGAR's form taxonomy all appear, sorted newest first and capped at 10. There's no filter by form type on the input side; if you only want annual reports, filter the form field in your own workflow after the row comes back.