# SEC EDGAR Filings Scraper - 10-K 10-Q 8-K API

Scrape SEC EDGAR filings by ticker, CIK, or full-text search. Get 10-K, 10-Q, 8-K data with parsed item codes as clean CSV/JSON. No API key, pay per use.

Canonical product page: https://mayd-it.com/data-tools/actors/sec-edgar-filings-scraper/
Public Actor: https://apify.com/maydit/sec-edgar-filings-scraper

## Example input

```json
{
  "tickers": [
    "AAPL",
    "MSFT",
    "NVDA",
    "AMZN",
    "TSLA"
  ],
  "formTypes": [
    "10-K",
    "10-Q",
    "8-K"
  ],
  "startDate": "2024-01-01",
  "maxResults": 10
}
```

## Full guide

![Build a filing trail you can inspect — illustrative workflow](https://api.apify.com/v2/key-value-stores/YGxD9JRpduom8Q5Zd/records/sec-edgar-filings-scraper-3769b6b2a8c9.png?signature=16c7aLo4Oz7g2vRP2JZOc)

## Build a filing trail you can inspect

For company research: collect SEC EDGAR filing metadata by ticker, CIK or full-text query. Form types, filing dates and original document links make it easier to build an inspectable filing trail without an API key.

[Open this Actor in Console](https://console.apify.com/actors/PSkfnwipFfWQ2RkTJ/input) · [First run](#try-this-actor) · [Results](#result-preview) · [Cost](#usage-and-pricing) · [Full guide](#full-guide)

## Try this Actor

- **First run:** Use the existing **AAPL** Console prefill to inspect one company's filings. Review the maximum-results cap and form/date filters before switching to a broader full-text search.
- **Read the results:** Open the default Dataset for filings and **SUMMARY** for source coverage. Use the filing link and accession number to trace a row back to SEC EDGAR.
- **Keep in mind:** The filing date and report period are different facts. Company mode and full-text search have different coverage limits, documented below; filing metadata is not financial analysis.

## Result preview

The dataset view highlights these columns:

- **Company** · `companyName`
- **Ticker** · `ticker`
- **CIK** · `cik`
- **Form type** · `formType`
- **Filing date** · `filedDate`
- **Report period** · `reportDate`

Use the original source links and the field definitions below when interpreting the results. CSV works well for flat columns; JSON preserves nested values.

## Usage and pricing

Base result rate on the FREE tier: **$1.5 per 1,000 results**. The [Pricing tab](https://apify.com/maydit/sec-edgar-filings-scraper/pricing) shows your plan's result rate and any Actor Start charge. Set a small result limit for the first run; the requested limit is not a guarantee of that many results.

---

## Full guide

> Pull any company's SEC filings by ticker or CIK, or full-text search all of EDGAR - into clean, normalized records. No API key. Pay per use.

**What it does.** This SEC EDGAR filings scraper pulls filing metadata straight from the official SEC EDGAR data feeds and returns it as clean, normalized CSV or JSON. It runs in two modes: **company mode** (look up recent filings by ticker or CIK - handling ticker-to-CIK resolution for you) and **full-text search mode** (search across all EDGAR filings by keyword, company name, product, or risk phrase). Filter to specific form types like 10-K, 10-Q, and 8-K, and get parsed 8-K item codes so you can see exactly which material events were reported. It works as a drop-in SEC filings API with no API key required and resilient auto-retry when EDGAR returns 5xx errors.

### Who it's for

- **Fintech and financial-data teams** building filing feeds and datasets
- **Investment and equity research analysts** tracking companies and peers
- **Compliance and legal teams** monitoring disclosures and material events
- **Quants and data scientists** assembling structured filing datasets
- **Financial journalists** searching filings for stories and leads

### What you get (output)

Every filing is returned as a structured record with these fields:

| Field | Description |
|---|---|
| `companyName` | Registrant / company name |
| `ticker` | Stock ticker symbol (when available) |
| `cik` | SEC Central Index Key |
| `formType` | Filing form type (e.g. 10-K, 10-Q, 8-K, 4, 13F-HR, S-1) |
| `filedDate` | Date the filing was filed with the SEC |
| `reportDate` | Period-of-report date |
| `items` | Parsed 8-K item codes (material-event codes) |
| `description` | Filing description |
| `accessionNumber` | SEC accession number (unique filing ID) |
| `primaryDocument` | Primary document filename |
| `filingUrl` | Direct URL to the primary filing document |
| `filingIndexUrl` | URL to the filing's EDGAR index page |

Export the full dataset to CSV, JSON, Excel, or pull it via the Apify API.

### Input / how to query

Configure a run with any combination of these inputs:

- **`tickers`** - one or more stock tickers for company mode (e.g. `AAPL`, `MSFT`, `NVDA`).
- **`ciks`** - SEC CIK numbers for company mode, ideal for funds or entities without a ticker.
- **`keyword`** - a full-text search term across all EDGAR filings (used when no tickers/CIKs are set). Wrap a phrase in quotes for an exact match.
- **`formTypes`** - restrict to specific form types such as `8-K`, `10-K`, `10-Q`, `4`, `13F-HR`, `S-1`. Leave empty for all forms.
- **`startDate`** / **`endDate`** - a filed-date range (`YYYY-MM-DD`).
- **`maxResults`** - upper bound on filings returned per run.
- **`maxRunSeconds`** - wall-clock budget for the run (default 240). When it is reached the Actor stops cleanly and finishes successfully with the filings it already has, and records `stoppedEarlyOnTimeLimit: true` in the run's `SUMMARY`. Raise it, together with the run timeout, for a deliberately large full-text search.

**Mode selection is automatic:** provide `tickers` or `ciks` and the Actor runs in company mode; leave those empty and provide a `keyword` to run full-text search mode.

### Example use cases

- **Peer-set filing feed:** pull every 10-K and 10-Q for a basket of tickers to build a fundamentals research dataset.
- **8-K material-event monitor:** watch a portfolio for new 8-K filings and read the parsed `items` codes to flag events like leadership changes, results, or agreements.
- **Competitor and risk surveillance:** full-text search EDGAR for a competitor name, product, or risk phrase across all filers.
- **Insider and fund tracking:** filter to Form 4 (insider) or 13F-HR (fund holdings) for a company or CIK.
- **Compliance disclosure log:** export a date-ranged CSV of a company's filings for an audit or review trail.

### Recurring use and scheduling

Set an Apify **Schedule** to re-run the Actor on any cadence - hourly, daily, or weekly - to monitor companies for new filings. Each run returns the latest filings for your configured tickers, CIKs, or keyword. Use the `accessionNumber` field (the SEC's unique filing ID) to dedupe against filings you have already seen, so downstream alerts and datasets only pick up genuinely new records. Combine scheduling with a date range or `maxResults` to keep incremental runs small and fast.

### FAQ

### How do I get SEC filings data programmatically without an API key?

Run this Actor. It reads directly from the official SEC EDGAR data feeds, which are public and require no API key or account. You just supply tickers, CIKs, or a keyword, and get back structured records via the Apify API, or export to CSV/JSON.

### How can I scrape SEC EDGAR by ticker, company name, or CIK?

Use company mode: provide one or more `tickers` or `ciks` and the Actor pulls that company's recent filings, resolving ticker-to-CIK for you. To search by company name or any other text across all filers, use full-text search mode with the `keyword` input.

### How do I search the full text of all SEC filings?

Leave `tickers` and `ciks` empty and set a `keyword`. The Actor runs EDGAR full-text search across all filings, returning matching records. Wrap a phrase in quotes for an exact-phrase match.

### What is a free alternative to sec-api.io?

This Actor is a simple, pay-per-use alternative to subscription SEC APIs like sec-api.io. There is no monthly fee - you only pay per run and per result - and no API key to manage, while still getting clean normalized filing records including parsed 8-K item codes.

### How do I pull all 10-K, 10-Q, and 8-K filings for a company?

Set the company's `tickers` or `ciks`, then set `formTypes` to `10-K`, `10-Q`, and `8-K` (or leave `formTypes` empty to get every form type). Widen the date range and raise `maxResults` to reach further back through the company's history.

### How do I get 8-K item codes and material-event data?

Every 8-K record includes a parsed `items` field listing the 8-K item codes reported in that filing, so you can identify the specific material events (such as results, agreements, or officer changes) without opening each document.

### How do I export SEC filings to CSV or JSON?

Every run stores results in an Apify dataset that you can export to CSV, JSON, or Excel from the run's Storage tab, or fetch through the Apify API for a pipeline.

### How do I monitor or get alerts for a company's new SEC filings?

Create an Apify Schedule to re-run the Actor on a cadence with your target tickers or CIKs, and dedupe on `accessionNumber` so only new filings flow through. Connect the dataset to your own alerting via the Apify API or integrations.

### How far back does SEC EDGAR filing data go?

Coverage comes from the official EDGAR data feeds. EDGAR full-text search covers filings from 2001 onward, and company submission history reaches back further; use `startDate`/`endDate` and `maxResults` to control how far back a run goes.

### Are there SEC EDGAR rate limits and how do I avoid them?

The SEC asks scrapers to identify themselves and respect fair-access limits. This Actor automatically sends the SEC-recommended User-Agent header and includes resilient auto-retry when EDGAR returns 5xx errors, so runs stay reliable without you managing throttling.

### Data source and notes

- **Source:** the official U.S. Securities and Exchange Commission EDGAR system, via the public `data.sec.gov` submissions feeds and `efts.sec.gov` full-text search. This data is public and free to access.
- **No API key** is required. The Actor sends the SEC-recommended User-Agent header identifying the request.
- **Scope:** the Actor returns filing metadata and document links (the fields listed above). It does not parse the full body text or financial statements of each filing. Full-text search covers filings from 2001 onward, per EDGAR's own coverage.
- **Reliability:** built-in retry on EDGAR 5xx responses keeps runs resilient during SEC service hiccups.

### Related actors

Part of a set of US public-records tools that work well together:

- [Court Records Scraper](https://apify.com/maydit/us-court-cases-scraper) - federal litigation involving the same companies
- [Federal Contract Awards Scraper](https://apify.com/maydit/us-federal-contract-awards-scraper) - government revenue for public companies

See the full collection at [apify.com/maydit](https://apify.com/maydit).

### Found this useful?

If this actor saved you time, a short review on the Apify Store genuinely helps. Reviews are how the next person decides whether a tool is worth trying.

Something broken, missing a field, or a source you want covered? Open an issue on the **Issues** tab and it will get looked at - that is the fastest route to getting it changed.

#### Run spending limits

The run stops at its spending limit. `SUMMARY.datasetItemsSaved` reports the number of rows actually saved, and `SUMMARY.stoppedOnChargeLimit` identifies this stop. A final batch may be saved only in part; increase the spending limit to collect more results.

## Help with your run

Open the **Issues** tab on this Actor with the run URL, the input field that caused trouble and what you expected to receive. Remove API keys and private information before posting.

[Explore more Mayd-It Actors](https://apify.com/maydit)

## Understand your run

Open **Run report** in the run’s Output tab for saved-record counts, reported source issues and limits, and suggested next steps. Use **CSV export** to take the saved results into a spreadsheet. The existing JSON results and detailed machine-readable summary remain available.

The report reflects this run’s recorded coverage. A successful run or a saved result does not establish that every possible source record was collected.
