# SEC EDGAR Filings and Financial Facts by Ticker (`aesthetic_gewgaw/sec-edgar-filings`) Actor

Get SEC EDGAR filings (10-K, 10-Q, 8-K, Form 4) and reported financial figures like revenue and net income for any US company by ticker or CIK. Official SEC API data.

- **URL**: https://apify.com/aesthetic_gewgaw/sec-edgar-filings.md
- **Developed by:** [Huskarian Geist](https://apify.com/aesthetic_gewgaw) (community)
- **Categories:** Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 filing or financial facts

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 Filings and Financial Facts by Ticker

Get SEC EDGAR filings and reported financial figures for any US listed company by ticker or CIK, as clean JSON. Two modes in one Actor. **Filings** returns every 10-K, 10-Q, 8-K, Form 4, S-1 and more, with direct links to the primary document. **Financial facts** returns audited XBRL numbers such as revenue, net income, assets and diluted EPS, one row per period, with year-to-date totals and duplicate restatements already removed. It reads the SEC's own free data APIs, so there is no scraping, no login, and nothing breaks when the EDGAR website changes. Use it for earnings trackers, screening, research agents and compliance monitoring.

### What you get

**Filings mode**

| field | example |
|---|---|
| ticker, cik, companyName | AAPL, 0000320193, Apple Inc. |
| form | 10-K |
| filingDate, reportDate | 2025-10-31, 2025-09-27 |
| accessionNumber | 0000320193-25-000079 |
| documentUrl | direct link to the primary document |
| filingIndexUrl | link to every file in the filing |
| items | 8-K item numbers, for example 2.02,9.01 |
| isXbrl | true when the filing carries XBRL data |

**Financial facts mode**

| field | example |
|---|---|
| concept, label | NetIncomeLoss, Net Income (Loss) |
| value, unit | 93736000000, USD |
| periodStart, periodEnd | 2024-09-29, 2025-09-27 |
| fiscalYear, fiscalPeriod | 2025, FY |
| form, filingDate, accessionNumber | 10-K, 2025-10-31, 0000320193-25-000079 |

### Example input

```json
{
  "mode": "filings",
  "companies": ["AAPL", "MSFT", "320193"],
  "formTypes": ["10-K", "8-K"],
  "filedFrom": "2025-01-01",
  "maxItems": 100
}
```

For numbers instead of documents:

```json
{
  "mode": "financialFacts",
  "companies": ["NVDA", "TSLA"],
  "concepts": ["Revenues", "NetIncomeLoss", "Assets"],
  "periodType": "quarterly",
  "maxItems": 200
}
```

### Pricing

Pay per result: $2 per 1,000 records. No subscription. `maxItems` caps your spend. Pulling a company's headline annual figures for ten years costs a few cents.

### Data source

The SEC's public EDGAR APIs (submissions and company facts). Requests are paced under the SEC's fair access limit of 10 per second and identify the client politely. Data is public domain US government information.

### FAQ

**Why is Q4 missing in quarterly mode?** Companies do not file a 10-Q for the fourth quarter. Their fourth quarter is inside the 10-K, so use annual mode for the full year.

**Does it cover companies with no ticker?** Yes. Pass the CIK number instead of a ticker.

**What if a company restated a figure?** The most recently filed value for each period is kept.

**Can I search filing text?** Not in this version. It returns filing lists and structured financial numbers.

**Is this investment advice?** No. It returns filed data as published by the SEC.

# Actor input Schema

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

filings returns the filing list (10-K, 10-Q, 8-K and so on) with direct document links. financialFacts returns reported XBRL numbers such as revenue, net income and assets by period.

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

Stock tickers such as AAPL or MSFT, or SEC CIK numbers such as 320193.

## `formTypes` (type: `array`):

Keep only these form types, for example 10-K, 10-Q, 8-K, 4, S-1. Leave empty for all forms.

## `filedFrom` (type: `string`):

Date in YYYY-MM-DD format. Leave empty for no lower limit.

## `filedTo` (type: `string`):

Date in YYYY-MM-DD format. Leave empty for no upper limit.

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

US-GAAP concept names such as Revenues, NetIncomeLoss, Assets, Liabilities or EarningsPerShareDiluted. Leave empty for a standard set of nine headline metrics.

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

annual keeps full fiscal year figures from 10-K filings. quarterly keeps figures from 10-Q filings. all keeps both.

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

Stop after this many records. You are charged per result, so this is also your spending cap.

## Actor input object example

```json
{
  "mode": "filings",
  "companies": [
    "AAPL",
    "MSFT"
  ],
  "formTypes": [
    "10-K",
    "10-Q",
    "8-K"
  ],
  "periodType": "annual",
  "maxItems": 100
}
```

# Actor output Schema

## `records` (type: `string`):

One record per SEC filing or per reported financial fact, depending on the mode. Field definitions are in the dataset schema.

# 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"
    ],
    "formTypes": [
        "10-K",
        "10-Q",
        "8-K"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("aesthetic_gewgaw/sec-edgar-filings").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",
    ],
    "formTypes": [
        "10-K",
        "10-Q",
        "8-K",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("aesthetic_gewgaw/sec-edgar-filings").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"
  ],
  "formTypes": [
    "10-K",
    "10-Q",
    "8-K"
  ]
}' |
apify call aesthetic_gewgaw/sec-edgar-filings --silent --output-dataset

```

## MCP server setup

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

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/WmqOesOOuGDgK9En1/builds/oxhpJpIj1rsn1VCGb/openapi.json
