# SEC EDGAR API for Company Filings by Ticker or CIK (`conserving_celerytop/sec-edgar-filings-api`) Actor

Get SEC EDGAR filings for any ticker or CIK: form type, filing date, report date, 8-K item codes, accession number, XBRL flags and document links. Filter by form and date. Public SEC data, no login. $2.00 per 1,000 filings.

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

## Pricing

from $1.40 / 1,000 filings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

Use this SEC EDGAR API to get company filings by ticker or CIK as one clean row per filing, for $2.00 per 1,000 filings.

Add the companies you follow, pick the form types you need, and get the form type, filing date, report date, 8-K item codes, accession number, XBRL flags and a link to the main document. The data comes from the public SEC submissions API. You need no login and no API key.

### Sample output

One row per filing, newest first. This is a real row for Microsoft, form 8-K:

```json
{
  "status": "ok",
  "input": "MSFT",
  "cik": "0000789019",
  "ticker": "MSFT",
  "companyName": "MICROSOFT CORP",
  "form": "8-K",
  "filingDate": "2026-09-02",
  "reportDate": "2026-09-02",
  "acceptedAt": "2026-09-02T20:30:24.000Z",
  "accessionNumber": "0001193125-26-380280",
  "items": ["7.01", "9.01"],
  "itemDescriptions": ["Regulation FD Disclosure", "Financial Statements and Exhibits"],
  "fileNumber": "001-37845",
  "isXBRL": true,
  "isInlineXBRL": true,
  "sizeBytes": 2721504,
  "description": "8-K",
  "documentUrl": "https://www.sec.gov/Archives/edgar/data/789019/000119312526380280/d291965d8k.htm",
  "filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/789019/000119312526380280/0001193125-26-380280-index.htm",
  "message": null
}
```

### How to use the SEC EDGAR API

1. Click **Try for free**. No API key or proxy is needed.
2. In **Companies**, add tickers such as `AAPL` or CIK numbers such as `0000789019`, one per line.
3. In **Form types**, add the forms you want, for example `10-K`, `10-Q` and `8-K`. Leave it empty for all form types.
4. Optionally set **Filed from**, **Filed to** and **Max filings per company**.
5. Click **Start**, open the **Overview** view, and export the rows as JSON, CSV or Excel.

You can also call it from your own code with the Apify API, run it on a schedule, or connect it to Make, Zapier or n8n.

### What you get

- Every filing type the SEC lists for a company, including 10-K, 10-Q, 8-K, S-1, 20-F, 6-K, DEF 14A and 13F-HR.
- The 8-K item codes with their names, for example 2.02 Results of Operations and Financial Condition or 5.02 Departure or Election of Directors or Officers.
- Filing date, report date and the time the SEC accepted the filing.
- XBRL and inline XBRL flags, so you can tell which filings carry structured financial data.
- The accession number, a link to the main document and a link to the filing index.
- Filters by form type, amendments and filing date, and a cap per company.

The full history of a company is available. The SEC keeps recent filings in one file and older ones in extra files, and the Actor reads the extra files only when your filters or your cap need them.

### Pricing

You pay per filing returned. The price is $2.00 per 1,000 filings, which is $0.002 per filing, plus a start event of $0.00005 per GB of run memory, which is $0.0000125 at the default 256 MB. Apify platform usage is included.

| Example | Filings | Cost |
|---|---|---|
| 3 companies, the latest 10 matching filings each | 30 | $0.06 |
| 1 company, every 10-K filed since 1994 (33 for Microsoft) | 33 | $0.07 |
| 100 companies, the latest 20 filings each | 2,000 | $4.00 |

A valid company with no filing that matches your filters returns one status row, charged as one filing, because the SEC lookup was made. Entries that never reach the SEC are free: a ticker that is not in the SEC list, a CIK the SEC does not know, a company name, and the CIK of an individual filer. Paid plans get lower prices per filing as your Apify plan tier goes up.

### Input

