SEC Filings Notifications
Monitor
Monitors the SEC's RSS feed and EFTS. RSS is faster, but misses some submissions. EFTS is slower, but complete.
Monitor records hits and detected time to two dynamodb tables. Submissions records when a filing was first detected by a source such as RSS. It's state is saved to S3 nightly, in monitor-dumps/. This is can be downloaded if you have the Metadata Subscription.
Seen is used for deduplication. Whenever a filing has not been seen before, it is transmitted to SNS.
To optimize cost, I rewrote datamule-python in rust: secinfra. This allows both monitors to fit on ~ 32 MB. Other cost optimizations come from warm caching.
Datamule's Cost
- RSS Monitor
- lambda invocation every ten minutes: 52560 * $0.20/million = $0.01
- 128 MB (ARM) running every second: $53.618.
- EFTS Monitor
- lambda invocation every minute: 525600 * $0.20/million = $0.1
- 128 MB (ARM) running between 0s and 30s: ~$15.
- Dynamo DB
- Originally cost $7/day. Now essentially zero.
With Lambda's generous free tier, I believe this comes out to $0/year.
Anticipation
There are faster ways to get SEC Filings. Some trading firms have this in house. Anticipate emits filings with source anticipate instead of rss or efts.
Datamule's Cost
- About $20/year to anticipate 10% of filings. For about $200/year, I could probably estimate 60% of filings.
If you have subscribed to SEC Filings Email Notifications, you can choose to set notifications for what filings you would like to recieve in Datamule's dashboard. You can choose to recieve an email for every filing that comes out. If you choose this option, you will recieve ~5,000 emails per day.

Datamule's Cost
- This service uses AWS SNS for Emails. AWS charges $20 / million emails, the equivalent of one year of the SEC filings. If you filter, Datamule will get charged less.
Webhooks
If you have subscribed to SEC Filings Webhooks, you can set up to 25 endpoints to recieve notifications of new filings.
Usage
from datamulehub import sec_filings_notifications
# add an endpoint, filter by submission types, cik codes, or source of filing detection
print(sec_filings_notifications.add_endpoint(endpoint="https://example.com/sec-filings", submission_types=None, ciks=None, sources=["Rss","Efts"]))
# list endpoints
endpoints = sec_filings_notifications.list_endpoints()
print(endpoints)
# remove an endpoint by endpoint url or id
for endpoint in endpoints["data"]:
print(sec_filings_notifications.remove_endpoint(id=endpoint["id"]))
Important
User's endpoint must confirm SNS subscription.
Datamule's Cost
- This service uses AWS SNS for HTTP. AWS charges $0.60 / million requests, the equivalent of one year of the SEC filings.
Websocket
If you have subscribed to SEC Filings Websocket, you can set up to 5 persistent websocket connections. For SEC Filings Websocket Plus, you can set up to 100 persistent connections.
Usage
from datamulehub import sec_filings_notifications
for filing in sec_filings_notifications.stream_filings():
if filing["submission_type"] == "10-K":
print("10-K:", filing)
Datamule's Cost
- This service uses Cloudflare Durable Objects. I believe it ends up being essentially free to host and scale. Datamule used to use a t4g.small ($12/month).
SEC Filings Feed
This is free. Have fun. SEC Filings Feed
Datamule's Cost
- Uses the websocket.