# SEC Company Fundamentals (EDGAR XBRL) (`darikami/sec-company-fundamentals`) Actor

Annual and quarterly financials of US-listed companies from the SEC's EDGAR XBRL data: revenue, net income, EPS, assets, liabilities, equity, cash flow - one clean row per company and fiscal period, de-duplicated, with the source filing of every value. Tickers or CIKs in, no API key.

- **URL**: https://apify.com/darikami/sec-company-fundamentals.md
- **Developed by:** [DARIKAMI GmbH](https://apify.com/darikami) (community)
- **Categories:** Business, Developer tools, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.00 / 1,000 company-period row delivereds

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 Fundamentals (EDGAR XBRL)

**Annual and quarterly financials of US-listed companies, from the SEC's EDGAR XBRL data.**
Tickers or CIKs in. One row per company and fiscal period out, de-duplicated, each value with the filing it comes from.
**USD 0.003 per company-period row (USD 3 per 1,000).** No API key. No XBRL parsing on your side.

| Ticker | Fiscal year | Form | Revenue (USD) | Net income (USD) | EPS diluted |
|---|---|---|---|---|---|
| AAPL | 2025 | 10-K | 416,161,000,000 | 112,010,000,000 | 7.46 |
| AAPL | 2026 | 10-K | 478,834,000,000 | 132,175,000,000 | 8.98 |
| MSFT | 2024 | 10-K | 245,122,000,000 | 88,136,000,000 | 11.80 |
| MSFT | 2025 | 10-K | 281,724,000,000 | 101,832,000,000 | 13.64 |
| MSFT | 2026 | 10-K | 331,839,000,000 | 133,749,000,000 | 17.95 |

The rows come from a real cloud run of 04.11.2026. Each row has about 20 more figures (list below).

### Who uses it

- **Stock screens and valuation models:** five years of revenue, margins and cash flow for a watch list in one run.
- **Dashboards and notebooks:** a clean table for pandas, Excel or a BI tool, refreshed after each earnings season.
- **AI agents and research tools:** financial statements as data, with the source filing for each number.

### What it does not do

- The figures are as filed by the companies. The SEC does not audit them.
- No segment figures, no company-specific tags, no computed ratios.
- Per-share values are not adjusted for later stock splits.
- This is not investment advice.

### Input

```json
{ "companies": ["AAPL", "MSFT", "BRK.B", "320193"], "periodType": "annual", "fromYear": 2020, "toYear": 2026 }
```

| Field | Meaning |
|---|---|
| `companies` | Tickers (`AAPL`, `BRK.B` or `BRK-B`) or SEC CIK numbers (`320193` or `0000320193`). Up to 1,000 per run. Tickers are resolved with the SEC's own ticker list. |
| `concepts` | The figures each row carries (list below). Empty = all of them. The price is per row, not per figure. |
| `periodType` | `annual` (fiscal years: 10-K, 20-F, 40-F), `quarterly` (three-month quarters: 10-Q) or `both`. Default `annual`. |
| `fromYear`, `toYear` | Fiscal years, as the company counts them. Both empty = the latest 5 fiscal years of each company. |
| `currency` | `reporting` (default) = the currency the company reports in. Or a code such as `USD`: then only values filed in that currency are taken. |

### Output (one item per company and fiscal period)

```json
{
  "input": "AAPL",
  "ticker": "AAPL",
  "cik": "0000320193",
  "companyName": "Apple Inc.",
  "fiscalYear": 2026,
  "fiscalPeriod": "FY",
  "periodType": "annual",
  "periodStart": "2025-09-28",
  "periodEnd": "2026-09-26",
  "form": "10-K",
  "filed": "2026-11-03",
  "accessionNumber": "0000320193-26-000026",
  "fromComparativeOnly": false,
  "currency": "USD",
  "revenue": 478834000000,
  "costOfRevenue": 245232000000,
  "grossProfit": 233602000000,
  "researchAndDevelopment": 45765000000,
  "operatingIncome": 158063000000,
  "netIncome": 132175000000,
  "epsBasic": 9.01,
  "epsDiluted": 8.98,
  "dilutedSharesWeighted": 14720306000,
  "assets": 404548000000,
  "currentAssets": 173857000000,
  "cash": 36305000000,
  "liabilities": 292455000000,
  "currentLiabilities": 169915000000,
  "longTermDebt": 68208000000,
  "stockholdersEquity": 112093000000,
  "sharesOutstanding": 14532259000,
  "operatingCashFlow": 145097000000,
  "capitalExpenditure": 9041000000,
  "dividendsPaid": 15721000000,
  "facts": {
    "revenue": { "value": 478834000000, "unit": "USD", "tag": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax", "accessionNumber": "0000320193-26-000026", "form": "10-K", "filed": "2026-11-03" },
    "epsDiluted": { "value": 8.98, "unit": "USD/shares", "tag": "us-gaap:EarningsPerShareDiluted", "accessionNumber": "0000320193-26-000026", "form": "10-K", "filed": "2026-11-03" }
  },
  "revised": [],
  "sic": "3571",
  "industry": "Electronic Computers",
  "fiscalYearEnd": "0926",
  "exchanges": ["Nasdaq"],
  "filerCategory": "Large accelerated filer",
  "error": null,
  "message": null,
  "source": "SEC EDGAR, XBRL companyfacts API (data.sec.gov) - figures as filed by the company",
  "sourceUrl": "https://data.sec.gov/api/xbrl/companyfacts/CIK0000320193.json",
  "retrievedAt": "2026-11-04T20:07:00.816Z"
}
```

(`facts` is shortened here. A real item has one entry for each figure found.)

- `companyName` is EDGAR's current name of the company.
- Amounts are in `currency`, unscaled: `478834000000` is USD 478.8 billion.
- Per-share values are in `currency` per share. Share counts are numbers of shares.
- A figure that the company did not file for that period is `null`.
- `form`, `filed` and `accessionNumber` name the period's own report. `facts.<figure>` names the filing of each value.
- `revised` lists the figures that a later filing changed (a restatement, or a stock split for per-share values).
- `fromComparativeOnly: true`: no report of the company covers this period as its own period. The values come from
  comparative columns of later reports. This occurs for the years before a company's first XBRL filing.

### The figures

| Field | XBRL tags, the preferred tag first |
|---|---|
| `revenue` | `Revenues`, `RevenueFromContractWithCustomerExcludingAssessedTax`, `RevenueFromContractWithCustomerIncludingAssessedTax`, `SalesRevenueNet`, `SalesRevenueGoodsNet`, `SalesRevenueServicesNet`, `RevenuesNetOfInterestExpense`; IFRS `Revenue`, `RevenueFromContractsWithCustomers` |
| `costOfRevenue` | `CostOfRevenue`, `CostOfGoodsAndServicesSold`, `CostOfGoodsSold`, `CostOfServices`; IFRS `CostOfSales` |
| `grossProfit` | `GrossProfit`; IFRS `GrossProfit` |
| `researchAndDevelopment` | `ResearchAndDevelopmentExpense`, `ResearchAndDevelopmentExpenseExcludingAcquiredInProcessCost`; IFRS `ResearchAndDevelopmentExpense` |
| `operatingIncome` | `OperatingIncomeLoss`; IFRS `ProfitLossFromOperatingActivities` |
| `netIncome` | `NetIncomeLoss`, `NetIncomeLossAvailableToCommonStockholdersBasic`, `ProfitLoss`; IFRS `ProfitLossAttributableToOwnersOfParent`, `ProfitLoss` |
| `epsBasic` | `EarningsPerShareBasic`, `EarningsPerShareBasicAndDiluted`; IFRS `BasicEarningsLossPerShare` |
| `epsDiluted` | `EarningsPerShareDiluted`, `EarningsPerShareBasicAndDiluted`; IFRS `DilutedEarningsLossPerShare` |
| `dilutedSharesWeighted` | `WeightedAverageNumberOfDilutedSharesOutstanding`; IFRS `AdjustedWeightedAverageShares` |
| `assets` | `Assets`; IFRS `Assets` |
| `currentAssets` | `AssetsCurrent`; IFRS `CurrentAssets` |
| `cash` | `CashAndCashEquivalentsAtCarryingValue`, `CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents`, `Cash`; IFRS `CashAndCashEquivalents` |
| `liabilities` | `Liabilities`; IFRS `Liabilities` |
| `currentLiabilities` | `LiabilitiesCurrent`; IFRS `CurrentLiabilities` |
| `longTermDebt` | `LongTermDebtNoncurrent`, `LongTermDebtAndCapitalLeaseObligations`; IFRS `LongtermBorrowings` |
| `stockholdersEquity` | `StockholdersEquity`, `StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest`; IFRS `EquityAttributableToOwnersOfParent`, `Equity` |
| `sharesOutstanding` | `CommonStockSharesOutstanding` |
| `operatingCashFlow` | `NetCashProvidedByUsedInOperatingActivities`, `NetCashProvidedByUsedInOperatingActivitiesContinuingOperations`; IFRS `CashFlowsFromUsedInOperatingActivities` |
| `capitalExpenditure` | `PaymentsToAcquirePropertyPlantAndEquipment`, `PaymentsToAcquireProductiveAssets`; IFRS `PurchaseOfPropertyPlantAndEquipmentClassifiedAsInvestingActivities` |
| `dividendsPaid` | `PaymentsOfDividends`, `PaymentsOfDividendsCommonStock`; IFRS `DividendsPaidClassifiedAsFinancingActivities` |

Tags without a prefix are US GAAP (`us-gaap`). IFRS tags are `ifrs-full`.

### How each value is chosen

The SEC lists a value once for each filing that reported it. A 10-K repeats the two or three earlier years as
comparatives. So FY2024's net income of Apple is in the 10-Ks of 2024, 2025 and 2026. Each copy carries the fiscal year
of its filing, not of the value. This actor removes these duplicates:

1. A period is identified by its own start and end dates. A fiscal year is 335-395 days, a quarter 75-105 days.
2. Balance-sheet values join the period that ends on their date.
3. For each period and figure, **the value with the latest filed date wins**. A later value includes any restatement.
4. On the same filing, the tag listed first in the table above wins.
5. The fiscal year and period come from the company's own report for that period.

Nothing is calculated. The actor does not add quarters, derive a fourth quarter, or compute ratios.

### Pricing (pay per event)

| Event | Price | When |
|---|---|---|
| `company-period` | **USD 0.003** | one row delivered: one company, one fiscal period |

Five years of one company cost USD 0.015. Five years of 500 companies cost USD 7.50. These items are free:

- an unknown ticker;
- an input that is not a ticker or a CIK;
- a CIK without XBRL data;
- a company with no figures in the years asked.

### Data source and terms

- **Source:** the SEC's EDGAR APIs on `data.sec.gov`: XBRL `companyfacts` (the figures) and `submissions` (industry,
  exchange, fiscal year end). Tickers come from `https://www.sec.gov/files/company_tickers.json`. The SEC states that these
  APIs "do not require any authentication or API keys to access".
