# SEC Filings Monitor (`apt_marble/sec-filings-monitor`) Actor

Track SEC EDGAR filings by CIK or company name and collect 10-K, 10-Q and 8-K records with dates, accession numbers and direct document links.

- **URL**: https://apify.com/apt\_marble/sec-filings-monitor.md
- **Developed by:** [Hamza](https://apify.com/apt_marble) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 filing saveds

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 Filings Monitor

Track official SEC EDGAR filings by company CIK or company name. Collect 10-K, 10-Q, 8-K and other forms with filing dates, accession numbers and direct links to the primary filing document.

### What it does

- Looks up one or more companies by 10-digit CIK, or finds the CIK from a company name or ticker.
- Reads the official EDGAR filing history for each company.
- Keeps only the form types you ask for (for example 10-K, 10-Q, 8-K) and only filings on or after your chosen date.
- Returns one clean record per filing with a direct link to the filing and its primary document.

Typical uses: earnings-season tracking, 8-K alert lists, audit and compliance reviews, competitor disclosure monitoring, academic filing datasets.

### Inputs

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `ciks` | string array | `[]` | 10-digit CIKs with leading zeros, e.g. `["0000320193"]`. Provide this or `companyQuery`. |
| `companyQuery` | string | `""` | Company name or ticker used when `ciks` is empty, e.g. `"Apple"` or `"AAPL"`. |
| `forms` | string array | `["10-K", "10-Q", "8-K"]` | Form types to keep. Also supports `10-K/A`, `10-Q/A`, `8-K/A`, `S-1`, `424B4`, `DEF 14A`, `13F-HR`, `4`, `3`, `5` and others. |
| `maxFilings` | integer | `50` | Maximum filings to collect in total (1-500). |
| `sinceDate` | string | `""` | Only keep filings filed on or after this date (`YYYY-MM-DD`). Empty means no date filter. |

Example input:

```json
{
  "ciks": ["0000320193", "0000789019"],
  "forms": ["10-K", "10-Q", "8-K"],
  "maxFilings": 50,
  "sinceDate": "2024-01-01"
}
```

### Output

One dataset record per filing:

```json
{
  "cik": "0000320193",
  "companyName": "Apple Inc.",
  "form": "10-K",
  "filedAt": "2024-11-01",
  "accessionNumber": "0000320193-24-000123",
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/aapl-20240928.htm",
  "primaryDocument": "aapl-20240928.htm"
}
```

| Field | Description |
| --- | --- |
| `cik` | 10-digit company CIK. |
| `companyName` | Company name as listed by EDGAR. |
| `form` | Filing form type (10-K, 10-Q, 8-K, ...). |
| `filedAt` | Filing date (`YYYY-MM-DD`). |
| `accessionNumber` | EDGAR accession number. |
| `filingUrl` | Direct link to the primary filing document. |
| `primaryDocument` | Primary document file name. |

### Pricing

Pay per filing saved: **$0.005** per `filing-scraped` event. One event is charged for each filing row written to the dataset. A run collecting 50 filings costs about **$0.25**; 500 filings cost about **$2.50**.

### FAQ

**Do I need the CIK?**
No. If you only know the company name or ticker, put it in `companyQuery` and the actor resolves the CIK first.

**Which forms can I request?**
Any EDGAR form type. The defaults are 10-K, 10-Q and 8-K. Amendments such as 10-K/A also work — just list them in `forms`.

**How do I track only recent filings?**
Set `sinceDate` to a cutoff like `"2024-01-01"`. Older filings are skipped before counting toward `maxFilings`.

**What does `filingUrl` open?**
The primary filing document on the official EDGAR archive (the main 10-K / 10-Q / 8-K document), ready to read or download.

**How many companies can I check at once?**
List several CIKs in `ciks`. Results are collected in order until `maxFilings` is reached, with duplicates removed.

# Actor input Schema

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

Company CIKs as 10-digit strings with leading zeros (e.g. "0000320193" for Apple). Provide ciks or companyQuery.

## `companyQuery` (type: `string`):

Company name or ticker to look up when ciks is empty (e.g. "Apple" or "AAPL").

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

Filing form types to keep, e.g. 10-K, 10-Q, 8-K, 10-K/A, 10-Q/A, 8-K/A, S-1, 424B4, DEF 14A, 13F-HR, 4, 3, 5.

## `maxFilings` (type: `integer`):

Maximum filings to collect in total across all companies (1-500).

## `sinceDate` (type: `string`):

Only keep filings filed on or after this date (YYYY-MM-DD). Empty means no date filter.

## Actor input object example

```json
{
  "ciks": [
    "0000320193"
  ],
  "companyQuery": "",
  "forms": [
    "10-K",
    "10-Q",
    "8-K"
  ],
  "maxFilings": 50,
  "sinceDate": ""
}
```

# Actor output Schema

## `results` (type: `string`):

Every row this run produced.

## `runSummary` (type: `string`):

What this run collected, and anything it could not read.

# 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 = {
    "ciks": [
        "0000320193"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("apt_marble/sec-filings-monitor").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 = { "ciks": ["0000320193"] }

# Run the Actor and wait for it to finish
run = client.actor("apt_marble/sec-filings-monitor").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 '{
  "ciks": [
    "0000320193"
  ]
}' |
apify call apt_marble/sec-filings-monitor --silent --output-dataset

```

## MCP server setup

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

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/TlPP4TSmMRp1b7NLy/builds/nnLboSk1OdUrVt45o/openapi.json
