DEV Community

Ava Torres
Ava Torres

Posted on

Build SEC EDGAR Filing Alerts with n8n and Apify

Why Monitor SEC Filings?

Public companies file 10-K, 10-Q, and 8-K reports with the SEC. These filings contain earnings, risk factors, insider transactions, and material events. Monitoring them manually means checking EDGAR repeatedly.

This workflow automates it: check EDGAR on a schedule, get Slack alerts when new filings appear.

The Workflow (4 Nodes)

Node 1: Schedule Trigger

Runs every 6 hours (adjust to your needs).

Node 2: Search SEC EDGAR

Uses the SEC EDGAR Filings actor on Apify:

{
  "companyName": "Tesla",
  "formTypes": ["10-K", "10-Q", "8-K"],
  "maxResults": 10
}
Enter fullscreen mode Exit fullscreen mode

You can search by company name, CIK number, or ticker. Filter by form type to only get the filings you care about.

Node 3: Get Results

Fetch the dataset from Apify. Each filing includes:

  • Company name and CIK
  • Form type (10-K, 10-Q, 8-K, etc.)
  • Filing date
  • Direct link to the filing on EDGAR
  • Filing description

Node 4: Post to Slack

Send each filing as a Slack message:

New SEC Filing: 8-K - Tesla Inc
Filed: 2026-03-28
Link: https://www.sec.gov/Archives/edgar/...
Enter fullscreen mode Exit fullscreen mode

Cost

$0.002 per filing result. Checking 10 filings every 6 hours = ~$0.08/day.

Import the Workflow

{
  "name": "SEC EDGAR Filing Alerts to Slack",
  "nodes": [
    {
      "parameters": {
        "rule": {"interval": [{"field": "hours", "hoursInterval": 6}]}
      },
      "id": "schedule-node",
      "name": "Every 6 Hours",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [240, 300]
    },
    {
      "parameters": {
        "actorId": "pink_comic/sec-edgar-company-filings",
        "input": "{\n  \"companyName\": \"Tesla\",\n  \"formTypes\": [\"10-K\", \"10-Q\", \"8-K\"],\n  \"maxResults\": 10\n}",
        "options": {"memoryMbytes": 256, "timeoutSecs": 120, "waitForFinish": 120}
      },
      "id": "run-actor",
      "name": "Search SEC EDGAR Filings",
      "type": "@apify/n8n-nodes-apify.apify",
      "typeVersion": 1,
      "position": [460, 300]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "=https://api.apify.com/v2/datasets/{{ $json.defaultDatasetId }}/items?format=json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "options": {}
      },
      "id": "get-results",
      "name": "Get Filings",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [680, 300]
    },
    {
      "parameters": {
        "channel": "#sec-filings",
        "text": "=New SEC Filing: {{ $json.formType }} - {{ $json.companyName }}\nFiled: {{ $json.filingDate }}\nLink: {{ $json.filingUrl }}",
        "otherOptions": {}
      },
      "id": "slack-node",
      "name": "Post to Slack",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.2,
      "position": [900, 300]
    }
  ],
  "connections": {
    "Every 6 Hours": {"main": [[{"node": "Search SEC EDGAR Filings", "type": "main", "index": 0}]]},
    "Search SEC EDGAR Filings": {"main": [[{"node": "Get Filings", "type": "main", "index": 0}]]},
    "Get Filings": {"main": [[{"node": "Post to Slack", "type": "main", "index": 0}]]}
  }
}
Enter fullscreen mode Exit fullscreen mode

Install the @apify/n8n-nodes-apify community node in n8n before importing.

Variations

  • Email instead of Slack: Replace the Slack node with a Send Email node
  • Google Sheets log: Add a Google Sheets node to keep a running log of all filings
  • Multi-company: Duplicate the Apify node for each company you want to track
  • Filter new only: Add an IF node to compare filing dates and only alert on filings from the last 24 hours

Related Actors

All $0.002/result, pay-per-result.

Top comments (0)