SEC EDGAR Financial Data & Company Screener (XBRL)
Pricing
Pay per usage
SEC EDGAR Financial Data & Company Screener (XBRL)
Screen every US public company by any financial metric, or pull one company's history. Official SEC XBRL data, every figure linked to its filing.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Ground Truth
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Screen every US public company by any financial metric, or pull one company's full reported history — with every figure linked back to the SEC filing it came from.
Built on the SEC's official XBRL data at data.sec.gov. No API key, no scraping, no third-party data vendor.
The thing sec.gov can't do
EDGAR serves filings one company at a time. There is no way on sec.gov to ask "which public companies had revenue over $100 billion last year" or "rank every filer by cash on hand."
The data exists. The SEC's frames API returns one metric across all 5,849 filers in a single call — but it comes back as raw XBRL with tags like RevenueFromContractWithCustomerExcludingAssessedTax, and getting the period format wrong returns an empty result that looks like "no data" rather than "you asked wrong."
This tool closes that gap.
Two modes
Screen — one metric, every company
mode: screenmetric: revenueperiod: CY2023min_value: 100000000000
{"company": "Walmart Inc.","cik": 104169,"metric": "revenue","xbrl_tag": "Revenues","value": 648125000000,"unit": "USD","period_end": "2023-12-31","period_type": "annual","accession": "0000104169-26-000055","verify_url": "https://www.sec.gov/Archives/edgar/data/104169/..."}
Company — one company's history
mode: companycompany: AAPLmetric: net_incomeperiod_type: annual
Returns Apple's net income for every fiscal year it has reported, deduplicated, with the form and filing date on each.
Three traps this handles for you
Raw SEC data will mislead you in three specific ways. Each is silent — you get a plausible-looking number that's wrong.
1. Quarterly figures mixed with year-to-date. A 10-Q reports the quarter and the cumulative year-to-date figure, both with the same end date. Comparing "net income" across filings silently mixes a three-month number with a nine-month one. Every record here carries period_type and period_days, and you can filter on it.
2. The same fact repeated with different values. This year's 10-K restates last year's figures as comparatives, and amendments repeat earlier periods. Ask for annual net income and you get some years two or three times. This tool keeps one record per period, from the most recent filing — which is what the SEC treats as authoritative after a restatement.
3. Balance-sheet metrics need a different period format. Assets is measured at a point in time and needs CY2024Q1I; Revenues is measured over a period and must not have the suffix. Get it wrong and you get an empty result with no error. Handled automatically — ask for assets and CY2024 and it does the right thing.
Every figure is verifiable
Each record carries a verify_url to the exact filing. Open it, find the line item, compare.
That matters most when an AI is in the loop: when an assistant reports a company's revenue, you should be able to check it against the filing rather than trust the chain.
Metrics
revenue · net_income · gross_profit · operating_income · assets · liabilities · equity · cash · inventory · long_term_debt · goodwill · current_assets · current_liabilities · operating_cash_flow · capex · dividends_paid · rd_expense · sga_expense · interest_expense · income_tax · eps_basic · eps_diluted · shares_outstanding
Any raw XBRL tag also works — Revenues, NetIncomeLoss, and so on — for callers who know the taxonomy.
Companies file the same concept under different tags, so each friendly name tries several in order until one returns data.
Configuration
| Input | Type | Default | Description |
|---|---|---|---|
mode | string | screen | screen (all companies) or company (one company's history) |
metric | string | revenue | Friendly name or raw XBRL tag |
company | string | — | Required in company mode. Ticker or CIK |
period | string | CY2024 | screen mode. CY2024 or CY2024Q1 |
period_type | string | any | quarterly, half_year, nine_month, annual, instant |
min_value / max_value | number | — | Value bounds. Negatives are legal — losses are real |
order | string | desc | desc or asc |
limit | integer | 50 | 1–200 |
Honest limits
- XBRL coverage starts around 2009. Older filings exist on EDGAR but not as structured data.
- Only what companies actually tagged. A company that didn't file a concept won't appear for it, and smaller filers tag less.
- It reports; it does not compute. No ratios, growth rates, or derived metrics — those would be our arithmetic rather than the company's filing, and you couldn't verify them against the source.
- One metric per run. The SEC endpoints are shaped that way.
- Not investment advice. It's a data-reformatting tool.
FAQ
Where does the data come from? data.sec.gov, the SEC's official structured-data API. The same numbers as the filings themselves.
Is this scraping? No. Documented public API, no key, no login, no bot evasion. SEC requires a descriptive User-Agent on requests, which this sends.
How current is it? As current as EDGAR. A figure appears once the company files it.
Why does a company show a value I don't recognise? Check period_type and xbrl_tag. It's usually a year-to-date figure being read as a quarter, or a company using a different tag.
Can I get a growth rate or ratio? Not directly, by design — pull the periods you need and compute it yourself, so the arithmetic is yours and every input is verifiable.
Source and licence
Data: SEC EDGAR, US Securities and Exchange Commission. Public domain.