# SEC EDGAR API - Filings, XBRL Facts & Form D Funding (`lost.fany/sec-edgar-filings`) Actor

Filings (10-K, 10-Q, 8-K, S-1, Form 4), XBRL financial facts and new Form D funding notices from the official SEC EDGAR APIs. Search by ticker, CIK or date range. No key. dryRun prices a run before you pay; charged only for rows delivered.

- **URL**: https://apify.com/lost.fany/sec-edgar-filings.md
- **Developed by:** [Natalia Ivanova](https://apify.com/lost.fany) (community)
- **Categories:** News, Lead generation, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.70 / 1,000 filing rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 API - Filings, XBRL Facts & Form D Funding

Pull **company filings, financial facts and new Form D funding notices from SEC EDGAR** — the official US securities database — into clean datasets. Three modes:

1. **Company filings** — the filing history of any public company by ticker, CIK or name: 10-K, 10-Q, 8-K, S-1, proxy statements, insider Form 4, 13F… with direct links to the documents.
2. **Company financial facts** — XBRL numbers as reported: revenue, net income, assets, cash, EPS, shares outstanding and any other us-gaap concept, latest or full history.
3. **New filings by form type** — everything filed on EDGAR in a date range, by form. Default: **Form D** notices of exempt offerings, i.e. startup and fund raises, enriched with the amount offered, amount sold, number of investors, industry and issuer location.

Everything comes from the SEC's official APIs and archives — no API key, no scraping of third-party sites — and respects the SEC's fair-access limits.

### What you can do with it

- **Startup funding radar** — new Form D filings every morning: who raised, how much, in which industry, in which state. Fresher than press releases.
- **Fundamentals for models and agents** — revenue, income and balance-sheet facts straight from the filings, with the fiscal period and the filing they come from.
- **Filing alerts** — new 8-K events (with item codes), 10-K/10-Q availability, S-1 IPO registrations, insider trades for a watch-list.
- **Research datasets** — filing histories of hundreds of companies in one run.
- **AI agents** — "what did Nvidia report as revenue last quarter?" through the Apify MCP server.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | select | `filings` | `filings`, `company-facts` or `new-filings`. |
| `companies` | array | — | Tickers, CIKs or names (filings and facts modes). |
| `forms` | array | `[]` | Form types filter. Empty = all; in `new-filings` default is `D`, `D/A`. |
| `since` / `until` | string | — | Dates (`2026-01-01`), `today`, `yesterday`, `30 days`. `new-filings` defaults to the last 3 days. |
| `maxPerCompany` | number | `100` | Rows per company. |
| `concepts` | array | 16 key metrics | XBRL concepts for facts mode (`Revenues`, `NetIncomeLoss`, `Assets`, …). |
| `latestOnly` | boolean | `true` | Facts: latest annual + latest quarterly value per concept, or full history. |
| `enrichFormD` | boolean | `true` | New filings: open each Form D for offering details. |
| `maxItems` | number | `5000` | Total cap. |
| `contactEmail` | string | — | Contact for the SEC User-Agent (optional). |

Examples:

```json
{ "mode": "filings", "companies": ["AAPL", "NVDA", "Tesla"], "forms": ["10-K", "10-Q", "8-K"], "since": "1 year" }
```

```json
{ "mode": "company-facts", "companies": ["MSFT"], "concepts": ["Revenues", "NetIncomeLoss", "EarningsPerShareDiluted"], "latestOnly": false }
```

```json
{ "mode": "new-filings", "forms": ["D", "D/A"], "since": "7 days" }
```

### Output

Filing row:

```json
{
  "type": "filing", "cik": "0000320193", "company": "Apple Inc.", "ticker": "AAPL",
  "form": "10-Q", "filingDate": "2026-08-01", "reportDate": "2026-06-27", "acceptedAt": "2026-08-01T16:02:11.000Z",
  "accessionNumber": "0000320193-26-000010", "items": [], "description": "10-Q", "primaryDocument": "aapl-20260627.htm",
  "sizeBytes": 6543210, "isXBRL": true, "isInlineXBRL": true,
  "indexUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000010/0000320193-26-000010-index.html",
  "documentUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000010/aapl-20260627.htm",
  "scrapedAt": "2026-09-10T17:00:00Z"
}
```

Form D row adds `"formD": { "issuerName", "issuerCity", "issuerState", "jurisdiction", "entityType", "industry", "isAmendment", "dateOfFirstSale", "securitiesOffered", "exemptions", "totalOfferingAmount", "totalAmountSold", "totalRemaining", "investorsCount", "hasNonAccreditedInvestors", "minimumInvestment" }`. Names of related persons are deliberately not extracted.

Fact row:

```json
{ "type": "fact", "cik": "0001045810", "company": "NVIDIA CORP", "taxonomy": "us-gaap", "concept": "Revenues", "label": "Revenues", "unit": "USD",
  "value": 44062000000, "start": "2026-04-27", "end": "2026-07-26", "fiscalYear": 2027, "fiscalPeriod": "Q2", "form": "10-Q", "filed": "2026-08-27", "frame": "CY2026Q2", "accessionNumber": "…" }
```

### Use cases

Ready-made examples you can run without configuring anything:

- [Form D funding notices from the last week](https://apify.com/lost.fany/sec-edgar-filings/examples/form-d-funding-notices) — ready-made task, run it as is
- [XBRL financial facts by ticker](https://apify.com/lost.fany/sec-edgar-filings/examples/xbrl-financial-facts) — ready-made task, run it as is

#### Form D funding notices feed

Every Form D and Form D/A filed in a date range — the public record of exempt offerings, i.e. who just raised money and how much.

```json
{ "mode": "new-filings", "forms": ["D", "D/A"], "since": "7 days" }
```

#### XBRL financial facts by ticker

Revenue, net income, assets and any other us-gaap concept straight from SEC's company facts API, with period, form and filing date on every value.

```json
{ "mode": "company-facts", "companies": ["AAPL"], "concepts": ["Revenues", "NetIncomeLoss"] }
```

#### 10-K and 10-Q filings history

The filing history of any company by ticker, CIK or name, filtered to the forms you care about.

```json
{ "mode": "filings", "companies": ["TSLA"], "forms": ["10-K", "10-Q"] }
```

### Pricing

Pay per event: a small fee per Actor start, a fee per filing row and a smaller fee per financial-fact row. Current prices are in the **Pricing** tab.

### Good to know

- The SEC allows at most 10 requests per second per client; the Actor stays below that, so very large jobs take minutes, not seconds.
- Daily indexes exist for business days only; `new-filings` skips weekends and holidays automatically.
- Company facts exist only for XBRL filers (operating companies). Funds and most foreign private issuers have none.
- Older filings (before ~2015 for frequent filers) are in additional submission files not read in this version; the latest 1,000 filings per company are covered.

### Use with AI agents (MCP)

Add the Actor to the [Apify MCP server](https://apify.com/apify/actors-mcp-server): "List Tesla's 8-K filings from the last month" → `{ "mode": "filings", "companies": ["TSLA"], "forms": ["8-K"], "since": "30 days" }`.

### Related Actors

- [Prediction Markets API](https://apify.com/lost.fany/polymarket-kalshi-prediction-markets)
- [Hacker News Search API](https://apify.com/lost.fany/hacker-news-search-scraper)
- [Tech Stack Detector](https://apify.com/lost.fany/website-tech-stack-detector)

### Disclaimer

Data is provided by the U.S. Securities and Exchange Commission and belongs to the public. This Actor is not affiliated with the SEC. Not investment advice.

### Cost control

Pay per event only works if you can see the bill before you pay it:

- Set `dryRun` to count every result and print what a full run would cost - nothing is charged, and only a few sample rows are stored.
- You are charged only for rows actually delivered to the dataset; a run that finds nothing costs nothing beyond the start event.
- `maxItems` is respected exactly, and the run stops before the platform's Max total charge for the run.
- Every run writes a `COST` record to the key-value store: chargeable events, charged events, the amount in USD and whether a limit was hit.

# Actor input Schema

## `mode` (type: `string`):

filings: filing history of given companies. company-facts: XBRL financial facts (revenue, net income, assets…) of given companies. new-filings: everything filed on EDGAR in a date range, by form type (default: Form D funding notices). Leave empty and the Actor picks for you: 'filings' when you pass companies, 'new-filings' when you do not.

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

Tickers (AAPL, NVDA), CIK numbers (320193) or company names. Used by 'filings' and 'company-facts'.

## `forms` (type: `array`):

Only these forms, e.g. 10-K, 10-Q, 8-K, S-1, 4, 13F-HR, D. Empty = all forms (in 'new-filings' mode the default is D and D/A).

## `since` (type: `string`):

Start date: 2026-01-01, 'today', 'yesterday' or '30 days'. In 'new-filings' mode defaults to 3 days ago.

## `until` (type: `string`):

End date (inclusive). Defaults to today.

## `maxPerCompany` (type: `integer`):

Filings or facts per company.

## `concepts` (type: `array`):

company-facts mode: us-gaap/dei concept names, e.g. Revenues, NetIncomeLoss, Assets, EarningsPerShareDiluted. Empty = a default set of 16 key metrics.

## `latestOnly` (type: `boolean`):

company-facts mode: keep only the latest annual and latest quarterly value per concept instead of the full history.

## `enrichFormD` (type: `boolean`):

new-filings mode: open each Form D and extract offering amount, amount sold, investors, industry, issuer location (one extra request per filing).

## `maxItems` (type: `integer`):

Stop after this many rows in total.

## `contactEmail` (type: `string`):

The SEC asks automated clients to identify themselves with a contact address. Optional; the Actor's default contact is used otherwise.

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

Optional. Applies only to the sec.gov archive (daily indexes, Form D documents); the data.sec.gov APIs are always fetched directly.

## `dryRun` (type: `boolean`):

Count every result and show what a full run would cost, without charging for it. Only a few sample rows are stored. Use it to check the price before you pay.

## Actor input object example

```json
{
  "mode": "filings",
  "companies": [
    "AAPL",
    "NVDA",
    "Tesla"
  ],
  "forms": [],
  "maxPerCompany": 100,
  "concepts": [],
  "latestOnly": true,
  "enrichFormD": true,
  "maxItems": 5000,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "dryRun": false
}
```

# Actor output Schema

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

Filings (with document links and Form D details) or XBRL facts, one row each.

## `summary` (type: `string`):

Counts and errors of the run.

# 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 = {
    "mode": "filings",
    "companies": [
        "AAPL",
        "NVDA",
        "Tesla"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lost.fany/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 = {
    "mode": "filings",
    "companies": [
        "AAPL",
        "NVDA",
        "Tesla",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("lost.fany/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 '{
  "mode": "filings",
  "companies": [
    "AAPL",
    "NVDA",
    "Tesla"
  ]
}' |
apify call lost.fany/sec-edgar-filings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lost.fany/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/Anldenef16plCCnu1/builds/UgCBdgfIgwqSfzbqX/openapi.json
