SEC EDGAR Fundamentals Scraper avatar

SEC EDGAR Fundamentals Scraper

Pricing

from $1.40 / 1,000 results

Go to Apify Store
SEC EDGAR Fundamentals Scraper

SEC EDGAR Fundamentals Scraper

Company profiles, COMPLETE filing history and XBRL financials from SEC EDGAR by ticker or CIK. Recovers the older filings capped out of SEC's main document (up to 79% of history) and drops restatement duplicates so each period has one canonical value.

Pricing

from $1.40 / 1,000 results

Rating

0.0

(0)

Developer

Ibnu Adzim

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

Company profiles, complete filing history and XBRL financials from the U.S. Securities and Exchange Commission's EDGAR system — by ticker or CIK.

Public U.S. government data. No API key, no login, no WAF, no proxy required.


Why this one is different

Most EDGAR clients read SEC's filings.recent block and stop there. That block is capped at about 1,000 filings, and everything older lives in separate archive files that must be fetched explicitly. Measured on real companies:

CompanyFilings in recentFilings in archiveSilently lost
Apple1,001 (back to 2015)1,240 (back to 1994)55%
Berkshire Hathaway1,001 (back to 2017)1,394 (back to 1998)58%
General Electric1,002 (back to 2019)3,774 (back to 1994)79%

Turn on completeFilingHistory and you get all of it. Concretely: GE's 10-K annual reports come back as 26 filings spanning 1994→2026, of which 18 exist only in the archive.

Every run also tells you which case you are in — filingHistoryComplete, filingsInRecent, filingsInArchiveShards and archiveShardCount are on the summary row, so a truncated run can never be mistaken for an exhaustive one.

The second thing it gets right: restatements

SEC reports the same accounting period repeatedly across filings, sometimes with different values. Apple's total assets for period-end 2008-09-27 is reported as both $36.17B and $39.57B; period-end 2009-09-26 appears seven times. Dump every datapoint and you get duplicate, conflicting financials; dedupe naively and you may keep the superseded number.

canonicalFactsOnly (default on) keeps only datapoints carrying SEC's own canonical period marker — one value per calendar period — and reports how many were dropped in restatementPointsDropped. On a 3-concept Apple run that is 580 of 822 datapoints. Turn it off to audit every reported revision, with form, filed and accessionNumber on each row so you can see which filing said what.


Output

Four record types share one dataset, told apart by recordType:

  • COMPANY — name, CIK, tickers, exchanges, SIC industry, EIN, LEI, fiscal year end, state of incorporation, business address, website, former names.
  • FILING — form type, filing date, report period, accession number, document description, XBRL flags, plus ready-to-open filingIndexUrl and primaryDocumentUrl. fromArchiveShard marks rows a naive client misses.
  • FINANCIAL_FACT — one datapoint: concept, unit, value, period start/end, fiscal year/period, the form it came from, and isCanonical.
  • COMPANY_SUMMARY — the honesty row (see above), plus conceptsFound / conceptsMissing.
  • ERROR — one per input that could not be resolved, so every input maps to at least one row.

Input

{
"tickers": ["AAPL", "MSFT"],
"ciks": ["0000320193"],
"includeFilings": true,
"completeFilingHistory": true,
"formTypes": ["10-K", "10-Q"],
"filedFrom": "2015-01-01",
"includeFinancials": true,
"financialConcepts": ["Assets", "NetIncomeLoss", "StockholdersEquity"],
"canonicalFactsOnly": true
}

Tickers and CIKs can be mixed. CIKs are zero-padded automatically, so both 320193 and 0000320193 work.


Known limits (measured, not guessed)

Concept availability is industry-dependent. Across five filers in five industries: GrossProfit exists for 1 of 5, OperatingExpenses 1 of 5, OperatingIncomeLoss 2 of 5. JPMorgan, as a bank, reports no RevenueFromContractWithCustomerExcludingAssessedTax at all. Anything a filer does not report is listed in conceptsMissing rather than failing the run or returning silently empty.

A concept being present does not make it the right series. Revenues exists for all five filers sampled, but Apple has only 11 datapoints under it, the newest ending 2018 — Apple moved to RevenueFromContractWithCustomerExcludingAssessedTax after ASC 606. Check the datapoint count and period range before treating any single concept as a company's revenue history.

Several tickers can name one company. Alphabet has GOOGL, GOOG, GOOGN and GOOGM; JPMorgan has nine including preferred shares. Requesting two aliases fetches the company once and records every alias, rather than billing you for duplicate rows.

XBRL documents are large — 3.8 MB for Apple, 7.9 MB for JPMorgan — so includeFinancials costs one sizeable request per company. The response is filtered to your requested concepts before any row is written.

Only SEC registrants are covered. A ticker absent from SEC's own ticker map produces a ticker_not_found ERROR row.


Rate limits and etiquette

SEC's Fair Access policy asks automated clients to identify themselves and to stay under 10 requests/second. Both are honoured by default. Set userAgentContact to your own contact string (e.g. "Acme Research (research@acme.com)") — SEC prefers a real address.

A proxy is off by default: EDGAR has no WAF and no geo gating, and SEC would rather see one identifiable client than rotating IPs.