# SEC EDGAR Financials & Filings API: Revenue, EPS, 10-K, 8-K (`swiftkit/sec-edgar`) Actor

Financial statements and filings of US-listed companies from the SEC's official EDGAR data: revenue, net income, EPS, cash flow, assets and debt by year or quarter (with Q4 filled in), company profiles, and 10-K/10-Q/8-K filing lists with document links. By ticker, CIK or name.

- **URL**: https://apify.com/swiftkit/sec-edgar.md
- **Developed by:** [SwiftKit](https://apify.com/swiftkit) (community)
- **Categories:** Business, Developer tools, Agents
- **Stats:** 2 total users, 1 monthly users, 66.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 result 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 EDGAR Financials & Filings API: Revenue, EPS, 10-K, 8-K

Financial statements and filings of **US-listed companies**, straight from the SEC's official
**EDGAR** data. Give it tickers, CIK numbers or company names, and pick what you need:

- **Financials:** one row per fiscal year or quarter with revenue, cost of revenue, gross profit,
  R\&D, operating income, net income, EPS (basic and diluted), operating cash flow, capex, free
  cash flow, net margin, total assets, liabilities, equity, cash and long-term debt
- **Company profile:** industry (SIC), filer category, state of incorporation, fiscal year end,
  business address and phone, former names, shares outstanding, dates of the latest 10-K/10-Q/8-K,
  and the latest annual numbers
- **Filings:** 10-K, 10-Q, 8-K (with item numbers), S-1, proxy statements and more, newest first,
  with direct links to the main document and the filing index

**Quarterly data includes Q4.** Companies don't file a 10-Q for their fourth quarter. The tool
derives Q4 as *fiscal year − Q1 − Q2 − Q3* for income and cash-flow items and marks it
`derived: true`. Many companies also report quarterly **cash flow only year-to-date** (6 and 9
months); those quarters are computed from the year-to-date totals and listed in `derivedFields`.
Quarters are labeled with the company's own **fiscal** year (Apple's Q1 FY2026 is
October–December 2025).

All data comes from SEC's public APIs (`data.sec.gov`). US government data is public domain.
Requests stay well under the SEC's fair-access limit.

### Who it's for

- **Investors and analysts:** multi-year financials for a watchlist in one table.
- **Fintech and dashboards:** fundamentals by API without a paid data vendor.
- **Researchers and students:** consistent panels of company financials.
- **Monitoring:** schedule Filings mode with "filed since" to catch new 8-Ks and 10-Qs.

### Input

| Option | Default | What it does |
|---|---|---|
| Companies | – | Tickers, CIKs or names |
| What to get | Financials | Financials, Company profile or Filings |
| Period | Annual | Annual or quarterly (financials) |
| Years of history | 5 | Fiscal years back |
| Form types | all | Filings mode: e.g. `10-K`, `8-K` |
| Filed since | – | Filings mode: only newer filings |
| Max filings per company | 50 | Filings mode |

### Output

Financials (annual), real data for Apple's fiscal 2025:

```json
{
  "name": "Apple Inc.",
  "tickers": ["AAPL"],
  "type": "annual",
  "currency": "USD",
  "periodStart": "2024-09-29",
  "periodEnd": "2025-09-27",
  "fiscalYear": 2025,
  "fiscalPeriod": "FY",
  "revenue": 416161000000,
  "grossProfit": 195201000000,
  "operatingIncome": 133050000000,
  "netIncome": 112010000000,
  "epsDiluted": 7.46,
  "operatingCashFlow": 111482000000,
  "capitalExpenditure": 12715000000,
  "freeCashFlow": 98767000000,
  "netMargin": 0.2692,
  "totalAssets": 359241000000,
  "cash": 35934000000
}
```

Other statuses: `not_found` (no SEC company with that ticker or name) and `no_financials`
(no US-GAAP data, e.g. foreign companies that report under IFRS). Neither is charged.

### Use it from your AI agent (MCP)

Claude, Cursor and other MCP clients can call this tool directly through Apify's MCP server. Add it as
an MCP server / connector:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=swiftkit/sec-edgar",
      "headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }
    }
  }
}
```

Then just ask, for example: *"Compare Apple's and Microsoft's revenue and net income for the last 3 fiscal years"*. Each call is billed like a normal run.

### Pricing

You pay **per row** (one fiscal period, one profile or one filing). See the Pricing tab.

### Limits, honestly

- **US-GAAP only.** Foreign private issuers that file 20-F/40-F under IFRS (e.g. Toyota) have
  profiles and filings, but no financials rows.
- Numbers are what companies tagged in their XBRL. Companies sometimes switch tags over the
  years; the tool checks several standard tags per metric, but an unusual company may leave a
  field empty.
- Values are as originally reported in each period's filing, updated with later restatements
  where the company re-tagged them.
- Derived Q4 values have no EPS (per-share figures can't be subtracted).
- This is data, not investment advice.

### More tools from SwiftKit

- [Company Domain & Logo Finder](https://apify.com/swiftkit/company-lookup): websites, logos and facts for company names
- [Job Scraper](https://apify.com/swiftkit/company-jobs): a company's open jobs, a good signal of growth
- [Hacker News Scraper](https://apify.com/swiftkit/hacker-news): what developers say about a company

### Questions?

Open an issue on the Issues tab.

# Actor input Schema

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

Tickers (AAPL), CIK numbers (320193) or names of SEC-registered companies (Microsoft).

## `mode` (type: `string`):

Financials come from the XBRL data in 10-K and 10-Q reports.

## `period` (type: `string`):

Used in Financials mode.

## `years` (type: `integer`):

How many fiscal years back (quarterly: 4 rows per year).

## `forms` (type: `array`):

Only these forms, e.g. 10-K, 10-Q, 8-K, S-1, DEF 14A. Empty = all forms.

## `filedSince` (type: `string`):

Only filings on or after this date.

## `maxFilingsPerCompany` (type: `integer`):

Most recent first.

## Actor input object example

```json
{
  "companies": [
    "AAPL",
    "MSFT"
  ],
  "mode": "financials",
  "period": "annual",
  "years": 5,
  "maxFilingsPerCompany": 50
}
```

# Actor output Schema

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

Financial periods, profiles or filings.

# 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("swiftkit/sec-edgar").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("swiftkit/sec-edgar").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 swiftkit/sec-edgar --silent --output-dataset

```

## MCP server setup

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

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/jv8YIf4ed43IUiRTK/builds/uSagK4mgpd0z7djSK/openapi.json
