SEC XBRL Screener - Company Financials Data avatar

SEC XBRL Screener - Company Financials Data

Pricing

from $4.00 / 1,000 company rows

Go to Apify Store
SEC XBRL Screener - Company Financials Data

SEC XBRL Screener - Company Financials Data

Screen US public companies on SEC XBRL financial data: pick metrics and a period, get one row per company with a column for each, such as revenue, net income, assets, cash and R&D, joined across thousands of SEC EDGAR filers. Sort like a stock screener. No API key.

Pricing

from $4.00 / 1,000 company rows

Rating

0.0

(0)

Developer

Tom Awake

Tom Awake

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Categories

Share

What does SEC XBRL Screener do?

Pick financial metrics and a period. Get one row per US public company, one column per metric — joined across thousands of SEC filers.

No login. No API key. No proxies.

What the raw SEC API makes you do

The SEC's XBRL frames API returns one metric at a time. One call gives you revenue for 1,934 companies. Another gives you total assets for 5,650. Joining them, and knowing they are not even asked for the same way, is left to you.

This Actor does the joining. Three metrics, three calls, one table:

CompanyRevenueNet incomeAssets
WALMART INC.165.6 B4.5 B262.4 B
UnitedHealth Group109.6 B6.3 B309.8 B
CVS HEALTH94.6 B1.8 B255.6 B

Two traps it handles that cost you data

Duration versus instant. Revenue happens over a quarter; assets exist at a date. The SEC encodes that as CY2025Q1 against CY2025Q1I, and asking the wrong way returns a bare 404 with no explanation. Balance-sheet metrics are marked in the picker and the period is adjusted for you.

There is no single revenue concept. Companies reporting under ASC 606 tag RevenueFromContractWithCustomerExcludingAssessedTax and never populate Revenues. Query only the obvious one and you silently lose the largest companies in the market:

Metric usedCoverage on $1B+ R&D companies
us-gaap:Revenues alone41 % — no Apple, no Meta, no Microsoft
Revenue (any reported basis)100 %

The default revenue metric queries all three concepts and keeps the first value each company actually reported. Every row carries a revenue_concept column naming which one it came from, so you can see when you are comparing unlike bases.

Output

Stable columns: cik, entityName, location, secUrl.

Then per metric: the value, plus _periodEnd (the date the figure covers), _accession (the filing it came from) and _concept (the us-gaap tag used). Every row carries every requested column, empty where not reported, so the file stays rectangular for a spreadsheet.

Metrics

Income statement — revenue (any basis), revenue (strict), revenue from contracts, gross profit, operating income, net income, R&D expense, SG&A expense, interest expense, EPS diluted, EPS basic

Cash flow — operating cash flow, capital expenditure

Balance sheet — total assets, total liabilities, stockholders' equity, cash and equivalents, long-term debt, inventory, goodwill, shares outstanding

Input

{
"metrics": ["revenue", "net-income", "assets"],
"year": 2025,
"quarter": "Q1",
"maxItems": 2000
}
FieldDefaultNotes
metricsrevenue, net income, assetsOne column each; each costs a call
year2025XBRL starts around 2009
quarterQ1Q1–Q4 or full year
onlyCompletefalseKeep only companies reporting every metric
maxItems2000Rows, sorted by the sort metric
sortByfirst metricMust be one you selected
minValueThreshold on the sort metric

Use cases

  • Screening — every company above a revenue, R&D or debt threshold.
  • Peer benchmarking — pull a peer set and compare on identical metrics.
  • Market and sector sizing — aggregate a metric across all filers.
  • Model inputs — a clean quarterly panel without a data vendor.
  • Anomaly hunting — companies whose reported figures move oddly between quarters.

Limits, honestly

  • Recent quarters fill in over months. Companies file on their own schedules, so the latest quarter is always partial. Step back a quarter for a complete picture.
  • Coverage differs per metric. Net income is tagged by 5,361 companies, revenue by fewer, long-term debt by 1,534. A missing value usually means the company did not tag that concept, not that the figure is zero.
  • Fiscal years are not calendar years. A frame labelled CY2025Q1 groups what companies reported as that calendar period; a company with a January year-end aligns differently. _periodEnd on every row tells you exactly what was covered.
  • onlyComplete can cut results sharply — one untagged concept removes the company entirely.
  • Requests are paced and carry an identifying User-Agent, as the SEC requires.
  • Not affiliated with the SEC.

Use SEC XBRL Screener as an API

Call it from your own code with the Apify client, here in Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("DataIO/sec-edgar-xbrl-financial-screener").call(run_input={
'metrics': ['revenue', 'net-income', 'assets'],
'year': 2025,
'quarter': 'Q1',
'maxItems': 500,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

It also works from JavaScript, Make, Zapier, n8n, and from AI agents through the Apify MCP server.

Other actors you might like

FAQ

The actor reads public data from its official source, without logging in and without bypassing any access control. What you do with the data, for example contacting people listed in it, is your responsibility under the laws that apply to you, such as GDPR in Europe.

Can I run it on a schedule?

Yes. Create a schedule in Apify Console, daily or weekly for example, and each run delivers a fresh dataset, which you can send by email, webhook or integration.

Can AI agents use it?

Yes. It is available through the Apify MCP server, and every input field is described in its input schema, so an agent can call it directly.