# SEC Company Financials from XBRL (10-K, 10-Q) (`transparent_meteorite/sec-company-financials-xbrl`) Actor

Get annual or quarterly company financials from free SEC XBRL filings: revenue, net income, assets, liabilities, cash flow, free cash flow, margins, growth and a 0-100 fundamentals score per company and fiscal period. Enter tickers or CIKs. No key, no login, no proxy.

- **URL**: https://apify.com/transparent_meteorite/sec-company-financials-xbrl.md
- **Developed by:** [Detroit Web Agent - Open Data](https://apify.com/transparent_meteorite) (community)
- **Categories:** Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 60.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.30 / 1,000 company-period rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## SEC Company Financials from XBRL (10-K, 10-Q)

**SEC company financials from XBRL**: annual or quarterly revenue, net income, assets, liabilities, cash flow, free cash flow, margins, growth and a 0-100 fundamentals score for US public companies, from free SEC filings with no API key.

Get clean annual or quarterly financials for US public companies straight from the free SEC XBRL filings. Enter tickers or CIK numbers and get one row per company and fiscal period with revenue, net income, assets, liabilities, cash flow, free cash flow, margins, growth and a 0 to 100 fundamentals score. No API key, no login, no proxy.

### What is SEC Company Financials from XBRL (10-K, 10-Q)?

Get annual or quarterly company financials from free SEC XBRL filings: revenue, net income, assets, liabilities, cash flow, free cash flow, margins, growth and a 0-100 fundamentals score per company and fiscal period. Enter tickers or CIKs. No key, no login, no proxy. Run it from the Apify Console, the API or a schedule, and export the results as JSON, CSV, Excel or HTML.

### Why use it

- **Official source.** The numbers come from the SEC's own XBRL data, and each row links to the filing.
- **Flat and ready.** No tag hunting; fields have fixed names.
- **Polite to the SEC.** It paces its requests and sends a descriptive user agent.

### Output

One row per company and fiscal period.

| Field | Meaning |
|---|---|
| `ticker`, `companyName`, `cik`, `industry`, `sic`, `exchange` | Who the company is. |
| `fiscalYear`, `fiscalPeriod`, `periodEnd`, `form`, `filedDate` | Which period and filing the row comes from. |
| `revenue`, `grossProfit`, `operatingIncome`, `netIncome`, `epsDiluted` | Income statement figures in US dollars. |
| `totalAssets`, `totalLiabilities`, `stockholdersEquity`, `cashAndEquivalents` | Balance sheet figures. |
| `operatingCashFlow`, `capex`, `freeCashFlow`, `sharesOutstanding` | Cash flow and share data. |
| `grossMargin`, `operatingMargin`, `netMargin`, `revenueGrowthYoY`, `liabilitiesToEquity` | Derived ratios. |
| `fundamentalsScore` | 0 to 100 score, empty when too little data. |
| `accessionNumber`, `filingUrl`, `scrapedAt` | Source filing and run time. |

### Sample output

```json
{
  "ticker": "EXMP",
  "companyName": "Example Corp",
  "fiscalYear": 2025,
  "fiscalPeriod": "FY",
  "periodEnd": "2025-09-27",
  "form": "10-K",
  "revenue": 1000000000,
  "netIncome": 200000000,
  "netMargin": 0.2,
  "freeCashFlow": 180000000,
  "fundamentalsScore": 74,
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/0000000000/000000000025000001/example.htm"
}
```

The values above illustrate the format and are not a real company.

### Input

| Field | What it does |
|---|---|
| `tickers` | US-listed tickers such as AAPL or MSFT. Up to 200 per run. |
| `ciks` | Optional SEC CIK numbers, for companies without a ticker. |
| `periodType` | `annual` (10-K) or `quarterly` (10-Q). Default annual. |
| `yearsBack` | Fiscal years of history per company, newest first. Default 5. |
| `maxItems` | Stop after this many company-period rows. Default 100. |

Sample input:

```json
{ "tickers": ["AAPL", "MSFT", "NVDA"], "periodType": "annual", "yearsBack": 5, "maxItems": 100 }
```

### Pricing

Pay per event. You pay a small fixed price per company-period row delivered, shown on the Pricing tab, plus a tiny start fee per run. You can set a maximum cost per run in the run options.

### What does this Actor do?

Public companies file their 10-K and 10-Q reports with the SEC in XBRL, a structured format. The SEC publishes that data for free, but the raw files hold thousands of overlapping tags. This actor reads the company facts and submissions endpoints on sec.gov, picks the right figures for each fiscal period, and returns a flat table that is ready for a spreadsheet, dashboard or model.

- Annual mode returns one row per fiscal year from 10-K filings.
- Quarterly mode returns one row per quarter from 10-Q filings (Q1 to Q3; the fourth quarter appears only inside the 10-K and is not split out).
- Derived fields: gross, operating and net margin, free cash flow, year over year revenue growth and liabilities to equity.
- `fundamentalsScore` from 0 to 100 summarises five ratios, 20 points each, and is empty when fewer than three are available.
- Each row links to the filing (`filingUrl`) so you can check the source.

**Run in 30 seconds**

1. Open the Actor and press **Try for free**.
2. Keep the prefilled tickers and press **Start**.
3. Open the **Output** tab and download JSON, CSV or Excel.

### Use cases and workflows

- Build a fundamentals screener or watchlist in a spreadsheet or BI tool.
- Feed multi-year financials into a valuation model or research notes.
- Run it quarterly and send new filings to Slack, a database or an n8n workflow.
- Compare margins and growth across competitors in one industry.
- Give an analyst or student a free, sourced starting dataset.

### Limits

- Up to 200 companies per run.
- The fourth quarter is not split out in quarterly mode.
- Figures are as filed. Later restatements may differ.
- Data is only as current as the company's latest filing.

### Related Actors

- [SEC Form D Funding Leads](https://apify.com/transparent_meteorite/sec-form-d-funding-leads) lists companies that recently filed a Form D to raise money.
- [IRS Nonprofit 990 Financials and Health Score](https://apify.com/transparent_meteorite/irs-nonprofit-990-financials) does a similar financial summary for US nonprofits.
- [Company News Monitor](https://apify.com/transparent_meteorite/company-news-monitor) tracks news about the companies you follow.

Found a bug or need a field? Open an issue on the Issues tab with the run URL.

### FAQ

**Where does the data come from?**
The SEC company tickers list, the XBRL company facts API and the submissions API on sec.gov.

**Which companies are covered?**
US domestic filers that file 10-K and 10-Q with XBRL. Foreign private issuers, funds and very new filers may return no rows, and the run log says so.

**Why is a field empty?**
Companies use different XBRL tags. When a figure is not reported for a period, the field is empty.

**Is the fundamentals score investment advice?**
No. It is a simple rule-based summary of five ratios. Do your own research.

**Did this actor do the job?** If it saved you time, a short honest review on the [Reviews tab](https://apify.com/transparent_meteorite/sec-company-financials-xbrl/reviews) helps other people judge it. If something was off, open an Issue on this page with the input you used. I read every one and fix real bugs, usually the same day.

**This Actor vs constructive_calm/sec-edgar-scraper:** that one covers many SEC filing types, including XBRL facts, Form 4, 13F and 8-K items. Choose this one for one flat row per company and fiscal period with fixed field names, margins, growth and a fundamentals score.

### Changelog

- 2026-10-24: Initial release.
- 2026-10-25: Documentation updated: README refreshed.
- 2026-10-25: Listing refresh: new Store icon, README reorganised (overview, data fields, pricing, FAQ) and changelog tab added. No code change.

# Changelog

This Actor's version history is a separate document: https://apify.com/transparent_meteorite/sec-company-financials-xbrl/changelog.md

# Actor input Schema

## `tickers` (type: `array`):

US-listed stock tickers, for example AAPL or MSFT. Up to 200 companies per run.

## `ciks` (type: `array`):

Optional SEC Central Index Key numbers, with or without leading zeros, for example 320193. Useful for companies without a ticker.

## `periodType` (type: `string`):

Annual returns one row per fiscal year from 10-K filings. Quarterly returns one row per quarter from 10-Q filings (Q1 to Q3; the fourth quarter is only in the 10-K and is not split out).

## `yearsBack` (type: `integer`):

How many fiscal years of history per company, newest first. Quarterly mode returns up to 3 quarters per year.

## `maxItems` (type: `integer`):

Stop after this many company-period rows. You pay only for rows delivered.

## Actor input object example

```json
{
  "tickers": [
    "AAPL",
    "MSFT",
    "NVDA",
    "AMZN",
    "GOOGL",
    "META",
    "JPM",
    "XOM",
    "WMT",
    "KO"
  ],
  "periodType": "annual",
  "yearsBack": 5,
  "maxItems": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "tickers": [
        "AAPL",
        "MSFT",
        "NVDA",
        "AMZN",
        "GOOGL",
        "META",
        "JPM",
        "XOM",
        "WMT",
        "KO"
    ],
    "periodType": "annual",
    "yearsBack": 5,
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("transparent_meteorite/sec-company-financials-xbrl").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "tickers": [
        "AAPL",
        "MSFT",
        "NVDA",
        "AMZN",
        "GOOGL",
        "META",
        "JPM",
        "XOM",
        "WMT",
        "KO",
    ],
    "periodType": "annual",
    "yearsBack": 5,
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("transparent_meteorite/sec-company-financials-xbrl").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "tickers": [
    "AAPL",
    "MSFT",
    "NVDA",
    "AMZN",
    "GOOGL",
    "META",
    "JPM",
    "XOM",
    "WMT",
    "KO"
  ],
  "periodType": "annual",
  "yearsBack": 5,
  "maxItems": 100
}' |
apify call transparent_meteorite/sec-company-financials-xbrl --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,transparent_meteorite/sec-company-financials-xbrl"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/dpKxe1oV4rC95gqBW/builds/FAimuPvphqDsMTwAC/openapi.json
