# SEC EDGAR Forms Scraper (`parseforge/sec-forms-scraper`) Actor

Scrapes SEC EDGAR filings by company name, ticker, CIK, form type, or date range. Returns each filing as a flat row with accession number, filing date, form type, and document links.

- **URL**: https://apify.com/parseforge/sec-forms-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Other, E-commerce, Automation
- **Stats:** 2 total users, 0 monthly users, 85.7% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $11.99 / 1,000 result items

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?

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

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### SEC EDGAR Forms Scraper

**Scrape SEC EDGAR filings by company, ticker, form type, or date, up to a million per run.** Every filing comes with its accession number, filing date, form type, and document links. No login or API key. Export to CSV, JSON, Excel, or XML.

SEC EDGAR's official search tools are clunky and rate-limited. This reads the public filing index directly, filtered by entity name, ticker, CIK, form type, or date range, and returns each match in one fixed schema.

| Who uses it | What they scrape SEC EDGAR for |
|---|---|
| Investors | Track 10-K and 10-Q filings for portfolio companies |
| Financial analysts | Pull 8-K current reports to monitor material events |
| Compliance officers | Collect insider trading Form 4 filings for audit trails |
| Journalists | Find S-1 IPO registrations and proxy statements for stories |
| Data scientists | Build datasets of corporate disclosures for research |

### What it does

This Actor collects SEC EDGAR filings by company name, ticker, CIK, form type, or date range, and returns each one as a flat row.

- 🔍 **Search filters:** full-text query, entity name, form types, date range, tickers, and CIK numbers.
- 📊 **Structured output:** each filing as a flat row with accession number, filing date, form type, and document links.
- 📁 **Form type selection:** choose from 10-K, 10-Q, 8-K, S-1, DEF 14A, Form 4, SC 13D, SC 13G, 20-F, and 6-K.
- 📅 **Date range:** filter filings from a start date to an end date in YYYY-MM-DD format.
- 🏷️ **Ticker and CIK resolution:** automatically resolve ticker symbols to CIK numbers for precise filtering.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with SEC EDGAR data

**📈 Monitor portfolio companies.**

An investor runs the Actor weekly with tickers for their holdings and form types 10-K and 10-Q to review new annual and quarterly reports.

**🚨 Track material events.**

A financial analyst sets up a daily run for 8-K filings across a watchlist of companies to catch earnings releases, mergers, and executive changes.

**🔍 Investigate insider trading.**

A compliance officer pulls all Form 4 filings for a specific CIK over the past year to audit insider transactions.

**📰 Find IPO stories.**

A journalist searches for S-1 filings in the last month to identify companies planning to go public and write timely coverage.

**📊 Build research datasets.**

A data scientist collects all 10-K filings for a set of CIKs over five years to analyze financial disclosures for academic research.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key** | Scrape EDGAR without registering for an API key or dealing with rate limits |
| **Flexible filters** | Combine company name, ticker, CIK, form type, and date range to target exactly the filings you need |
| **Structured data** | Get each filing as a flat row with consistent fields for easy analysis |
| **Scalable** | Collect up to a million filings per run for large-scale research |

### How it compares

No other Store actor targets SEC EDGAR the same way, so the honest comparison is with the alternatives teams actually weigh.

| | SEC EDGAR Forms Scraper | Build it in-house | By hand |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When SEC EDGAR changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |

### Configure the run

