# SEC EDGAR Filings Scraper — Full-Text Search & Company Filings (`grilled_gorge/sec-edgar-filings-scraper`) Actor

Unofficial tool for searching SEC EDGAR filings and exporting structured public metadata. Not affiliated with or endorsed by the U.S. Securities and Exchange Commission.

- **URL**: https://apify.com/grilled\_gorge/sec-edgar-filings-scraper.md
- **Developed by:** [Jonathan Willburry](https://apify.com/grilled_gorge) (community)
- **Categories:** Automation, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 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.

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

### What does SEC EDGAR Filings Scraper do?

> **Unofficial and independent:** This Actor is not affiliated with, sponsored by, or endorsed by the U.S. Securities and Exchange Commission.

**SEC EDGAR Filings Scraper** searches the official [SEC EDGAR](https://www.sec.gov/edgar/search/) database and exports structured filing metadata. Find filings by full-text phrase, form type, date range, ticker, or CIK without managing authentication, pagination, or SEC archive URLs yourself.

Run it manually, schedule recurring searches on Apify, call it through the API, or connect its dataset to tools such as Make, Zapier, Google Drive, and webhooks. The Actor uses public SEC endpoints, observes SEC fair-access limits, and does not require a proxy or API key.

### Why use SEC EDGAR Filings Scraper?

- Monitor 8-K, 10-K, 10-Q, S-1, and other filing types.
- Research mentions of products, risks, industries, or technologies across filing contents.
- Track recent filings for a list of public companies.
- Export consistent filing links and metadata instead of processing SEC response formats.
- Feed filing records into dashboards, alerts, spreadsheets, or data pipelines.

### Ready-to-run examples

- [Track SEC 8-K filings mentioning AI](https://apify.com/grilled_gorge/sec-edgar-filings-scraper/examples/track-8k-filings-artificial-intelligence)
- [Get 10-K annual reports by ticker](https://apify.com/grilled_gorge/sec-edgar-filings-scraper/examples/get-10k-annual-reports-by-ticker)
- [Monitor new S-1 IPO filings on SEC EDGAR](https://apify.com/grilled_gorge/sec-edgar-filings-scraper/examples/monitor-s1-ipo-filings)

Each example opens with a working configuration that you can copy and adjust.

### How to use SEC EDGAR Filings Scraper

1. Open the Actor and select **Try for free**.
2. Keep the default full-text search or enter your own phrase.
3. Optionally select form types and a filing-date range.
4. To use company mode, add ticker symbols or CIKs under **Companies**. Company mode takes precedence over full-text search.
5. Set the maximum number of filings and start the run.
6. Open the Dataset tab to preview or export the results.

### Input

| Field              | Description                                                                                  |
| ------------------ | -------------------------------------------------------------------------------------------- |
| `searchQuery`      | Full-text phrase used when `companies` is empty.                                             |
| `forms`            | SEC form types to include; empty means all forms.                                            |
| `startDate`        | Optional first filing date in `YYYY-MM-DD` format.                                           |
| `endDate`          | Optional last filing date in `YYYY-MM-DD` format.                                            |
| `companies`        | Ticker symbols or CIKs for company mode.                                                     |
| `userAgentContact` | Optional organization and contact for the declared SEC User-Agent. Stored as a secret input. |
| `maxItems`         | Maximum number of dataset records, from 1 to 10,000.                                         |

Example company-mode input:

```json
{
    "searchQuery": "",
    "forms": ["10-K"],
    "companies": ["AAPL"],
    "maxItems": 5
}
```

### Output

Each dataset item represents one filing or one matching filing document. This example came from a live full-text search against SEC EDGAR:

```json
{
    "accessionNumber": "0001683168-20-000837",
    "cik": "0000790526",
    "companyName": "RadNet, Inc.",
    "tickers": ["RDNT"],
    "formType": "8-K",
    "filedAt": "2020-03-16",
    "periodEnding": "2020-03-13",
    "items": ["8.01", "9.01"],
    "fileType": "EX-99.1",
    "fileDescription": "TRANSCRIPT OF CONFERENCE CALL",
    "sicCode": "8071",
    "filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/790526/000168316820000837/",
    "filingUrl": "https://www.sec.gov/Archives/edgar/data/790526/000168316820000837/radnet_8k-ex9901.htm",
    "query": "artificial intelligence",
    "scrapedAt": "2026-07-18T08:55:40.181Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### Data table

| Field                                 | Meaning                                            |
| ------------------------------------- | -------------------------------------------------- |
| `accessionNumber`                     | SEC accession number.                              |
| `cik`                                 | Ten-digit Central Index Key.                       |
| `companyName`, `tickers`              | Filer identity and available ticker symbols.       |
| `formType`, `filedAt`, `periodEnding` | Filing classification and dates.                   |
| `items`                               | Reported item codes, commonly used by 8-K filings. |
| `fileType`, `fileDescription`         | Matching document metadata when available.         |
| `sicCode`                             | Standard Industrial Classification code.           |
| `filingIndexUrl`, `filingUrl`         | Direct links into the official SEC archive.        |
| `query`, `scrapedAt`                  | Source criterion and collection timestamp.         |

### How to use SEC EDGAR Filings Scraper with AI agents (MCP)

The [Apify MCP server](https://mcp.apify.com/) exposes this Actor as a callable tool for any Model Context Protocol client, such as Claude, Claude Code, Cursor, or VS Code. The client reads the Actor's input schema, builds the input JSON itself, starts the run, and receives a preview of the resulting dataset together with the dataset ID, which it can page through for the full result set.

Add the Actor as a tool in Claude Code. OAuth is the recommended way to authenticate because no API token ever touches your config files:

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

On first use, run `/mcp` in Claude Code and complete the browser sign-in to Apify.

If your client cannot use OAuth (for example in headless or CI setups), authenticate with an API token header instead. Clients such as Claude Code accept this JSON shape; check your client's documentation for its exact format and config location:

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=grilled_gorge/sec-edgar-filings-scraper",
            "headers": {
                "Authorization": "Bearer <APIFY_TOKEN>"
            }
        }
    }
}
```

Replace `<APIFY_TOKEN>` with an Apify API token from **Settings → API & Integrations**. Treat the token like a password: create a separate token for MCP use, and never commit it to git, paste it into chats, or show it in screenshots. Keep the `tools` parameter so the agent can only reach this single Actor (least privilege); remove it only if you deliberately want Apify's broader default tool set, which can change over time.

Prompts that work well once the tool is connected:

- "Which 8-K filings from this week mention artificial intelligence? Return 25 results."
- "Get NVIDIA's most recent SEC filings of any form type."
- "List Apple's 10-K filings since 2023 by CIK 0000320193."

Ask the agent for a small `maxItems` value. Every saved filing is a billed result item, and short result lists keep the agent's context usable.

### How much does it cost to search SEC EDGAR filings?

The Actor uses lightweight official API requests and no paid proxies. Pricing is pay-per-event: one start event plus one result event for each saved filing. Check the Pricing tab before starting a run; limiting `maxItems` gives you direct control over the maximum result charges.

### Tips and advanced options

- Use quoted phrases for precise full-text searches.
- Combine a focused phrase with specific forms and dates to reduce irrelevant matches.
- Use ticker symbols for convenience or CIKs for unambiguous company selection.
- For recurring monitoring, schedule the Actor and use a narrow date range.
- Supply a business contact in `userAgentContact` when your organization requires its own SEC request identity. Apify stores it encrypted, but the Actor sends it to SEC systems as part of the `User-Agent` header by design — use only a business address you intend to disclose, never private or third-party contact data.

### FAQ, disclaimers, and support

#### Does this Actor need SEC credentials?

No. It reads public SEC EDGAR endpoints that do not require authentication.

#### Why can a full-text result point to an exhibit?

SEC full-text search matches filing contents and attachments. `filingUrl` therefore identifies the matching document, while `filingIndexUrl` identifies its filing archive directory.

#### Are all historical company filings returned?

Company mode uses the SEC submissions endpoint's recent-filings collection. Use full-text mode for broader document discovery.

Public filing data can contain errors or later amendments and is not investment, legal, or accounting advice. Respect applicable laws and SEC policies when using or redistributing results. For bugs, feature requests, or custom solutions, use the Actor's Issues tab.

# Actor input Schema

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

Phrase searched in the contents of SEC EDGAR filings, for example "artificial intelligence". This field drives full-text search mode, which runs only while companies is empty. If you set companies, the Actor switches to company mode and ignores searchQuery. Supply either searchQuery or companies.

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

SEC form types to keep, for example \["8-K", "10-K", "10-Q", "S-1"]. An empty list returns all form types and is the default. Applies to full-text search mode and company mode alike.

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

Earliest filing date to include, written as YYYY-MM-DD, for example 2026-01-31. Leave empty for no lower bound. Relative wording such as "last week" is rejected.

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

Latest filing date to include, written as YYYY-MM-DD, for example 2026-06-30. Leave empty for no upper bound. Relative wording such as "today" is rejected.

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

Ticker symbols or ten-digit CIKs, for example \["NVDA", "0000320193"]. Filling this switches the Actor to company mode: it returns the most recent filings of these companies and ignores searchQuery. Leave it empty to run full-text search mode instead. Supply either searchQuery or companies.

## `userAgentContact` (type: `string`):

Optional organization name and contact address for the SEC User-Agent header.

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

Maximum number of filings saved to the dataset. AI agents should ask for a small number such as 25, because each result item is billed and long result lists do not fit a chat context. Console and API users can raise it up to 10000.

## Actor input object example

```json
{
  "searchQuery": "artificial intelligence",
  "forms": [
    "8-K"
  ],
  "startDate": "",
  "endDate": "",
  "companies": [],
  "maxItems": 100
}
```

# Actor output Schema

## `dataset` (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 = {
    "searchQuery": "artificial intelligence",
    "forms": [
        "8-K"
    ],
    "companies": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("grilled_gorge/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 = {
    "searchQuery": "artificial intelligence",
    "forms": ["8-K"],
    "companies": [],
}

# Run the Actor and wait for it to finish
run = client.actor("grilled_gorge/sec-edgar-filings-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 '{
  "searchQuery": "artificial intelligence",
  "forms": [
    "8-K"
  ],
  "companies": []
}' |
apify call grilled_gorge/sec-edgar-filings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,grilled_gorge/sec-edgar-filings-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/7w2Hk9hDaVOlgNUB2/builds/4NCaPjzXhr2T6VWRy/openapi.json
