SEC EDGAR Filings API avatar

SEC EDGAR Filings API

Pricing

from $2.55 / 1,000 filing extracts

Go to Apify Store
SEC EDGAR Filings API

SEC EDGAR Filings API

Structured SEC EDGAR filings metadata (10-K, 10-Q, 8-K, 13F, Form 4) by ticker/CIK or from the live recent-filings feed. One row per filing, ready for fintech, quant, and LLM research pipelines.

Pricing

from $2.55 / 1,000 filing extracts

Rating

0.0

(0)

Developer

Oakridge Tech

Oakridge Tech

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

What does SEC EDGAR Filings API do?

This Actor fetches structured metadata for SEC EDGAR filings10-K, 10-Q, 8-K, 13F (HR/NT), and Form 4 — directly from the U.S. Securities and Exchange Commission at sec.gov and data.sec.gov. You can pull filings for a list of tickers or CIKs, or tail the live recent-filings feed across every public issuer. The Actor runs on Apify, so you get scheduled runs, API access, webhook integrations, dataset exports (JSON/CSV/Excel), monitoring, and — via usesStandbyMode — native MCP tool exposure so LLM research agents (Claude, Perplexity, etc.) can call it directly.

Data comes from SEC's official JSON and Atom endpoints (public domain). Every outbound request passes through a sliding-window rate limiter capped at 9 requests/second (1 req/s under SEC's hard 10 req/s ceiling) and carries the contact User-Agent that SEC requires. No tuning, no knobs — the Actor is safe to run at default settings.

Why use SEC EDGAR Filings API?

  • Fintech & quant pipelines: feed 13F holdings filings into your factor backtest the day they hit the wire.
  • IR and M&A teams: track 8-K current reports across a peer group or watchlist in near real time.
  • LLM training and RAG: load thousands of 10-Ks and 10-Qs with full provenance (CIK, accession, primary document URL) for downstream XBRL parsing or embedding.
  • Insider activity monitoring: pull Form 4 transactions for a target CIK list and feed them into alerts.
  • No auth, no API keys: SEC EDGAR is free and public domain — just add a contact User-Agent and go.
  • Built for automation: schedule via Apify, export via API, trigger on new filings, or call as an MCP tool from your AI agent.

How to use SEC EDGAR Filings API

  1. Pick a mode. targeted pulls filings for specific companies. firehose tails the most recent filings across every issuer. Leave it on auto and the Actor will pick based on whether you supplied tickers/CIKs.
  2. Set your User-Agent. SEC requires a contact line — "AppName (email@domain.tld)". Runs without it fail fast before hitting any SEC endpoint.
  3. Supply targets (targeted mode). Add tickers like AAPL, MSFT, NVDA and/or raw CIKs like 0000320193. Tickers are resolved against SEC's canonical company_tickers.json.
  4. Filter by form and date. Select any subset of 10-K, 10-Q, 8-K, 13F-HR, 13F-NT, 4, 4/A. Optionally set dateFrom / dateTo in YYYY-MM-DD.
  5. Run it. Click Start, or call the Actor via the Apify API, scheduler, or MCP tool. Results land in the default dataset.
  6. Download. Export JSON, CSV, Excel, or HTML from the Dataset tab — or stream via the Apify API.

Input

Defined by ./.actor/input_schema.json. See the Input tab in the Apify Console for the form UI.

FieldTypeRequiredNotes
userAgentstringyesFormat "AppName (email@domain.tld)" — SEC rejects requests without it.
modeenumnoauto (default), targeted, or firehose.
tickersstring[]noUppercase tickers — e.g. ["AAPL", "MSFT"].
ciksstring[]noCIKs; leading zeros optional (zero-padded to 10 internally).
formTypesenum[]noDefaults to all supported forms.
dateFrom / dateToISO datenoInclusive filing-date filter.
maxFilingsPerIssuerintnoDefault 50. Caps rows per CIK in targeted mode.
firehoseLimitintnoDefault 100. Cap per form type in firehose mode.
proxyConfigurationobjectnoOptional Apify proxy. Not required — SEC has no geoblocks.