Drive the Actor from entity names, tickers, CIKs, form types, and date ranges, alone or together, and filters run as each filing is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "maxItems": 10,
  "entityName": "Apple",
  "forms": [
    "10-K",
    "10-Q",
    "8-K",
    "S-1",
    "DEF 14A",
    "4",
    "SC 13D",
    "SC 13G",
    "20-F",
    "6-K"
  ]
}
```

A larger pull:

```json
{
  "maxItems": 200,
  "entityName": "Apple",
  "forms": [
    "10-K",
    "10-Q",
    "8-K",
    "S-1",
    "DEF 14A",
    "4",
    "SC 13D",
    "SC 13G",
    "20-F",
    "6-K"
  ]
}
```

### Pricing

Pay-per-result: **$0.01599 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $1.60 |
| 1,000 results | $15.99 |
| 10,000 results | $159.90 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [SEC EDGAR Forms Scraper](https://apify.com/parseforge/sec-forms-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to SEC EDGAR through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/sec-forms-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check your filters. If you set an entity name, ticker, or CIK, make sure it is spelled correctly and exists in EDGAR. Also verify the date range and form types. Try removing filters one by one to isolate the issue.

**Why is the run slow?**

EDGAR can be slow during peak hours. Reduce the maximum number of filings or narrow your filters to speed up the run. The Actor respects rate limits to avoid being blocked.

**Why are some filings missing?**

EDGAR may not have filings for certain entities or date ranges. Check the EDGAR website directly to confirm the filings exist. Also ensure your form type filter includes the correct types.

**Why did the run fail with an error?**

Check the Actor log for details. Common causes include invalid input formats (e.g., date not in YYYY-MM-DD) or network issues. Retry the run after fixing the input.

**Can I get the actual filing documents?**

The Actor returns links to the filing documents on EDGAR. You can download them separately using the links, or use another Actor to fetch the document contents.

### FAQ

| Question | Answer |
|---|---|
| What is SEC EDGAR? | EDGAR (Electronic Data Gathering, Analysis, and Retrieval) is the SEC's public database of corporate filings. It contains millions of documents submitted by companies, funds, and individuals. |
| Do I need an API key to use this Actor? | No. This Actor scrapes the public EDGAR search interface directly, so no registration or API key is required. |
| What form types can I filter by? | You can select from 10-K, 10-Q, 8-K, S-1, DEF 14A, Form 4, SC 13D, SC 13G, 20-F, and 6-K. Leave the field empty to include all form types. |
| How do I filter by company? | Use the Entity Name field for a company name like 'Apple Inc', or the Ticker Symbols field for symbols like AAPL. Tickers are automatically resolved to CIK numbers. |
| Can I filter by date range? | Yes. Set Start Date and End Date in YYYY-MM-DD format to include only filings within that period. |
| What is a CIK number? | CIK (Central Index Key) is a unique identifier assigned by the SEC to each entity that files with them. You can filter by specific CIK numbers using the CIK Numbers field. |
| How many filings can I collect per run? | You can set Maximum filings to any number from 1 to 1,000,000. The default is 10. |
| What data does each filing include? | Each filing row includes the accession number, filing date, form type, entity name, CIK, and links to the filing documents on EDGAR. |
| Can I export the results? | Yes. You can export the dataset to CSV, JSON, Excel, or XML from the Apify platform. |
| Is this Actor legal to use? | Yes. EDGAR data is public information provided by the U.S. government. Scraping it for research or commercial use is allowed, but you should review the SEC's terms of service. |
| How often is EDGAR updated? | EDGAR is updated in real time as companies submit filings. This Actor fetches the latest data on each run. |
| Can I search by keywords? | Yes. Use the Search Query field for full-text search. It supports exact phrases in quotes and boolean operators like AND, OR, and NOT. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by U.S. Securities and Exchange Commission. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

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

How many filings to collect per run.

## `searchQuery` (type: `string`):

Full-text search query to filter filings (e.g., keywords, industry terms). Supports exact phrases in quotes and boolean operators (AND, OR, NOT).

## `entityName` (type: `string`):

Filter by company or entity name (e.g., 'Apple Inc', 'Tesla')

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

Select which SEC form types to include. Leave empty for all.

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

Filter filings from this date (YYYY-MM-DD format)

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

Filter filings until this date (YYYY-MM-DD format)

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

Filter by stock ticker symbols (e.g., AAPL, TSLA). Automatically resolved to CIK numbers.

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

Filter by specific CIK numbers (Central Index Keys). Leave empty for all.

## Actor input object example

```json
{
  "maxItems": 10,
  "entityName": "Apple",
  "forms": [
    "10-K",
    "10-Q",
    "8-K",
    "S-1",
    "DEF 14A",
    "4",
    "SC 13D",
    "SC 13G",
    "20-F",
    "6-K"
  ]
}
```

# Actor output Schema

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

Complete dataset with all SEC EDGAR filings including entity details, form types, dates, and filing URLs

## `overview` (type: `string`):

Overview table with key filing information

# 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 = {
    "maxItems": 10,
    "entityName": "Apple",
    "forms": [
        "10-K",
        "10-Q",
        "8-K",
        "S-1",
        "DEF 14A",
        "4",
        "SC 13D",
        "SC 13G",
        "20-F",
        "6-K"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/sec-forms-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 = {
    "maxItems": 10,
    "entityName": "Apple",
    "forms": [
        "10-K",
        "10-Q",
        "8-K",
        "S-1",
        "DEF 14A",
        "4",
        "SC 13D",
        "SC 13G",
        "20-F",
        "6-K",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/sec-forms-scraper").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 '{
  "maxItems": 10,
  "entityName": "Apple",
  "forms": [
    "10-K",
    "10-Q",
    "8-K",
    "S-1",
    "DEF 14A",
    "4",
    "SC 13D",
    "SC 13G",
    "20-F",
    "6-K"
  ]
}' |
apify call parseforge/sec-forms-scraper --silent --output-dataset

```

## MCP server setup

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

```

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/xFGdZfDYcdC4xFgmK/builds/UBppuDzvsadjXo7OW/openapi.json
