๐Ÿฆ– TinyRex Data Toolspractical guides for web data APIs

How to download SEC filings (10-K, 10-Q, 8-K, Form 4) by ticker and search EDGAR full text

Updated 2026-10-28 ยท Tool used: SEC EDGAR Filings Scraper - 10-K, 10-Q, 8-K by Ticker on Apify ยท Price: $0.0005 per filing ($0.50 per 1,000); unknown tickers, companies with no matching filings, empty searches and duplicates are free

The SEC publishes every filing for free, but the EDGAR website shows one company at a time, the JSON APIs need a CIK instead of a ticker, and full-text search is a separate service with its own format. Building a watchlist feed of 8-Ks or a table of the last two years of 10-Qs for 50 companies means stitching all of that together.

This guide shows how to get one clean row per filing from the official SEC EDGAR APIs: company, CIK, form, filing and report date, accession number, 8-K items as a list, SIC industry, and direct links to the main document and the filing index. The same run can also search the full text of every filing since 2001 for phrases like "going concern" or "cybersecurity incident". No API key is needed.

Open SEC EDGAR Filings Scraper on Apify โ†’

Steps

  1. Add tickers (AAPL, BRK-B) or CIKs to companies. Tickers are resolved with the SEC's own ticker list, and unknown ones come back as free rows.
  2. Pick formTypes (empty means all forms) and an optional dateFrom. Turn on older filings if you need history beyond the latest ~1,000 filings per company.
  3. For a topic search, set fullTextQuery (e.g. "supply chain" tariff) with form and date filters instead of, or next to, companies.
  4. Run it and export as CSV or Excel. For a daily feed of new filings for your watchlist, add a Schedule with dateFrom set to yesterday.

Example input

{
  "companies": [
    "AAPL",
    "MSFT",
    "NVDA"
  ],
  "formTypes": [
    "10-K",
    "10-Q"
  ],
  "dateFrom": "2024-10-01",
  "maxFilingsPerCompany": 20
}

Example output (one item, shortened)

{
  "query": "AAPL",
  "queryType": "company",
  "found": true,
  "cik": "0000320193",
  "companyName": "Apple Inc.",
  "tickers": [
    "AAPL"
  ],
  "exchanges": [
    "Nasdaq"
  ],
  "form": "8-K",
  "filingDate": "2026-07-30",
  "reportDate": "2026-07-30",
  "acceptanceDateTime": "2026-07-31T00:30:28.000Z",
  "accessionNumber": "0000320193-26-000018",
  "items": [
    "2.02",
    "9.01"
  ],
  "primaryDocument": "aapl-20260730.htm",
  "documentUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000018/aapl-20260730.htm",
  "filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000018/0000320193-26-000018-index.htm",
  "fileNumber": "001-36743",
  "sizeBytes": 417360,
  "isXBRL": true,
  "isInlineXBRL": true,
  "sic": "3571",
  "sicDescription": "Electronic Computers",
  "stateOfIncorporation": "CA",
  "fiscalYearEnd": "0926",
  "error": null
}

Every run's dataset can be downloaded as JSON, CSV, Excel, XML or HTML from the Apify Console, or via https://api.apify.com/v2/datasets/<datasetId>/items?format=csv.

Run it from code

Python

from apify_client import ApifyClient  # pip install apify-client

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
  "companies": [
    "AAPL",
    "MSFT",
    "NVDA"
  ],
  "formTypes": [
    "10-K",
    "10-Q"
  ],
  "dateFrom": "2024-10-01",
  "maxFilingsPerCompany": 20
}
run = client.actor("tinyrex/sec-edgar-filings-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

JavaScript / Node.js

import { ApifyClient } from 'apify-client'; // npm i apify-client

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('tinyrex/sec-edgar-filings-scraper').call({
  "companies": [
    "AAPL",
    "MSFT",
    "NVDA"
  ],
  "formTypes": [
    "10-K",
    "10-Q"
  ],
  "dateFrom": "2024-10-01",
  "maxFilingsPerCompany": 20
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

curl (no SDK)

# Runs the actor and returns the results directly (CSV here; use format=json for JSON)
curl -X POST "https://api.apify.com/v2/acts/tinyrex~sec-edgar-filings-scraper/run-sync-get-dataset-items?format=csv" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"companies": ["AAPL", "MSFT", "NVDA"], "formTypes": ["10-K", "10-Q"], "dateFrom": "2024-10-01", "maxFilingsPerCompany": 20}' > results.csv

Get your API token in Apify Console โ†’ Settings โ†’ API & Integrations. The free Apify plan includes monthly credit that is enough to try this.

Use it from an AI agent (MCP)

The Apify MCP server exposes this actor as a tool for Claude, Cursor, VS Code, n8n and other MCP clients. Add this to your client's MCP config (or use the OAuth flow at mcp.apify.com instead of a token):

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=tinyrex/sec-edgar-filings-scraper",
      "headers": {
        "Authorization": "Bearer <YOUR_APIFY_TOKEN>"
      }
    }
  }
}

Then ask in plain language, e.g. "Sec edgar api python for this list and give me a table".

Pricing

Pay per result: $0.0005 per filing ($0.50 per 1,000); unknown tickers, companies with no matching filings, empty searches and duplicates are free. You can cap the cost of every run in the run options.

FAQ

Does the SEC have a free API for EDGAR filings?

Yes. The SEC runs free JSON APIs on data.sec.gov and a full-text search service, with a fair-use limit of 10 requests per second and a declared User-Agent. This actor stays well under that limit and returns flat rows instead of raw JSON.

How do I get only earnings releases or executive changes from 8-K filings?

Set formTypes to ["8-K"] and filter the items column: 2.02 is results of operations (earnings), 5.02 is officer and director changes, 1.01 is a material agreement.

Can I feed the filings into an LLM or RAG pipeline?

Yes. Each row has documentUrl and filingIndexUrl, so you can fetch the main document or exhibits you need. The actor itself returns metadata and links, not the full documents.

What does it cost?

$0.0005 per filing returned ($0.50 per 1,000), cheaper on higher Apify plans. A filing found by two searches is charged once.

Try it on Apify โ†’

More guides