Example input (targeted, Apple's last five 10-Ks):

{
"userAgent": "MyResearch (me@example.com)",
"mode": "targeted",
"tickers": ["AAPL"],
"formTypes": ["10-K"],
"maxFilingsPerIssuer": 5
}

Output

One JSON object per filing, pushed to the default dataset. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

{
"cik": "0000320193",
"tickers": ["AAPL"],
"companyName": "Apple Inc.",
"sic": "3571 - Electronic Computers",
"form": "10-K",
"accessionNumber": "0000320193-25-000079",
"filingDate": "2025-10-31",
"reportDate": "2025-09-27",
"acceptanceDateTime": "2025-10-31T10:01:26.000Z",
"primaryDocument": "aapl-20250927.htm",
"primaryDocumentUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/aapl-20250927.htm",
"filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/index.json",
"filingHomepageUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/",
"isXBRL": true,
"isInlineXBRL": true,
"size": 9392337,
"source": "targeted"
}

Data table

FieldTypeDescription
cikstring10-digit zero-padded SEC Central Index Key.
tickersstring[]Known ticker symbols for the filer. Empty in firehose mode (CIK is always present).
companyNamestringOfficial filer name per SEC.
sicstring|null"{code} - {description}" industry classification. null in firehose mode.
formstringForm type — e.g. 10-K, 13F-HR, 4.
accessionNumberstringDashed accession ID — e.g. 0000320193-25-000079.
filingDatestringISO date the form was accepted by EDGAR.
reportDatestring|nullPeriod of report (fiscal period covered).
acceptanceDateTimestring|nullISO datetime of EDGAR acceptance.
primaryDocumentstring|nullPrimary document filename inside the filing archive.
primaryDocumentUrlstring|nullDirect link to the primary HTML/XML filing document.
filingIndexUrlstringEDGAR index.json for the filing's archive directory.
filingHomepageUrlstringHuman-friendly filing index page.
isXBRL / isInlineXBRLbool|nullStructured-data tags from the SEC submissions API.
sizeint|nullPrimary document size in bytes.
sourcestringtargeted (resolved from tickers/CIKs) or firehose (from recent-filings Atom feed).

How much does it cost to scrape SEC EDGAR?

SEC EDGAR is public domain and free — this Actor only charges for Apify compute time. Because everything is plain JSON over HTTP, runs are cheap:

  • Targeted (e.g. 100 tickers, all forms, last 5 years): usually a few cents of compute. Wall time is bounded below by SEC's 10 req/s limit — for 100 tickers that's ~12 seconds of rate-limited fetches plus response time.
  • Firehose (default firehoseLimit: 100 across 7 form types): pennies per run. Ideal for scheduled every 5 minutes pollers.
  • Bulk backfill (thousands of CIKs): scales linearly. SEC's 10 req/s is the hard throughput ceiling — a 10,000-CIK backfill takes at least ~19 minutes of steady-state fetching. Running multiple Apify runs in parallel doesn't help: SEC enforces the cap across all machines for a given requester.

Apify's free tier covers small runs; pay-as-you-go compute units keep large jobs predictable. For per-run pricing or enterprise access, see the Actor page.

Tips and advanced options

  • Schedule it. Create an Apify schedule to run the firehose mode every few minutes and stream new filings to a webhook or Slack.

  • Call as an MCP tool. This Actor exposes itself as a first-class MCP tool via Apify's managed MCP server — any MCP-speaking LLM client (Claude Desktop, Cursor, Perplexity Finance, custom agents built with the Claude Agent SDK, etc.) can call it directly.

    Point the client at:

    URL: https://mcp.apify.com/?actors=oakridge_tech/sec-edgar-filings-api
    Auth: Bearer <YOUR_APIFY_API_TOKEN>

    The tool registers under the name oakridge_tech--sec-edgar-filings-api with the full input schema (including the userAgent regex requirement and form-type enums). Billing flows through the caller's own Apify account, so your agent pays per-filing in its own budget — no coordination with the Actor author needed. For Claude Desktop users: add the URL + token to ~/.config/Claude/claude_desktop_config.json under mcpServers.

  • Bound large backfills. Always set maxFilingsPerIssuer + dateFrom / dateTo when pulling deep history — the Actor lazily pages into older submission shards only when your date range requires it.

  • Bring your own User-Agent in production. Don't reuse a shared UA. SEC logs the UA for abuse tracking; use something that identifies your organization and contact email.

  • Rate limiting is automatic — don't try to parallelize around it. The Actor enforces 9 req/s with a sliding-window limiter and retries 403/429 responses with backoff. Running multiple copies from the same IP or under the same contact User-Agent will get you throttled by SEC, not go faster.

  • 13F holdings / Form 4 transactions. Metadata only in v1 — each row links to primaryDocumentUrl (the XML filing) so you can parse holdings or insider transactions in a downstream Actor.

FAQ, disclaimers, and support

Is scraping SEC EDGAR legal? Yes. EDGAR filings are required to be public by U.S. securities law and SEC explicitly permits programmatic access at up to 10 requests per second, provided you identify yourself with a User-Agent. No authentication, no paywall, no terms-of-service gate.

Why is a User-Agent required? SEC uses it to contact you if your traffic causes problems. Set it to "YourCompanyOrTool (your-email@domain.tld)".

How does the Actor handle SEC's 10 req/sec limit? SEC's rate-control policy states: "the SEC will limit automated searches to a total of no more than 10 requests per second regardless of the number of machines used to submit requests." Violating it gets the originating IP temporarily blocked. The Actor enforces a sliding 1-second window capped at 9 requests — belt-and-suspenders with Crawlee's concurrency settings — so you stay safely under the ceiling with 1 req/s of headroom for clock drift and retries. Empirical verification on a stress run (21 requests, 20 tickers): max 9 requests in any rolling 1-second window, avg 7.6 req/s. Transient 403/429 responses are retried with exponential backoff.

Does this Actor parse the filings themselves? Not in v1. Output is metadata plus direct URLs to the primary filing document. XBRL fact extraction, 13F holdings explosion, and Form 4 transaction parsing are on the roadmap.

Can I get data older than the filings.recent window? Yes — set dateFrom to a date before the recent window and the Actor will fetch SEC's older-submission shards for each CIK automatically.

What about a ticker I can't find? SEC's company_tickers.json only lists currently active equity tickers. For funds, ADRs, or delisted issuers, supply the CIK directly.

Support and feedback. Issues, bugs, feature requests → the Issues tab on the Actor page. Custom extensions (XBRL flattening, 13F explosion, private-dataset delivery) are available on request.


Public-domain filing data — you are responsible for how you use it. This Actor does not collect, store, or transmit personal data beyond what SEC publishes in its public filings.