- **Terms:** the SEC states: "Information presented on sec.gov is considered public information and may be copied or
  further distributed by users of the web site without the SEC's permission." Each item names its source.
- **Fair access:** the SEC allows at most 10 requests a second and asks automated tools to identify themselves.
- This actor is not affiliated with or endorsed by the U.S. Securities and Exchange Commission.

### What the data is - and is not

- The figures are **as filed by the companies** in XBRL. The SEC does not audit or correct them. A company can tag a
  figure wrongly. The filing itself (`accessionNumber`) is the authoritative text.
- **This is not investment advice.** The actor delivers data. It does not rate or recommend any security.
- **Personal data.** The figures are company-level facts. A CIK without financial data (a CIK can also belong to a
  person) returns only "no XBRL financial data", without a name.

### Limits

- Only standard, company-wide tags are in the SEC's API. Segment figures and company-specific tags are not.
- Some companies do not tag a total (for example total liabilities). The field is then `null`.
- **Per-share values and share counts are as last filed for that period.** A period last reported before a stock split
  is not adjusted for the split. Example: Apple's FY2017 diluted EPS is 9.21 (before the 4-for-1 split of 2020) and its
  FY2018 EPS is 2.98 (after it). `revised` shows such changes.
- Quarterly cash-flow figures exist mostly for the first quarter. Later 10-Qs report cash flow year-to-date, and the
  actor does not derive quarters from it.
