# SEC EDGAR Filings Scraper - 10-K 10-Q 8-K API (`maydit/sec-edgar-filings-scraper`) Actor

Scrape SEC EDGAR filings by ticker, CIK, or full-text search. Get 10-K, 10-Q, 8-K data with parsed item codes as clean CSV/JSON. No API key, pay per use.

- **URL**: https://apify.com/maydit/sec-edgar-filings-scraper.md
- **Developed by:** [Brandt May](https://apify.com/maydit) (community)
- **Categories:** News, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## SEC EDGAR Filings Scraper - 10-K, 10-Q & 8-K API

> Pull any company's SEC filings by ticker or CIK, or full-text search all of EDGAR - into clean, normalized records. No API key. Pay per use.

**What it does.** This SEC EDGAR filings scraper pulls filing metadata straight from the official SEC EDGAR data feeds and returns it as clean, normalized CSV or JSON. It runs in two modes: **company mode** (look up recent filings by ticker or CIK - handling ticker-to-CIK resolution for you) and **full-text search mode** (search across all EDGAR filings by keyword, company name, product, or risk phrase). Filter to specific form types like 10-K, 10-Q, and 8-K, and get parsed 8-K item codes so you can see exactly which material events were reported. It works as a drop-in SEC filings API with no API key required and resilient auto-retry when EDGAR returns 5xx errors.

### Who it's for

- **Fintech and financial-data teams** building filing feeds and datasets
- **Investment and equity research analysts** tracking companies and peers
- **Compliance and legal teams** monitoring disclosures and material events
- **Quants and data scientists** assembling structured filing datasets
- **Financial journalists** searching filings for stories and leads

### What you get (output)

Every filing is returned as a structured record with these fields:

| Field | Description |
|---|---|
| `companyName` | Registrant / company name |
| `ticker` | Stock ticker symbol (when available) |
| `cik` | SEC Central Index Key |
| `formType` | Filing form type (e.g. 10-K, 10-Q, 8-K, 4, 13F-HR, S-1) |
| `filedDate` | Date the filing was filed with the SEC |
| `reportDate` | Period-of-report date |
| `items` | Parsed 8-K item codes (material-event codes) |
| `description` | Filing description |
| `accessionNumber` | SEC accession number (unique filing ID) |
| `primaryDocument` | Primary document filename |
| `filingUrl` | Direct URL to the primary filing document |
| `filingIndexUrl` | URL to the filing's EDGAR index page |

Export the full dataset to CSV, JSON, Excel, or pull it via the Apify API.

### Input / how to query

Configure a run with any combination of these inputs:

- **`tickers`** - one or more stock tickers for company mode (e.g. `AAPL`, `MSFT`, `NVDA`).
- **`ciks`** - SEC CIK numbers for company mode, ideal for funds or entities without a ticker.
- **`keyword`** - a full-text search term across all EDGAR filings (used when no tickers/CIKs are set). Wrap a phrase in quotes for an exact match.
- **`formTypes`** - restrict to specific form types such as `8-K`, `10-K`, `10-Q`, `4`, `13F-HR`, `S-1`. Leave empty for all forms.
- **`startDate`** / **`endDate`** - a filed-date range (`YYYY-MM-DD`).
- **`maxResults`** - upper bound on filings returned per run.

**Mode selection is automatic:** provide `tickers` or `ciks` and the Actor runs in company mode; leave those empty and provide a `keyword` to run full-text search mode.

### Example use cases

- **Peer-set filing feed:** pull every 10-K and 10-Q for a basket of tickers to build a fundamentals research dataset.
- **8-K material-event monitor:** watch a portfolio for new 8-K filings and read the parsed `items` codes to flag events like leadership changes, results, or agreements.
- **Competitor and risk surveillance:** full-text search EDGAR for a competitor name, product, or risk phrase across all filers.
- **Insider and fund tracking:** filter to Form 4 (insider) or 13F-HR (fund holdings) for a company or CIK.
- **Compliance disclosure log:** export a date-ranged CSV of a company's filings for an audit or review trail.

### Recurring use and scheduling

Set an Apify **Schedule** to re-run the Actor on any cadence - hourly, daily, or weekly - to monitor companies for new filings. Each run returns the latest filings for your configured tickers, CIKs, or keyword. Use the `accessionNumber` field (the SEC's unique filing ID) to dedupe against filings you have already seen, so downstream alerts and datasets only pick up genuinely new records. Combine scheduling with a date range or `maxResults` to keep incremental runs small and fast.

### FAQ

### How do I get SEC filings data programmatically without an API key?

Run this Actor. It reads directly from the official SEC EDGAR data feeds, which are public and require no API key or account. You just supply tickers, CIKs, or a keyword, and get back structured records via the Apify API, or export to CSV/JSON.

### How can I scrape SEC EDGAR by ticker, company name, or CIK?

Use company mode: provide one or more `tickers` or `ciks` and the Actor pulls that company's recent filings, resolving ticker-to-CIK for you. To search by company name or any other text across all filers, use full-text search mode with the `keyword` input.

### How do I search the full text of all SEC filings?

Leave `tickers` and `ciks` empty and set a `keyword`. The Actor runs EDGAR full-text search across all filings, returning matching records. Wrap a phrase in quotes for an exact-phrase match.

### What is a free alternative to sec-api.io?

This Actor is a simple, pay-per-use alternative to subscription SEC APIs like sec-api.io. There is no monthly fee - you only pay per run and per result - and no API key to manage, while still getting clean normalized filing records including parsed 8-K item codes.

### How do I pull all 10-K, 10-Q, and 8-K filings for a company?

Set the company's `tickers` or `ciks`, then set `formTypes` to `10-K`, `10-Q`, and `8-K` (or leave `formTypes` empty to get every form type). Widen the date range and raise `maxResults` to reach further back through the company's history.

### How do I get 8-K item codes and material-event data?

Every 8-K record includes a parsed `items` field listing the 8-K item codes reported in that filing, so you can identify the specific material events (such as results, agreements, or officer changes) without opening each document.

### How do I export SEC filings to CSV or JSON?

Every run stores results in an Apify dataset that you can export to CSV, JSON, or Excel from the run's Storage tab, or fetch through the Apify API for a pipeline.

### How do I monitor or get alerts for a company's new SEC filings?

Create an Apify Schedule to re-run the Actor on a cadence with your target tickers or CIKs, and dedupe on `accessionNumber` so only new filings flow through. Connect the dataset to your own alerting via the Apify API or integrations.

### How far back does SEC EDGAR filing data go?

Coverage comes from the official EDGAR data feeds. EDGAR full-text search covers filings from 2001 onward, and company submission history reaches back further; use `startDate`/`endDate` and `maxResults` to control how far back a run goes.

### Are there SEC EDGAR rate limits and how do I avoid them?

The SEC asks scrapers to identify themselves and respect fair-access limits. This Actor automatically sends the SEC-recommended User-Agent header and includes resilient auto-retry when EDGAR returns 5xx errors, so runs stay reliable without you managing throttling.

### Data source and notes

- **Source:** the official U.S. Securities and Exchange Commission EDGAR system, via the public `data.sec.gov` submissions feeds and `efts.sec.gov` full-text search. This data is public and free to access.
- **No API key** is required. The Actor sends the SEC-recommended User-Agent header identifying the request.
- **Scope:** the Actor returns filing metadata and document links (the fields listed above). It does not parse the full body text or financial statements of each filing. Full-text search covers filings from 2001 onward, per EDGAR's own coverage.
- **Reliability:** built-in retry on EDGAR 5xx responses keeps runs resilient during SEC service hiccups.

### Related actors

Part of a set of US public-records tools that work well together:

- [Court Records Scraper](https://apify.com/maydit/us-court-cases-scraper) - federal litigation involving the same companies
- [Federal Contract Awards Scraper](https://apify.com/maydit/us-federal-contract-awards-scraper) - government revenue for public companies

See all fifteen at [apify.com/maydit](https://apify.com/maydit).

### Found this useful?

If this actor saved you time, a short review on the Apify Store genuinely helps. Reviews are how the next person decides whether a tool is worth trying.

Something broken, missing a field, or a source you want covered? Open an issue on the **Issues** tab and it will get looked at - that is the fastest route to getting it changed.

# Actor input Schema

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

Stock tickers to monitor, e.g. 'AAPL', 'MSFT', 'NVDA'. When set, the Actor pulls these companies' recent filings. Leave empty to use keyword search instead.

## `ciks` (type: `array`):

SEC CIK numbers to monitor (alternative to tickers), e.g. '0000320193'. Useful for funds/entities without a ticker.

## `keyword` (type: `string`):

Full-text search term across ALL EDGAR filings, e.g. a competitor name, product, or risk phrase. Used only when no tickers/CIKs are provided. Wrap a phrase in quotes for exact match.

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

Filter to these SEC form types, e.g. '8-K', '10-K', '10-Q', '4' (insider), '13F-HR' (fund holdings), 'S-1'. Leave empty for all forms.

## `startDate` (type: `string`):

Only filings on or after this date (YYYY-MM-DD).

## `endDate` (type: `string`):

Only filings on or before this date (YYYY-MM-DD).

## `maxResults` (type: `integer`):

Upper bound on filings returned per run.

## `contactEmail` (type: `string`):

Optional contact email included in the SEC-required User-Agent header. The SEC asks scrapers to identify themselves. Defaults to a generic address.

## Actor input object example

```json
{
  "tickers": [
    "AAPL"
  ],
  "ciks": [],
  "keyword": "\"artificial intelligence\"",
  "formTypes": [],
  "startDate": "2026-06-01",
  "maxResults": 1000
}
```

# 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"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("maydit/sec-edgar-filings-scraper").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"] }

# Run the Actor and wait for it to finish
run = client.actor("maydit/sec-edgar-filings-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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"
  ]
}' |
apify call maydit/sec-edgar-filings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=maydit/sec-edgar-filings-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/PSkfnwipFfWQ2RkTJ/builds/AI7IL7HHGPY9uy77s/openapi.json
