# SEC EDGAR Filings Monitor: 8-K, 10-Q, 10-K, Form 4 by Ticker (`saadhazz/sec-filings-monitor`) Actor

Track new SEC EDGAR filings for any list of US tickers: form type, filing date, 8-K item codes and direct document links. Built on the official SEC data API, with no scraping and no proxies. $2 per 1,000 filings.

- **URL**: https://apify.com/saadhazz/sec-filings-monitor.md
- **Developed by:** [saad hazz](https://apify.com/saadhazz) (community)
- **Categories:** Business, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 filings

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 Monitor: 8-K, 10-Q, 10-K, Form 4 & S-1 by Ticker

**Track new SEC filings for your whole watchlist in one run.** For each filing you get the form type, filing and report dates, acceptance timestamp, **8-K item codes** (e.g. 2.02 Results of Operations, 5.02 Officer changes), accession number, and direct links to the primary document and the filing index. Data comes from the **official SEC EDGAR data API** (data.sec.gov), so there is no scraping, no proxies, and nothing breaks when the website changes. Price: **$2 per 1,000 filings**.

### Use cases

- **Event-driven trading and alerts.** Get notified the day a company files an 8-K, 10-Q or 10-K, or an insider Form 4.
- **Insider trading monitoring.** Watch Form 4 filings for any list of tickers.
- **Investor relations and competitive intelligence.** Follow competitors' and portfolio companies' filings.
- **Compliance watchlists and KYC refreshes.**
- **LLM and AI agent pipelines.** Feed new filing links to an agent for summarisation.

### Input

| Field | Description |
|---|---|
| `tickers` (required) | US tickers, e.g. `AAPL`, `TSLA`, `MSFT`. |
| `contactEmail` (recommended) | **Your** email address. The SEC asks every automated EDGAR client to identify itself in the User-Agent header with a contact email ([SEC fair-access policy](https://www.sec.gov/os/accessing-edgar-data)). It is sent only to sec.gov, never stored in the output, and never shared. If you leave it empty, the Actor identifies itself with its own project contact; for heavy or business use, please provide your email. |
| `organizationName` | Optional name or company added to the User-Agent. |
| `formTypes` | Optional filter, e.g. `8-K`, `10-Q`, `10-K`, `4`, `S-1`, `DEF 14A`. Leave empty to get all forms. |
| `sinceDate` | Only returns filings on or after this date (YYYY-MM-DD). Defaults to the last 30 days. |
| `maxFilingsPerTicker` | Caps the number of results (and the cost) per ticker. |

```json
{ "tickers": ["AAPL", "TSLA"], "contactEmail": "you@yourcompany.com", "formTypes": ["8-K", "10-Q", "10-K", "4"], "sinceDate": "2026-07-01" }
```

### Output (one row per filing)

```json
{
  "ticker": "AAPL",
  "cik": 320193,
  "company": "Apple Inc.",
  "form": "4",
  "filingDate": "2026-10-05",
  "reportDate": "2026-10-01",
  "acceptanceDateTime": "2026-10-06T02:42:45.000Z",
  "items8K": null,
  "accessionNumber": "0001140361-26-038674",
  "primaryDocDescription": "FORM 4",
  "documentUrl": "https://www.sec.gov/Archives/edgar/data/320193/000114036126038674/xslF345X06/form4.xml",
  "filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/320193/000114036126038674/0001140361-26-038674-index.htm",
  "sicDescription": "Electronic Computers"
}
```

Unknown tickers are listed for free in the `ERRORS` record of the key-value store.

### Pricing

Pricing is pay-per-event: **$0.002 per filing returned**. Unknown tickers and errors are free. To cap spending, set *Max total charge* in the run options; the Actor stops cleanly at your limit.

### Scheduling

Create a daily Apify Schedule with `sinceDate` left empty (a rolling 30-day window) and deduplicate on `accessionNumber`. Then send new filings to Slack, email, Google Sheets or a webhook through Apify integrations.

### Legal & fair access

The Actor uses the SEC's public EDGAR APIs, which are free and intended for programmatic access. It stays under the SEC's limit of 10 requests per second, backs off on errors, and identifies the requester with the contact email you provide, as the SEC requires. Filings are public records.

### FAQ

**Why should I give an email?** The SEC asks automated clients to declare a contact so it can reach you instead of blocking traffic. Without your email, the Actor declares its own project contact.

**How fast do new filings appear?** EDGAR's submissions API usually updates within minutes of acceptance.

**Does it cover non-US companies?** Yes, any company that files with the SEC and has a ticker in SEC's company list, including foreign private issuers filing 20-F and 6-K.

### More data APIs from the same developer

- [Job Search API: Career Site Jobs](https://apify.com/saadhazz/career-site-job-search): search 400k+ jobs from 13,000+ company career sites (Greenhouse, Lever, Ashby, Workable…) by title, country and remote, with new-job alerts. $2 / 1,000 jobs.
- [ATS Jobs API](https://apify.com/saadhazz/ats-jobs-api): every open job from a list of companies on Greenhouse, Lever, Ashby, SmartRecruiters or Recruitee, in one schema. $1 / 1,000 jobs.
- [Remote Jobs API](https://apify.com/saadhazz/remote-jobs-aggregator): remote and work-from-home jobs from Remote OK, Himalayas, Jobicy and Arbeitnow, deduplicated. $1 / 1,000 jobs.
- [Bulk WHOIS & RDAP Lookup](https://apify.com/saadhazz/domain-whois-rdap): domain expiry dates, registrar, age, status, nameservers, MX/SPF/DMARC for thousands of domains. $1 / 1,000 domains.
- [Sitemap URL Extractor](https://apify.com/saadhazz/sitemap-url-extractor): every URL a website lists in its XML sitemaps, with lastmod, hreflang and optional HTTP status. $0.40 / 1,000 URLs.
- [PDF Text Extractor](https://apify.com/saadhazz/pdf-text-extractor): PDF URLs to clean page-by-page text, Markdown tables and metadata for RAG/LLM pipelines.

Found a bug or need a field? Open an issue on the Issues tab; Issues are checked daily.

# Actor input Schema

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

US stock tickers, e.g. AAPL, MSFT. Case-insensitive.

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

The SEC's fair-access policy asks automated EDGAR clients to declare who they are, with a contact email, in the User-Agent header. Your email is sent only to sec.gov as part of that header and is never stored in the dataset or shared. If left empty, the Actor identifies itself with a project contact instead (the Actor's Store page).

## `organizationName` (type: `string`):

Added to the User-Agent sent to SEC, e.g. 'Acme Research'. Defaults to 'Individual'.

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

Only return these forms (e.g. 8-K, 10-Q, 10-K, 4, S-1). Leave empty for all forms.

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

Only filings with filingDate >= this date. Empty = last 30 days.

## `maxFilingsPerTicker` (type: `integer`):

Cap results (and cost) per ticker.

## Actor input object example

```json
{
  "tickers": [
    "AAPL",
    "TSLA"
  ],
  "formTypes": [
    "8-K",
    "10-Q",
    "10-K"
  ],
  "maxFilingsPerTicker": 50
}
```

# Actor output Schema

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

One SEC EDGAR filing per item with form type, dates, 8-K items and document links.

## `errors` (type: `string`):

Tickers that were not found or could not be fetched (not charged).

## `allRecords` (type: `string`):

Every auxiliary record written by the run (reports, invalid/failed inputs, large text files).

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

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

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,saadhazz/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/f4TaB8frAlUpbaCd2/builds/zmEITEVdkztST3dmg/openapi.json
