If you've ever tried to pull SEC filing data programmatically, you know the pain. The EDGAR full-text search is clunky, the submissions API returns deeply nested JSON that's annoying to parse, and the rate limiting (10 req/s with a mandatory User-Agent) means you can't just hammer it from a script.
The commercial options aren't cheap either. sec-api.io starts at $49/mo. Quandl (now Nasdaq Data Link) is $29/mo for basic access. Financial Modeling Prep charges per call. If you just need filing metadata and don't want to build a whole pipeline, that's a lot of overhead.
I built a free actor on Apify that wraps the EDGAR API and gives you clean, flat JSON for any company lookup. No API key needed. You pay per result on Apify ($0.005/company) and it handles the pagination, rate limiting, and data flattening.
What it actually returns
For each company, you get: CIK, ticker, SIC code (industry classification), EIN, state of incorporation, filer category, phone number, business and mailing address, former names, and every filing matching your filters.
Each filing record has the form type, filing date, report date, accession number, direct document URL, filing index URL, XBRL availability flag, and file size. So you can go straight from search result to the actual document.
Quick examples
Pull 10-K annual reports for FAANG stocks:
{
"tickers": ["AAPL", "AMZN", "GOOGL", "META", "NFLX"],
"formTypes": ["10-K"],
"maxFilings": 5
}
Track insider trading at NVIDIA since 2025:
{
"tickers": ["NVDA"],
"formTypes": ["4"],
"dateFrom": "2025-01-01",
"maxFilings": 100
}
Search by company name (partial match works):
{
"companyNames": ["Palantir"],
"formTypes": ["10-K", "10-Q", "8-K"],
"maxFilings": 20
}
Results come back in 2-3 seconds per company. Export as JSON, CSV, or Excel.
Why not just use the raw EDGAR API?
You can. It's free and public. But here's what you'd need to build:
Company resolution -- EDGAR identifies companies by CIK, not ticker. You'd need to maintain a ticker-to-CIK mapping or hit the company search endpoint first.
Pagination -- The submissions endpoint returns filings in batches across multiple URLs. Recent filings are inline, older ones are in separate
CIK0001234567-submissions-001.jsonfiles you have to fetch and merge.Rate limiting -- 10 requests per second, and the SEC blocks you (temporarily) if you don't include a valid User-Agent with your email. Most tutorials forget to mention this.
Data flattening -- The raw JSON nests filings inside
recentFilingsandfilesarrays with parallel arrays for each field (one array for dates, one for accession numbers, etc). Not the worst API design I've seen, but close.
None of this is hard, but it's 2-4 hours of work for something that should take 10 seconds.
Who actually uses this
From what I can tell, the main use cases are:
- Investment analysts who need filing history for fundamental research without paying for a Bloomberg terminal
- Compliance teams monitoring 8-K events and insider trading disclosures
- Due diligence workflows where you need complete filing history for acquisition targets
- Academic researchers building datasets of financial disclosures
- Lead gen -- every public company's phone number and address is in EDGAR, filterable by industry (SIC code)
The lead gen angle surprised me, but it makes sense. EDGAR has structured contact data for 10,400+ companies, organized by industry, with filing frequency as a proxy for company activity.
Try it
The actor is here: SEC EDGAR Company Filings Search
It's part of a collection of 30 public data tools I built covering government APIs, business registrations, and regulatory data. All free to try, all on Apify, all written in Go.
If you work with any of these data sources -- SEC filings, IRS 990 nonprofits, FDA drug safety, state business registrations, federal contracts -- there's probably an actor in the collection that saves you a few hours of API wrangling.
Top comments (0)