```json
{
  "companies": ["AAPL", "MSFT", "NVDA"],
  "formTypes": ["10-K", "10-Q", "8-K"],
  "includeAmendments": false,
  "filedFrom": "2026-01-01",
  "maxFilingsPerCompany": 10
}
```

Only `companies` is required. A form type such as `10-K` returns that exact form. Turn on `includeAmendments` to also get `10-K/A`. Dates use the format `YYYY-MM-DD`. `maxFilingsPerCompany` keeps the newest filings and defaults to 20.

### Output fields

| Field | Meaning |
|---|---|
| `status` | `ok` for a filing row, or a status such as `no_matching_filings`, `not_found`, `invalid_input` |
| `cik`, `ticker`, `companyName` | The company as the SEC lists it. Zero padded 10 digit CIK |
| `form` | The SEC form type, for example `10-K` or `8-K` |
| `filingDate`, `reportDate` | Date filed, and the period or event date the filing reports on when the SEC lists one |
| `items`, `itemDescriptions` | 8-K item codes and their names. Empty for other forms |
| `isXBRL`, `isInlineXBRL` | Whether the filing carries XBRL data |
| `documentUrl`, `filingIndexUrl` | Links to the main document and to the filing index on the SEC site |
| `message` | A short explanation on status rows |

### FAQ

#### Is it legal to use this data?

The Actor reads the SEC's public submissions API, which needs no authentication. The SEC states that information on its site is public and may be copied or further distributed. The Actor sends one request at a time, well under the SEC limit of 10 requests per second. Check that your own use follows the laws and terms that apply to you.

#### Which filings are not returned?

Ownership forms 3, 4 and 5, Rule 144 notices and Form D are left out, because they are filed by or about named individuals or are covered by other tools. The CIK of an individual filer returns a status row and nothing else.

#### Can I search by company name?

No. Use a ticker or a CIK number. If a ticker is not found, look up the CIK and use it instead.

#### How current is the data?

The SEC updates its JSON files throughout the day. A run reads them at the time you start it.

#### Why did a company return no filings?

Your form types or dates matched nothing. Check the spelling of the form type. `10-K405` and `10-KSB` are separate forms from `10-K`.

#### What if the SEC blocks or limits a request?

The Actor retries slow or busy responses with a pause. If the SEC refuses requests, the run stops with a clear status message and keeps the rows it already saved.

### Related Actors

- SEC Company Financials API returns company reported figures such as revenue and net income from the same SEC data.

### About this Actor

I built this Actor as an independent developer. It is not affiliated with, endorsed by or approved by the U.S. Securities and Exchange Commission. Data comes from the SEC's public EDGAR APIs. If this saved you time, a rating helps others find it.

# Actor input Schema

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

Add stock tickers such as AAPL or SEC CIK numbers such as 0000789019. Up to 500 per run. A company with no matching filings returns one status row.

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

Add the SEC form types to keep, for example 10-K, 10-Q or 8-K. Leave empty to return all form types.

## `includeAmendments` (type: `boolean`):

Also return amended versions such as 10-K/A when you list the original form type.

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

Keep filings filed on or after this date. Use the format YYYY-MM-DD.

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

Keep filings filed on or before this date. Use the format YYYY-MM-DD.

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

Return at most this many filings per company, newest first. You pay for each filing returned.

## Actor input object example

```json
{
  "companies": [
    "AAPL",
    "0000789019"
  ],
  "formTypes": [
    "10-K",
    "10-Q",
    "8-K"
  ],
  "includeAmendments": false,
  "maxFilingsPerCompany": 10
}
```

# Actor output Schema

## `filings` (type: `string`):

No description

## `stats` (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 = {
    "companies": [
        "AAPL",
        "0000789019"
    ],
    "formTypes": [
        "10-K",
        "10-Q",
        "8-K"
    ],
    "maxFilingsPerCompany": 10
};

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

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

```

## MCP server setup

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

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/sYrNYzmwG8nOvGUM1/builds/KPSUMgGUQHTfXTNQu/openapi.json
