# SEC EDGAR Filings Feed (new filings by form, ticker or CIK) (`moment-data/sec-edgar-filings-feed`) Actor

New SEC EDGAR filings by form type, ticker or CIK, straight from official EDGAR sources. 8-K item codes decoded. Optional 'new since last run' mode for daily schedules.

- **URL**: https://apify.com/moment-data/sec-edgar-filings-feed.md
- **Developed by:** [Luke Miller](https://apify.com/moment-data) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 filing records

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?

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

## SEC EDGAR Filings Feed: New Filings by Form, Ticker or CIK

Get new SEC filings from **official EDGAR sources**, filtered to the forms and companies you care about. Schedule it daily in *new since last run* mode and each run delivers only filings you have not seen.

### What you get

- **Market-wide mode.** Reads the official EDGAR **daily form index**, one file per business day. Filter by form type (8-K, 10-K, 10-Q, 4, S-1, 424B2, SC 13D, D, 13F-HR, ...) and by company name.
- **Company mode.** Give tickers or CIKs and it reads each company's live **submissions feed** on data.sec.gov, so same-day filings show up as soon as the SEC publishes them.
- **8-K items decoded.** With *Add filing details*, each 8-K carries its item codes with plain-English descriptions (for example `2.02 Results of Operations and Financial Condition`, `5.02 Departure or Election of Directors or Officers`), plus acceptance time, report date and a link to the primary document.
- **Clean records.** Accession number, CIK, company name, tickers, form type, filing date, links to the filing index and main document.
- **New since last run.** Per *State key* history, so a daily schedule pays only for new filings.

### Example uses

- **Investor relations and event-driven traders:** get every new 8-K for a watchlist of tickers each morning, with item codes (earnings 2.02, executive changes 5.02, M\&A 1.01/2.01) decoded.
- **Deal and BD teams:** watch market-wide S-1, 424B, SC 13D and Form D filings to spot IPOs, activists and private raises.
- **Compliance and research:** archive all 10-K/10-Q filings of a peer group with links to the primary documents.
- **AI agents:** ask "which S\&P companies filed an 8-K item 5.02 yesterday?" through the Apify API or MCP server.

### Quick start

Run with the defaults to get the 50 newest 8-K, 10-K and 10-Q filings from the last few business days. For a daily feed, create a Schedule with `mode: sinceLastRun`, your forms or tickers, a higher `maxItems`, and a unique `stateKey`.

### Input (main fields)

| Field | Meaning |
|---|---|
| `mode` | `window` (default) or `sinceLastRun` (**set this for schedules**) |
| `lookbackDays` | Window length, default 3 |
| `formTypes` | Exact EDGAR form types; default 8-K, 10-K, 10-Q; empty = all forms |
| `tickers`, `ciks` | Company mode (live feed). Leave empty for market-wide mode |
| `companyNameContains` | Market-wide name filter |
| `includeFilingDetails`, `maxDetails` | Adds acceptance time, 8-K items and document link (extra charge per filing) |
| `maxItems` | Cap per run (also caps your spend), default 50 |
| `contactEmail` | Optional; added to the User-Agent sent to the SEC |
| `stateKey` | One key per saved search |

### Output (example, from a real record)

```json
{
  "accessionNumber": "0001193125-26-437823",
  "cik": 712034,
  "companyName": "ACCO BRANDS Corp",
  "tickers": [
    "ACCO"
  ],
  "formType": "8-K",
  "filingDate": "2026-10-29",
  "acceptedAt": "2026-10-29T20:16:37.000Z",
  "reportDate": "2026-10-29",
  "items": [
    {
      "code": "2.02",
      "description": "Results of Operations and Financial Condition"
    },
    {
      "code": "9.01",
      "description": "Financial Statements and Exhibits"
    }
  ],
  "description": "8-K",
  "isXbrl": true,
  "filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/712034/000119312526437823/0001193125-26-437823-index.htm",
  "documentUrl": "https://www.sec.gov/Archives/edgar/data/712034/000119312526437823/acco-20261029.htm",
  "source": "EDGAR daily form index + submissions API",
  "firstSeenAt": "2026-10-30T09:47:12.928Z"
}
```

Every run also writes a summary (window covered, days of EDGAR index read, counts) to the `OUTPUT` record.

### Timing you should know about

- The market-wide daily index is published **nightly** (about 10 pm ET), so market-wide mode returns filings through the previous business day. Weekends and holidays have no index and are skipped.
- For same-day filings of specific companies, use tickers or CIKs (company mode).

### Data source and fair access

- Sources: SEC EDGAR daily index (`sec.gov/Archives/edgar/daily-index`), the `data.sec.gov` submissions API and `sec.gov/files/company_tickers.json`. The SEC states that EDGAR public filing content is free to access and reuse ([SEC FAQ](https://www.sec.gov/about/webmaster-frequently-asked-questions)).
- The Actor follows the SEC's [fair access rules](https://www.sec.gov/search-filings/edgar-search-assistance/accessing-edgar-data): a declared User-Agent, a request rate well under the 10 per second limit (about 6), and backoff on errors.
- This Actor is not affiliated with or endorsed by the SEC. Filing data is provided as published; it is not investment advice.

### Pricing

Pay per event (Apify takes care of billing; you only pay for what is delivered):

| Event | Price | Charged |
|---|---|---|
| `apify-actor-start` | $0.005 | once per run |
| `filing-record` | $0.003 | per filing delivered |
| `filing-enriched` | $0.004 | extra per filing enriched with acceptance time, 8-K items and document link (only when `includeFilingDetails` is on) |

A default test run (50 filings) costs about $0.155. Watching 20 tickers daily (~5 new filings/day, enriched) costs about $0.04/day. `maxItems` and Apify's *max cost per run* cap your spend; the Actor stops delivering when your budget is reached, so you are never charged for more than you set. No separate platform-usage charges: compute is included in the event prices.

### FAQ

**Do I need an SEC API key?** No. EDGAR is public; the Actor sends a declared User-Agent and stays under the SEC rate limit.

**How do I get only new filings every day?** Create a Schedule with `mode: sinceLastRun` and a unique `stateKey`. Each run delivers only filings not delivered before for that key.

**Why are today's filings missing in market-wide mode?** The daily index is published nightly. Use `tickers` or `ciks` (company mode) for same-day filings.

**Can I export to Google Sheets, Slack or a webhook?** Yes, use Apify integrations on the dataset, or call the Actor from Make, Zapier, n8n or the API.

# Actor input Schema

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

window (default): all matching filings in the last N days, no saved state. sinceLastRun: only filings not delivered before for this State key; use this for daily schedules.

## `lookbackDays` (type: `integer`):

Window length; also the first-run window in sinceLastRun mode.

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

Exact EDGAR form types, e.g. 8-K, 10-K, 10-Q, 4, S-1, 424B2, SC 13D, D, 13F-HR. Empty = all forms (can be many thousands per day).

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

Only these companies (uses each company's live submissions feed, so same-day filings appear). Leave empty for market-wide mode.

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

Same as tickers, by SEC Central Index Key number.

## `companyNameContains` (type: `array`):

Market-wide mode only: keep filings whose company name contains any of these words.

## `includeFilingDetails` (type: `boolean`):

Market-wide mode: look up each filing's acceptance time, 8-K item codes with descriptions, report date and primary document link (extra charge per filing).

## `maxDetails` (type: `integer`):

Safety cap on detail lookups per run.

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

Hard cap on delivered filings (also caps your spend). Default is small so a first test run is quick and cheap; raise it for production.

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

SEC asks automated clients to declare a contact in the User-Agent. Optional: if set, it is added to the User-Agent sent to sec.gov.

## `stateKey` (type: `string`):

Name of the saved search for sinceLastRun mode. Each key keeps its own history, so use one key per schedule.

## Actor input object example

```json
{
  "mode": "window",
  "lookbackDays": 3,
  "formTypes": [
    "8-K",
    "10-K",
    "10-Q"
  ],
  "includeFilingDetails": false,
  "maxDetails": 100,
  "maxItems": 50,
  "stateKey": "default"
}
```

# Actor output Schema

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

One record per filing.

## `summary` (type: `string`):

Window covered, days of EDGAR index read, counts.

# 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 = {};

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

# Run the Actor and wait for it to finish
run = client.actor("moment-data/sec-edgar-filings-feed").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 '{}' |
apify call moment-data/sec-edgar-filings-feed --silent --output-dataset

```

## MCP server setup

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

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/mP4D0ncHzrzmQd9I8/builds/X4fYKpzXeV7orznPS/openapi.json
