# SEC EDGAR Filings Scraper — 10-K, 10-Q, 8-K, Full-Text Search (`highbrow_fame/sec-edgar-filings`) Actor

SEC EDGAR filings by ticker, CIK or full-text search: form, dates, accession number, document links, 8-K items, and optional XBRL key financials for 10-K/10-Q. Official SEC APIs.

- **URL**: https://apify.com/highbrow_fame/sec-edgar-filings.md
- **Developed by:** [yestrue](https://apify.com/highbrow_fame) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.50 / 1,000 filing delivereds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## SEC EDGAR Filings Scraper — 10-K, 10-Q, 8-K, Full-Text Search

Get SEC filings from EDGAR for any US-listed company — or for every company whose filings contain a phrase: form type, filing and period dates, accession number, links to the document and the filing index, 8-K item numbers with their titles, size, XBRL flags, the company's ticker, exchange, industry and state — and, if you want, the key financials each 10-K and 10-Q reported (revenue, operating and net income, EPS, assets, liabilities, equity, cash, operating cash flow, shares outstanding). Type tickers, CIK numbers or company names, search the full text of every filing since 2001, or paste an EDGAR link.

**Why this one**

- 🏛️ **Straight from the SEC.** Everything comes from the SEC's own free JSON services (data.sec.gov and EDGAR full-text search) — no screen scraping, no third-party database.
- ⚡ **Fast.** A live test run read JPMorgan Chase, NVIDIA, a full-text search for "stock repurchase" and two EDGAR search links — 4,789 filings in 86 seconds. The ready-made example (Apple and Tesla, 30 filings each) takes about 5 seconds.
- 🔎 **Full-text search, newest first, past 10,000.** Search the text of every filing since 2001 with EDGAR's own syntax ("exact phrase", OR, -word). EDGAR itself stops at 10,000 documents per search; sorted by date, this goes on: a live run delivered 10,500 8-K filings of 2026 that mention "revenue".
- 📊 **Key financials on request.** Tick **Add key financials to 10-K and 10-Q** and each annual or quarterly report comes with the figures it reported in XBRL — for the year (10-K) or the quarter (10-Q). In a live run, 203 of the 204 10-Ks and 10-Qs Apple, Microsoft and JPMorgan Chase filed since 2010 came with their figures, and 988 of 1,000 found by a full-text search for "going concern".
- 🔒 **Companies only.** Insiders and 5% holders who file Forms 3, 4, 5, 144, 13D and 13G are often private persons: their names are never in the results — a live run with 790 such filings named companies only. A Form 4 comes back under the company whose shares were traded; a CIK that belongs to a person is refused.
- 💸 **You pay only for filings delivered.** A ticker or name EDGAR does not know, a link that is not an EDGAR search, or a person's CIK comes back as a free record with the reason.

### What you get

For every filing:

| Field | What it is |
|---|---|
| `cik`, `company`, `ticker`, `tickers`, `exchange` | the company (CIK as 10 digits, as EDGAR writes it) |
| `industry`, `sic`, `location`, `stateOfIncorporation`, `fiscalYearEnd`, `filerCategory` | SIC industry, business city and state, "Large accelerated filer"… |
| `form`, `filingDate`, `reportDate`, `acceptedAt` | 10-K, 8-K, 4…; the day it was filed, the period it reports on, and when EDGAR accepted it |
| `accessionNumber`, `fileNumber`, `act` | EDGAR's filing id and the company's SEC file number |
| `items`, `itemTitles` | for 8-Ks: the items reported (2.02 Results of Operations and Financial Condition, 5.02 Departure or Election of Directors or Officers…) |
| `documentUrl`, `documentType`, `description`, `filingIndexUrl` | the main document — or, from a full-text search, the document that matched (EX-99.1…) — its description ("EX-99.1 Q3 PRESS RELEASE") and the filing's index page |
| `sizeBytes`, `isXBRL`, `isInlineXBRL` | size of the filing and whether it carries XBRL data |
| `financials` | with **Add key financials**: `fiscalYear`, `fiscalPeriod`, `periodStart`, `periodEnd`, `currency`, `revenue`, `operatingIncome`, `netIncome`, `epsBasic`, `epsDiluted`, `assets`, `liabilities`, `equity`, `cash`, `operatingCashFlowYtd`, `sharesOutstanding` |
| `otherCompanies` | from a full-text search: the other companies on the same filing (co-registrants, the fund behind a 13D) |
| `input`, `source`, `position`, `scrapedAt`, `status`, `error` | which company or search it came from, and why an input gave nothing |

From a full-text search, `acceptedAt`, `act`, `sizeBytes`, the XBRL flags, `industry` and `fiscalYearEnd` are empty (the search does not return them); `sic` and `location` are there.

#### Example

A real record from a live run — Apple's 10-Q with key financials, 25 September 2026:

```json
{
  "input": "AAPL",
  "source": "company",
  "cik": "0000320193",
  "company": "Apple Inc.",
  "ticker": "AAPL",
  "exchange": "Nasdaq",
  "industry": "Electronic Computers",
  "location": "CUPERTINO, CA",
  "fiscalYearEnd": "09-26",
  "filerCategory": "Large accelerated filer",
  "form": "10-Q",
  "filingDate": "2026-07-31",
  "reportDate": "2026-06-27",
  "acceptedAt": "2026-07-31T10:01:02.000Z",
  "accessionNumber": "0000320193-26-000020",
  "fileNumber": "001-36743",
  "documentUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000020/aapl-20260627.htm",
  "filingIndexUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000020/0000320193-26-000020-index.htm",
  "sizeBytes": 5946811,
  "isInlineXBRL": true,
  "financials": {
    "fiscalYear": 2026,
    "fiscalPeriod": "Q3",
    "periodStart": "2026-03-29",
    "periodEnd": "2026-06-27",
    "currency": "USD",
    "revenue": 109417000000,
    "operatingIncome": 35695000000,
    "netIncome": 29789000000,
    "epsDiluted": 2.02,
    "assets": 383266000000,
    "liabilities": 275746000000,
    "equity": 107520000000,
    "cash": 39544000000,
    "operatingCashFlowYtd": 116996000000,
    "sharesOutstanding": 14594180000
  },
  "status": "OK"
}
```

### How to use it

1. Type **Companies** — tickers (AAPL), CIK numbers (320193) or names (Microsoft) — and/or **Full-text search** phrases, and/or paste **EDGAR links** (a company's filings page, or a search set up on sec.gov/edgar/search; the link's own filters are used).
2. Optionally narrow by **Form types** (10-K, 10-Q, 8-K, S-1, DEF 14A, 13F-HR, 4, D…; `424B*` for every 424B prospectus, `-4` to leave Form 4 out) and by date (**Filed from / until**, or **Filed within (days)**).
3. Set **Max filings per company or search**, tick **Add key financials** if you want the figures, and press **Start**. Download the results from the **Output** tab as JSON, CSV or Excel.

To follow new filings, save your input as a task with **Filed within (days)** set to 1 and schedule it daily — for example every new 8-K of your watchlist, or every new filing that mentions "material weakness".

You can also call it from the Apify API, from Make, Zapier or n8n, or from an AI agent through the Apify MCP server.

**Fair access.** The SEC asks automated tools to name themselves and to stay under 10 requests a second. This actor sends a User-Agent that names it and links to its page on Apify (no personal e-mail address), and paces itself to 8 requests a second for the whole run.

### Pricing

You are charged **per filing delivered** — see the price on this page. The key financials cost nothing extra. Tickers, names and CIKs EDGAR does not know, persons' CIKs and links that are not EDGAR searches are free.

### FAQ

**How far back?** A company's list goes back to its first electronic filing — a live run returned Berkshire Hathaway's 13F-HR filings back to May 1999. Full-text search covers 2001 onwards.

**How many filings per company or search?** All of them — set **Max filings per company or search** high enough. EDGAR's full-text search serves 10,000 documents per search; with **Newest first** (the default) this actor goes past that — 10,500 in a live run — while **Most relevant first** stops there.

**What does the full-text order mean?** Newest first and Oldest first sort by filing date. EDGAR's own default, Most relevant first, mixes the years.

**Why are some `financials` empty?** Only 10-K and 10-Q filings get them, and only when the filing reported the figures in XBRL: most amendments (10-K/A) do not, and neither do filings from before XBRL (2009-2011, depending on the company's size). A figure the company does not report under the usual name — a bank's operating income, Berkshire's EPS per Class A share — stays empty.

**Why is a filing from a full-text search listed under one company when the document names a person?** Ownership filings (Forms 3, 4, 5, 144, 13D, 13G) are filed jointly by the person and the company or fund. Only the company or fund is given; a document filed by persons only is left out. A document description that names a person is left out too.

**Is this affiliated with the SEC?** No. This is an independent tool that reads the SEC's public EDGAR data. It is not endorsed by the SEC.

**Like it?** A short review on the Store page helps other people find this Actor. Something missing or broken? Tell us on the Issues tab — we read every one.

# Actor input Schema

## `companies` (type: `array`):

Tickers (AAPL), CIK numbers (320193) or company names (Microsoft). One per line. Each gives its filings, newest first.

## `formTypes` (type: `array`):

Optional: only these forms, e.g. 10-K, 10-Q, 8-K, S-1, DEF 14A, 13F-HR, SC 13G, 4, D. A trailing \* matches the start (424B\*); -4 leaves a form out. Empty: every form. For companies and full-text searches; links keep their own filters.

## `dateFrom` (type: `string`):

Optional: filings filed on or after this date (YYYY-MM-DD).

## `dateTo` (type: `string`):

Optional: filings filed on or before this date (YYYY-MM-DD).

## `filedWithinDays` (type: `integer`):

Optional: only filings of the last N days — handy for a daily schedule. Overrides "Filed from".

## `fullTextQueries` (type: `array`):

Optional: search the text of every filing since 2001, as on EDGAR full-text search. Use quotes for an exact phrase ("going concern"), OR between alternatives, - to leave a word out. One search per line; the form types and dates above apply.

## `fullTextSort` (type: `string`):

For the full-text searches above. By date, a search can go past EDGAR's 10,000-document limit; by relevance it stops there.

## `searchUrls` (type: `array`):

Optional: a company's filings page (sec.gov/cgi-bin/browse-edgar?action=getcompany\&CIK=…, sec.gov/edgar/browse/?CIK=…) or a full-text search set up on sec.gov/edgar/search. The link's own filters are used.

## `includeAmendments` (type: `boolean`):

Also deliver amended filings (10-K/A, 8-K/A, …) for the form types above.

## `includeFinancials` (type: `boolean`):

Adds the figures the filing reported in XBRL: revenue, operating income, net income, EPS, assets, liabilities, equity, cash, operating cash flow and shares outstanding. One extra request per company.

## `maxFilingsPerSearch` (type: `integer`):

Stops each company, search or link after this many filings.

## `maxConcurrency` (type: `integer`):

How many companies or searches to work on at the same time. All of them share the SEC's limit of 10 requests a second.

## `proxyConfiguration` (type: `object`):

Used only to try again after a network error: the first try goes out directly.

## Actor input object example

```json
{
  "companies": [
    "AAPL",
    "TSLA"
  ],
  "formTypes": [
    "10-K",
    "10-Q",
    "8-K"
  ],
  "fullTextSort": "newest",
  "includeAmendments": true,
  "includeFinancials": false,
  "maxFilingsPerSearch": 30,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Every result as a JSON record, with a status for each input.

## `resultsCsv` (type: `string`):

The same records as CSV, for a spreadsheet.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "companies": [
        "AAPL",
        "TSLA"
    ],
    "formTypes": [
        "10-K",
        "10-Q",
        "8-K"
    ],
    "maxFilingsPerSearch": 30,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("highbrow_fame/sec-edgar-filings").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "companies": [
        "AAPL",
        "TSLA",
    ],
    "formTypes": [
        "10-K",
        "10-Q",
        "8-K",
    ],
    "maxFilingsPerSearch": 30,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("highbrow_fame/sec-edgar-filings").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "companies": [
    "AAPL",
    "TSLA"
  ],
  "formTypes": [
    "10-K",
    "10-Q",
    "8-K"
  ],
  "maxFilingsPerSearch": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call highbrow_fame/sec-edgar-filings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,highbrow_fame/sec-edgar-filings"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/SPLy4zYBLMHf3b7g3/builds/aGxNOnFVTC66KkdgE/openapi.json