- A fourth quarter appears only when the annual report states the quarter's own figures.
- IFRS filers (20-F) are covered for the IFRS tags in the table. Their amounts are in their reporting currency.
- The SEC's XBRL data starts in 2009. Smaller companies started in 2011.

### Run summary

The run summary is in the default key-value store under `SUMMARY`, the counts under `STATS`.
The data comes as the source publishes it, without warranty.

**More official-data actors by darikami:** [Swiss UID & VAT validator](https://apify.com/darikami/swiss-uid-validator) · [Swiss electricity tariffs](https://apify.com/darikami/swiss-electricity-tariffs) · [Swiss federal law MCP](https://apify.com/darikami/swiss-federal-law-mcp) · [German public tenders](https://apify.com/darikami/german-public-tenders).
In an AI agent: ask the Apify MCP server (`mcp.apify.com`) for `darikami/sec-company-fundamentals`.

# Actor input Schema

## `companies` (type: `array`):

Tickers (AAPL, BRK.B or BRK-B) or SEC CIK numbers (320193 or 0000320193), one per line. Up to 1,000 per run. Tickers are resolved with the SEC's own ticker list; a company that is not listed there can still be given by its CIK.

## `concepts` (type: `array`):

Which figures each row carries. Empty = all of them. The price is per row, not per figure.

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

Annual = fiscal years (10-K, 20-F, 40-F). Quarterly = three-month quarters (10-Q; a fourth quarter only where the annual report states it). Both = both kinds of rows.

## `fromYear` (type: `integer`):

First fiscal year (as the company counts it). Leave both years empty for each company's latest 5 fiscal years.

## `toYear` (type: `integer`):

Last fiscal year. Empty = up to the latest filed.

## `currency` (type: `string`):

"reporting" = the currency the company reports in (USD for US companies, EUR for SAP). Or a three-letter code such as USD: then only values filed in that currency are taken.

## Actor input object example

```json
{
  "companies": [
    "AAPL",
    "MSFT"
  ],
  "periodType": "annual",
  "currency": "reporting"
}
```

# Actor output Schema

## `results` (type: `string`):

One item per company-period: ticker, CIK, fiscal year and period, form, filed date and the figures as filed.

## `summary` (type: `string`):

SUMMARY record: pushed, charged, attempts, errors, stoppedByBudget, ok, message.

# 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 = {
    "companies": [
        "AAPL",
        "MSFT"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("darikami/sec-company-fundamentals").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 = { "companies": [
        "AAPL",
        "MSFT",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("darikami/sec-company-fundamentals").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 '{
  "companies": [
    "AAPL",
    "MSFT"
  ]
}' |
apify call darikami/sec-company-fundamentals --silent --output-dataset

```

## MCP server setup

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

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/utaSGAArQWNKcavxY/builds/YzSbxN0ZTJKPiHt2y/openapi.json
