# SEC Company Financials: XBRL Facts by Ticker | $1/1K (`one_dollar_store/sec-company-financials-xbrl`) Actor

$1 per 1,000 results, platform usage included. Reported financials for US listed companies from SEC XBRL filings, by ticker: revenue, net income, assets, cash flow, EPS and more, one row per fiscal year or quarter with filing date and form. No API key.

- **URL**: https://apify.com/one_dollar_store/sec-company-financials-xbrl.md
- **Developed by:** [One Dollar Store](https://apify.com/one_dollar_store) (community)
- **Categories:** Business, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

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: XBRL figures by ticker, one row per fiscal period

**$1 per 1,000 financial periods. Platform usage included. No rental, no minimum.**

The four most used SEC EDGAR and XBRL actors on Apify Store charge $2.00 to $9.90 per 1,000 results (Store prices checked 9 October 2026). This actor returns reported company financials for $1.

[Open it in Apify Console](https://console.apify.com/actors/rwcqlAY8M3AaSPJqQ/input)

### What it costs

| Periods | This actor | Most used SEC EDGAR and XBRL actors on the Store |
|---|---|---|
| 1,000 | $1.00 | $2.00 to $9.90 |
| 10,000 | $10.00 | $20 to $99 |
| 100,000 | $100.00 | $200 to $990 |

Plus $0.001 per run. Ten years of annual figures for 100 companies is 1,000 rows, so $1.00 plus the run fee.

### Why people switch

- **One flat price.** Compute is included, so the bill follows the number of rows and nothing else.
- **One tidy table.** Each row is one company and one fiscal year or quarter, with revenue, net income, assets, cash flow and more side by side. No filtering of raw facts.
- **Straight from the filings.** Figures come from the SEC's XBRL company facts, the same data companies file in their 10-K and 10-Q reports. Each row names the form, the filing date and the XBRL tag used.
- **You choose the figures.** Pick from 24 named figures or add any other us-gaap tag by name.

### Quick start

1. Open the actor, type a ticker such as AAPL, press **Start**.
2. Or paste this input:

```json
{ "tickers": ["AAPL", "MSFT"], "periods": "annual", "fromYear": 2018, "maxPeriodsPerCompany": 10, "maxItems": 50 }
```

3. Download the results as JSON, CSV or Excel, or read them through the API.

### Use it from code

```bash
curl -X POST "https://api.apify.com/v2/acts/one_dollar_store~sec-company-financials-xbrl/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"tickers": ["AAPL"], "maxPeriodsPerCompany": 10}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("one_dollar_store/sec-company-financials-xbrl").call(
    run_input={"tickers": ["AAPL", "MSFT"], "periods": "annual", "maxPeriodsPerCompany": 5, "maxItems": 20}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["ticker"], item["fiscalYear"], item.get("revenue"), item.get("netIncome"))
```

### Use it from an AI assistant

Claude, ChatGPT, Cursor and other assistants can call this actor through Apify's MCP server. Add it with this server address:

```
https://mcp.apify.com?tools=one_dollar_store/sec-company-financials-xbrl
```

Then ask, for example: "Get the last five years of revenue and net income for Apple and Microsoft from SEC filings."

### Switching from another SEC actor

Most take a ticker or CIK and a result limit. Here they are `tickers` (a list of tickers or CIK numbers) and `maxItems`. The core fields are `ticker`, `fiscalYear`, `fiscalPeriod`, `periodEnd`, `revenue`, `netIncome`, `totalAssets` and `filingUrl`.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `tickers` | list of text | none | Stock tickers such as `AAPL` or `BRK-B`, or SEC CIK numbers such as `320193`. One company per line. |
| `periods` | text | `annual` | `annual` (from 10-K reports), `quarterly` (from 10-Q reports) or `both`. |
| `concepts` | list | 10 core figures | Which figures to return. See the list below. |
| `extraConcepts` | list of text | none | Other us-gaap XBRL tags by name, for example `InventoryNet`. They appear under `extra`. |
| `fromYear` | number | none | Skip fiscal years before this one. |
| `valueBasis` | text | `latest` | `latest` uses the most recent filed value for a period (later filings can restate it). `original` uses the value as first reported. |
| `maxPeriodsPerCompany` | number | 10 | The most periods per company, newest first. |
| `maxItems` | number | 100 | Total rows for the run. Minimum 10. |

Figures you can pick in `concepts`: `revenue`, `costOfRevenue`, `grossProfit`, `researchAndDevelopment`, `operatingExpenses`, `operatingIncome`, `incomeTaxExpense`, `netIncome`, `epsBasic`, `epsDiluted`, `dilutedShares`, `operatingCashFlow`, `investingCashFlow`, `financingCashFlow`, `capitalExpenditures`, `dividendsPaid`, `totalAssets`, `currentAssets`, `cash`, `inventory`, `totalLiabilities`, `currentLiabilities`, `longTermDebt`, `stockholdersEquity`. The default is revenue, gross profit, operating income, net income, diluted EPS, total assets, total liabilities, stockholders equity, cash and operating cash flow.

Example:

```json
{
  "tickers": ["AAPL", "JPM"],
  "periods": "both",
  "concepts": ["revenue", "netIncome", "totalAssets", "epsDiluted"],
  "extraConcepts": ["InventoryNet"],
  "fromYear": 2023,
  "maxItems": 100
}
```

### Output fields

| Field | Meaning |
|---|---|
| `ticker`, `cik`, `companyName` | The company as the SEC lists it. |
| `periodType`, `fiscalYear`, `fiscalPeriod` | `annual` or `quarter`, the company's fiscal year, and `FY`, `Q1`, `Q2` or `Q3`. |
| `periodStart`, `periodEnd` | First and last day of the period. |
| `form`, `filedAt`, `accession`, `filingUrl` | The filing that carries the value: form type, filing date, accession number and a link to the filing folder on sec.gov. |
| `revenue`, `netIncome`... | One field per chosen figure, in US dollars (EPS in dollars per share, shares as a count). A figure the company did not report for that period is left out. |
| `extra` | Values for your `extraConcepts`, keyed by tag name. |
| `xbrlTags` | The XBRL tag used for each figure. Companies change tags over the years, so this shows what was read. |
| `currency`, `valueBasis`, `scrapedAt` | Always `USD`, the basis you chose and the collection time. |

### Sample results

Real rows from a test run on 9 October 2026 (tags, CIK and collection time left out here).

```json
[
 {
  "ticker": "AAPL",
  "companyName": "Apple Inc.",
  "currency": "USD",
  "periodType": "annual",
  "fiscalYear": 2025,
  "fiscalPeriod": "FY",
  "periodStart": "2024-09-29",
  "periodEnd": "2025-09-27",
  "form": "10-K",
  "filedAt": "2025-10-31",
  "accession": "0000320193-25-000079",
  "revenue": 416161000000,
  "grossProfit": 195201000000,
  "operatingIncome": 133050000000,
  "netIncome": 112010000000,
  "epsDiluted": 7.46,
  "operatingCashFlow": 111482000000,
  "totalAssets": 359241000000,
  "totalLiabilities": 285508000000,
  "stockholdersEquity": 73733000000,
  "cash": 35934000000,
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/",
  "valueBasis": "latest"
 },
 {
  "ticker": "AAPL",
  "companyName": "Apple Inc.",
  "currency": "USD",
  "periodType": "annual",
  "fiscalYear": 2023,
  "fiscalPeriod": "FY",
  "periodStart": "2022-09-25",
  "periodEnd": "2023-09-30",
  "form": "10-K",
  "filedAt": "2025-10-31",
  "accession": "0000320193-25-000079",
  "revenue": 383285000000,
  "grossProfit": 169148000000,
  "operatingIncome": 114301000000,
  "netIncome": 96995000000,
  "epsDiluted": 6.13,
  "operatingCashFlow": 110543000000,
  "totalAssets": 352583000000,
  "totalLiabilities": 290437000000,
  "stockholdersEquity": 62146000000,
  "cash": 29965000000,
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/",
  "valueBasis": "latest"
 },
 {
  "ticker": "AAPL",
  "companyName": "Apple Inc.",
  "currency": "USD",
  "periodType": "annual",
  "fiscalYear": 2016,
  "fiscalPeriod": "FY",
  "periodStart": "2015-09-27",
  "periodEnd": "2016-09-24",
  "form": "10-K",
  "filedAt": "2018-11-05",
  "accession": "0000320193-18-000145",
  "revenue": 215639000000,
  "grossProfit": 84263000000,
  "operatingIncome": 60024000000,
  "netIncome": 45687000000,
  "epsDiluted": 8.31,
  "operatingCashFlow": 66231000000,
  "totalAssets": 321686000000,
  "totalLiabilities": 193437000000,
  "stockholdersEquity": 128249000000,
  "cash": 20484000000,
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019318000145/",
  "valueBasis": "latest"
 }
]
```

### Limits

- **US GAAP filers.** The actor reads the `us-gaap` figures that US companies file. Foreign companies that file 20-F reports under IFRS use a different set of tags, so most of their figures will be missing. Look them up by CIK number and check the output.
- **Quarters.** Quarterly rows come from 10-Q reports, so you get Q1, Q2 and Q3. The fourth quarter is not a separate filing and is not calculated. Only three month values are used, not year to date totals.
- **Missing figures.** A figure is left out when the company did not report it for that period under any of the tags the actor knows. Banks and insurers often report revenue under other tags. Add the tag you need to `extraConcepts`.
- **Values are as filed.** The numbers are what companies sent to the SEC, not audited by this tool. A later filing can restate a figure. `valueBasis` lets you choose the latest or the first reported value.
- **Tickers.** Only tickers on the SEC's current ticker list are found. For a delisted company, use its CIK number.
- **Pace.** The actor makes one request per company and stays below 5 requests a second, well under the SEC's limit of 10. It identifies itself to the SEC as the SEC asks.
- **Not advice.** The data is a record of filings, not investment advice.

### FAQ

**What is the cheapest SEC financial data scraper on Apify?**
This actor costs $1 per 1,000 rows with platform usage included. The most used SEC EDGAR and XBRL actors on the Store charged $2.00 to $9.90 per 1,000 when we checked on 9 October 2026.

**How much does it cost to get 10,000 company years of financials?**
$10, plus $0.001 for each run.

**Do I pay for compute or proxy on top?**
No. Platform usage is included in the $1 per 1,000 price. The actor needs no proxy.

**Where does the data come from?**
From the SEC's public XBRL company facts (data.sec.gov) and its list of company tickers. No login and no key are used.

**Why is a figure missing for some years?**
Companies change the XBRL tags they use, and some leave a line out. The actor tries several tags for each figure and leaves the field out when none has a value. The `xbrlTags` field shows what was read.

**How do I get quarterly numbers?**
Set `periods` to `quarterly` or `both`.

**Is it legal?**
The actor reads public data only, with no login. Company filings on the SEC site are public records. How you use them is up to you: follow the SEC's fair access rules, and the law where you live.

**Is this an official SEC product?**
No. It is an independent tool and is not affiliated with or endorsed by the U.S. Securities and Exchange Commission.

**Do I need an Apify account?**
Yes. Actors run from an Apify account, and a free account is enough to start: it includes $5 of platform usage every month. You can [sign up here](https://www.apify.com?fpr=ymnoit). This is a referral link and it costs you nothing.

**Is there a limit on the free plan?**
Yes. A run started from a free plan account delivers the first 10 results, then ends with a message and a link to the plans. Any paid plan returns everything you ask for, up to your own limit. The price per result is the same on every plan.

### More from The One Dollar Store

Every actor here costs $1 per 1,000 results, platform usage included. See the whole store: https://apify.com/one_dollar_store

**Company records**

- [Bundesanzeiger Scraper](https://apify.com/one_dollar_store/bundesanzeiger-filings-scraper): German company filings and notices.
- [US Business Registry Search](https://apify.com/one_dollar_store/us-business-registry-search): Company records from 6 US state registries.
- [France Company Search](https://apify.com/one_dollar_store/france-company-register-sirene): French companies from the official SIRENE register.
- [Sanctions List Search](https://apify.com/one_dollar_store/sanctions-list-search): Name search across four official sanctions lists.
- [Norway Company Search](https://apify.com/one_dollar_store/norway-company-register-brreg): Norwegian companies from the official Brreg register.

### Changelog

- October 2026: first release.

# Actor input Schema

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

Stock tickers such as AAPL or BRK-B, or SEC CIK numbers such as 320193. One company per line.

## `periods` (type: `string`):

Annual rows from 10-K reports, quarterly rows from 10-Q reports (the first three quarters of each year), or both.

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

Which figures to put in each row. Each one is read from the first matching XBRL tag the company uses.

## `extraConcepts` (type: `array`):

Optional. Any other us-gaap tag by name, for example InventoryNet or DepreciationDepletionAndAmortization. Values appear under extra in each row.

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

Optional. Skip fiscal years before this one.

## `valueBasis` (type: `string`):

A later filing can restate a figure. Latest uses the most recent value filed for the period. Original uses the value as first reported.

## `maxPeriodsPerCompany` (type: `integer`):

The most periods to return for each company, newest first.

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

The run stops after this many rows across all companies. Minimum 10.

## Actor input object example

```json
{
  "tickers": [
    "AAPL"
  ],
  "periods": "annual",
  "concepts": [
    "revenue",
    "grossProfit",
    "operatingIncome",
    "netIncome",
    "epsDiluted",
    "totalAssets",
    "totalLiabilities",
    "stockholdersEquity",
    "cash",
    "operatingCashFlow"
  ],
  "valueBasis": "latest",
  "maxPeriodsPerCompany": 10,
  "maxItems": 50
}
```

# Actor output Schema

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

No description

## `summary` (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"
    ],
    "maxPeriodsPerCompany": 10,
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("one_dollar_store/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"],
    "maxPeriodsPerCompany": 10,
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("one_dollar_store/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"
  ],
  "maxPeriodsPerCompany": 10,
  "maxItems": 50
}' |
apify call one_dollar_store/sec-company-financials-xbrl --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,one_dollar_store/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/rwcqlAY8M3AaSPJqQ/builds/c3V7sggOktNvW7Id2/openapi.json
