# SEC EDGAR Filings Scraper (`spry_frame/sec-edgar-scraper`) Actor

Scrapes SEC EDGAR filings — 10-K, 10-Q, 8-K, S-1, Form 4 insider trades, and more. Search by keyword, company, ticker, or form type. No API key required.

- **URL**: https://apify.com/spry\_frame/sec-edgar-scraper.md
- **Developed by:** [COSENT GROUP](https://apify.com/spry_frame) (community)
- **Categories:** Lead generation, Other, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.20 / 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/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

Scrape SEC EDGAR filings — 10-K annual reports, 10-Q quarterly reports, 8-K material events, S-1 IPO filings, Form 4 insider trades, proxy statements, and more.

Works in two modes:

- **Search mode** — find filings across all companies by keyword, form type, and date range
- **Company mode** — get all filings for a specific company using ticker symbol or company name

No API key required. Uses the SEC's public EDGAR data APIs.

### Use Cases

- **Financial research** — collect 10-K and 10-Q filings from public companies for analysis
- **Insider trading monitoring** — scrape Form 4 filings to track executive stock transactions
- **IPO pipeline** — monitor S-1 filings for upcoming IPOs
- **Risk signals** — full-text search for phrases like "going concern", "material weakness", or "data breach" across all filings
- **Competitive intelligence** — pull all filings from a specific competitor by ticker symbol
- **Regulatory compliance** — monitor 8-K filings for material events in an industry

### Input

| Field | Type | Description |
|-------|------|-------------|
| `userAgent` | String | **Required.** Your name and email: `"Your Name your@email.com"` — required by SEC fair access policy |
| `mode` | String | `search` (keyword/form search across all companies) or `company` (all filings for one company) |
| `ticker` | String | Stock ticker symbol — e.g. `TSLA`, `AAPL`, `NVDA` (company mode) |
| `companyName` | String | Company name to look up — e.g. `Tesla`, `Apple Inc` (company mode or search filter) |
| `keywords` | String | Full-text search term — e.g. `"going concern"`, `"artificial intelligence"` (search mode) |
| `formTypes` | Array | Form types to include — e.g. `["10-K", "10-Q", "8-K"]`. Leave empty for all types |
| `dateStart` | String | Start of filing date range in `YYYY-MM-DD` format |
| `dateEnd` | String | End of filing date range in `YYYY-MM-DD` format |
| `maxResults` | Integer | Maximum number of filings to return. `0` = no limit (default: 100) |

#### Common Form Types

| Form | Description |
|------|-------------|
| `10-K` | Annual report |
| `10-Q` | Quarterly report |
| `8-K` | Material event disclosure |
| `S-1` | IPO registration statement |
| `4` | Insider stock transaction (Form 4) |
| `DEF 14A` | Proxy statement |
| `SC 13G` | Passive investor ownership disclosure |
| `424B4` | Prospectus |

### Output

Each result includes:

| Field | Description |
|-------|-------------|
| `companyName` | Name of the filing company |
| `ticker` | Stock ticker symbol (when available) |
| `cik` | SEC Central Index Key — unique company identifier |
| `formType` | SEC form type (10-K, 8-K, etc.) |
| `filingDate` | Date the filing was submitted to the SEC |
| `periodOfReport` | The reporting period covered by the filing |
| `accessionNumber` | Unique SEC filing identifier |
| `description` | Filing description or primary document name |
| `url` | Direct link to the filing index on SEC EDGAR |
| `scrapedAt` | Timestamp when the record was collected |

### Example Inputs

**Get Apple's last 20 annual and quarterly reports:**

```json
{
  "userAgent": "Your Name your@email.com",
  "mode": "company",
  "ticker": "AAPL",
  "formTypes": ["10-K", "10-Q"],
  "maxResults": 20
}
```

**Search for "going concern" disclosures in 2026:**

```json
{
  "userAgent": "Your Name your@email.com",
  "mode": "search",
  "keywords": "going concern",
  "formTypes": ["10-K"],
  "dateStart": "2026-01-01",
  "dateEnd": "2026-12-31",
  "maxResults": 50
}
```

**Track Tesla insider trades (Form 4):**

```json
{
  "userAgent": "Your Name your@email.com",
  "mode": "company",
  "ticker": "TSLA",
  "formTypes": ["4"],
  "maxResults": 100
}
```

### Notes

- The `userAgent` field is **required** by the SEC's fair access policy. Use your real name and email — the SEC uses this to identify API users. Example: `"John Smith john@example.com"`
- Rate limit is automatically respected (100ms delay between requests)
- No API key or registration required
- Data is sourced directly from [SEC EDGAR](https://www.sec.gov/edgar/)

# Actor input Schema

## `userAgent` (type: `string`):

Your name and email in the format: 'Your Name your@email.com'. Required by SEC fair access policy to identify requests.

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

search: find filings by keyword/form type across all companies. company: get all filings for a specific company by ticker or name.

## `keywords` (type: `string`):

Full-text search term across filing content (e.g. 'artificial intelligence', 'going concern', 'data breach'). Used in search mode.

## `companyName` (type: `string`):

Company name to search for (e.g. 'Tesla', 'Apple Inc'). Used in company mode or to filter search results.

## `ticker` (type: `string`):

Stock ticker symbol (e.g. TSLA, AAPL, NVDA). Used in company mode to look up a specific company's filings.

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

SEC form types to include. Common: 10-K (annual report), 10-Q (quarterly report), 8-K (material event), S-1 (IPO), 4 (insider trade), DEF 14A (proxy). Leave empty for all.

## `dateStart` (type: `string`):

Start of filing date range. Example: 2026-01-01

## `dateEnd` (type: `string`):

End of filing date range. Example: 2026-12-31

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

Maximum number of filings to return. 0 = no limit.

## Actor input object example

```json
{
  "mode": "search",
  "keywords": "",
  "companyName": "",
  "ticker": "",
  "formTypes": [
    "10-K",
    "10-Q",
    "8-K"
  ],
  "dateStart": "",
  "dateEnd": "",
  "maxResults": 100
}
```

# Actor output Schema

## `companyName` (type: `string`):

Name of the filing company.

## `ticker` (type: `string`):

Stock ticker symbol.

## `cik` (type: `string`):

SEC Central Index Key — unique company identifier.

## `formType` (type: `string`):

SEC form type (10-K, 10-Q, 8-K, S-1, 4, etc.).

## `filingDate` (type: `string`):

Date the filing was submitted to the SEC.

## `periodOfReport` (type: `string`):

The period covered by the filing.

## `accessionNumber` (type: `string`):

SEC unique filing identifier.

## `description` (type: `string`):

Filing description or items reported (for 8-K).

## `url` (type: `string`):

Direct link to the filing index on SEC EDGAR.

## `scrapedAt` (type: `string`):

ISO timestamp when this record was collected.

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

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

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

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/IVWRfHzQgqfMvKkSO/builds/04zcFnjb01n7UbZe6/openapi.json
