SEC EDGAR Filings Trigger

SEC EDGAR Filings Trigger

Certified

Trigger a flow when watched companies file on SEC EDGAR

Polls SEC EDGAR every interval and starts one execution per poll when one or more of the watched companies have new filings of the given forms; {{ trigger.filings }} lists them, oldest first, in the same shape as filings.List rows.

Each poll makes one request per company, plus one for SEC's ticker file when tickers is set, and reads only each company's recent filings. The default interval of 10 minutes keeps that far under SEC's limit of 10 requests per second; the minimum is 1 minute.

The first poll records the filings already on SEC and fires nothing, unless lookback is set: then it fires once for the filings accepted within lookback. After that, each filing fires once, by accession number, so filings accepted in the same second are neither skipped nor repeated. A filing that SEC publishes late, with an earlier acceptance time, still fires as long as it was accepted within the last 7 days. If a company's poll fails (SEC error or timeout), nothing is recorded for it and its filings are checked again on the next poll; other companies are not affected. The state is kept per company in the flow's namespace KV store.

yaml
type: io.kestra.plugin.edgar.filings.Trigger

Start a flow when a company files an 8-K.

yaml
id: edgar_new_8k
namespace: company.team

tasks:
  - id: log
    type: io.kestra.plugin.core.log.Log
    message: "{{ trigger.count }} new 8-K: {{ trigger.filings | toJson }}"

triggers:
  - id: new_8k
    type: io.kestra.plugin.edgar.filings.Trigger
    userAgent: "Example Co admin@example.com"
    tickers:
      - INTC
      - AAPL
    forms:
      - 8-K

Watch annual and quarterly reports by CIK, firing on the first poll for the last 7 days.

yaml
id: edgar_new_reports
namespace: company.team

tasks:
  - id: log
    type: io.kestra.plugin.core.log.Log
    message: "{{ trigger.filings | toJson }}"

triggers:
  - id: new_reports
    type: io.kestra.plugin.edgar.filings.Trigger
    userAgent: "Example Co admin@example.com"
    ciks:
      - "320193"
    forms:
      - 10-K
      - 10-Q
    interval: PT30M
    lookback: P7D
Properties

User-Agent sent to SEC

SEC requires automated tools to identify themselves with a name and a contact email, for example Example Co admin@example.com, and rejects requests without one. See SEC fair access.

Defaultfalse

Specifies whether a trigger is allowed to start a new execution even if a previous run is still in progress.

Defaulthttps://www.sec.gov

Base URL of the SEC website

Where company tickers are read from. Change it only to go through a proxy or a test server.

SubTypestring

CIKs of the companies to watch

With or without leading zeros, for example 320193. Set tickers, ciks or both.

Defaulthttps://data.sec.gov

Base URL of SEC's data API

Where filing lists are read from. Change it only to go through a proxy or a test server.

SubTypestring

Form types to watch

For example 8-K or 10-K, matched exactly and case-insensitively; amendments have their own form type, such as 10-K/A. All forms when empty.

DefaultPT10M
Formatduration

Time between polls

Defaults to 10 minutes; at least 1 minute.

How far back the first poll fires

For example P7D. Used only on the first poll, when no state is saved yet; by default the first poll fires nothing.

Default5

Maximum requests per second

Requests made by each poll are spaced so they stay at or under this rate. Defaults to 5, at most 10, which is SEC's limit. A request rejected with HTTP 429 or 503 is retried after SEC's Retry-After delay, then up to twice more, 10 and 20 seconds later.

SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED

List of execution states after which a trigger should be stopped (a.k.a. disabled).

SubTypestring

Tickers of the companies to watch

For example INTC. Set tickers, ciks or both.

Defaulttrue

A condition that determines whether the trigger should run.

A Pebble expression evaluated at trigger time. The trigger fires only when the expression evaluates to a truthy value (true, a non-empty string, a non-zero number). Use this to gate trigger execution on dynamic runtime values such as execution labels, flow variables, or environment conditions.

Number of new filings

New filings, oldest first

In the same shape as filings.List rows. Use {{ trigger.filings }}.

Definitions
acceptedAtstring
Formatdate-time

Time SEC accepted the filing

accessionNumberstring

Accession number

SEC's identifier of the filing, for example 0000050863-26-000155.

cikstring

CIK of the filer

The 10-digit zero-padded CIK.

filingDatestring
Formatdate

Date the filing was made

formstring

Form type

For example 8-K, 10-Q or 10-K/A.

itemsarray
SubTypestring

Item numbers

For an 8-K, the items it reports, for example 2.02 (results of operations); empty for most other forms.

primaryDocumentstring

File name of the primary document

primaryDocumentUrlstring
Formaturi

URL of the primary document on SEC's website

reportDatestring
Formatdate

Period or event date the filing reports on

Empty when SEC lists none.