# SEC Filings Scraper (`datascrapers/sec-filings-intelligence`) Actor

Build a structured dataset of SEC EDGAR filings, company profiles, and XBRL financial facts from sec.gov. Query by ticker, CIK, or company name and receive normalized records with document links, optional filing text, and monitoring alerts via the Apify Dataset API or JSON, CSV, and Excel export.

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

## Pricing

from $1.02 / 1,000 company records

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 Filings Scraper** creates a structured dataset of SEC EDGAR filing records collected from sec.gov. Each dataset item represents one filing, company profile, financial fact, or resolution error, and can include company identity (name, CIK, tickers), filing metadata (form type, dates, accession number), document-manifest links, and — when enabled — primary document text and normalized XBRL financial metrics. Query the source using tickers, CIK numbers, company names, filing URLs, or accession numbers, cap the result with `maxItems`, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, XML, or another supported format.

### Dataset at a glance

| Property | Value |
|---|---|
| Source | sec.gov (SEC EDGAR) |
| Record unit | One filing, company profile, financial fact, or error record |
| Input methods | `companies` (ticker / CIK / name), `filingUrls`, `accessionNumbers`, `mode` |
| Main identifiers | `accessionNumber`, `id`, `cik` |
| Delivery | Apify Dataset and API |
| Export formats | JSON, CSV, Excel, HTML, XML |
| Update model | Fresh records per Actor run |
| Pricing | Pay-per-event: ~$1.00 / 1,000 records (FREE tier); tiered discounts |

### Coverage and available records

The Actor runs in one of five operating modes, selected with `mode`:

- **`companyFilings`** (default) — filings for a set of tickers, CIK numbers, or company names, filtered by `formTypes`, `startDate`, `endDate`, and amendment rules.
- **`latestFilings`** — the most recent market-wide filings from the EDGAR current-filings feed (optionally restricted to a single form type).
- **`filingLookup`** — resolve specific filings from `filingUrls` or `accessionNumbers` and return their normalized metadata.
- **`companyProfile`** — issuer metadata only (name, CIK, tickers, exchange, SIC, addresses, former names) plus filing statistics.
- **`financialFacts`** — normalized XBRL financial metrics per company.

Conditional enrichment is controlled by input flags:

- `includeCompanyProfile` (default `true`) attaches issuer metadata to each filing record.
- `includeDocuments` (default `true`) retrieves the filing document manifest (primary document, exhibits, XBRL and graphic files).
- `includePrimaryDocumentText` (default `false`) downloads and cleans the primary document into `text`, `markdown`, or `rawHtml`.
- `includeXbrlFacts` (default `false`) attaches normalized and/or raw XBRL financial facts.

`maxItems` caps the dataset total (1–10,000, default 100); `maxItemsPerCompany` applies an optional per-company cap. `latestOnly` returns only the latest matching filing per company (or per company and form). Company resolution failures (not-found or ambiguous names) are emitted as structured `error` records so the remaining companies still succeed.

### Data dictionary

Records vary by `recordType`. The schema's three views describe the principal shapes: the `overview` view (filing records), the `documents` view (document manifests), and the `financialFacts` view (normalized metrics). The table below lists the top-level fields of a standard filing record.

| Field | Type | Nullable | Description | Example |
|---|---|---:|---|---|
| `recordType` | string | No | Record kind: `filing`, `companyProfile`, `financialFact`, `financialFactsRaw`, or `error` | `"filing"` |
| `id` | string | No | Accession number used as the record identifier | `"0001140361-26-006577"` |
| `accessionNumber` | string | No | Dashed SEC accession number | `"0001140361-26-006577"` |
| `accessionNumberNormalized` | string | No | Accession number without dashes (best dedup key) | `"000114036126006577"` |
| `company` | object | No | Issuer identity and profile | see below |
| `filing` | object | No | Filing metadata | see below |
| `urls` | object | Yes | Filing document URLs | see below |
| `documents` | array | Yes | Document manifest; `null` unless `includeDocuments` is on | see below |
| `primaryDocument` | object | Yes | Primary document metadata and optional text | see below |
| `xbrl` | object | Yes | XBRL availability and normalized metrics | see below |
| `source` | object | No | Provider and retrieval provenance | see below |
| `warnings` | array | Yes | Non-fatal warnings for this record | `[]` |

#### `company` object

| Field | Type | Nullable | Description |
|---|---|---:|---|
| `name` | string | Yes | Legal company name |
| `cik` | string | Yes | Unpadded Central Index Key |
| `cikPadded` | string | Yes | Ten-digit zero-padded CIK |
| `entityType` | string | Yes | SEC entity type |
| `sic` | string | Yes | SIC code |
| `sicDescription` | string | Yes | SIC description |
| `stateOfIncorporation` | string | Yes | Two-letter state code |
| `fiscalYearEnd` | string | Yes | Fiscal year end (MMDD) |
| `tickers` | array | Yes | Ticker symbols |
| `exchanges` | array | Yes | Listing exchanges |
| `ein` | string | Yes | Employer identification number |
| `phone` | string | Yes | Business phone |
| `website` | string | Yes | Company website |
| `investorWebsite` | string | Yes | Investor-relations website |
| `category` | string | Yes | Filer category (e.g. Large accelerated filer) |
| `addresses` | object | Yes | `business` and `mailing` address objects |
| `formerNames` | array | Yes | Former company names with effective dates |

#### `filing` object

| Field | Type | Nullable | Description |
|---|---|---:|---|
| `formType` | string | Yes | SEC form type (e.g. `8-K`, `10-Q`, `10-K`) |
| `baseFormType` | string | Yes | Form type without the `/A` amendment suffix |
| `isAmendment` | boolean | Yes | Whether the filing is an amendment |
| `filingDate` | string | Yes | Filing date (`YYYY-MM-DD`) |
| `reportDate` | string | Yes | Period report date (`YYYY-MM-DD`) |
| `acceptedAt` | string | Yes | SEC acceptance timestamp (ISO 8601) |
| `act` | string | Yes | Securities Act code |
| `fileNumber` | string | Yes | SEC file number |
| `filmNumber` | string | Yes | SEC film number |
| `items` | array | Yes | Form item numbers (e.g. `["5.07", "9.01"]`) |
| `sizeBytes` | integer | Yes | Submission size in bytes |
| `isXBRL` | boolean | Yes | Whether XBRL data is attached |
| `isInlineXBRL` | boolean | Yes | Whether inline XBRL is used |
| `primaryDocument` | string | Yes | Primary document filename |
| `primaryDocDescription` | string | Yes | Primary document description |

#### `urls` object

| Field | Type | Nullable | Description |
|---|---|---:|---|
| `filingIndex` | string | Yes | Filing index page URL |
| `filingDirectory` | string | Yes | Filing directory URL |
| `primaryDocument` | string | Yes | Primary document URL |
| `completeSubmissionText` | string | Yes | Complete submission text URL |

#### `documents` array items

| Field | Type | Nullable | Description |
|---|---|---:|---|
| `sequence` | string | Yes | Document sequence number |
| `filename` | string | No | Document filename |
| `documentType` | string | Yes | Document type (e.g. `8-K`, `EX-99.1`, `GRAPHIC`) |
| `description` | string | Yes | Document description |
| `url` | string | No | Document archive URL |
| `isPrimary` | boolean | No | Whether this is the primary document |
| `isExhibit` | boolean | No | Whether this is an exhibit (`EX-*`) |
| `fileExtension` | string | Yes | Filename extension |
| `contentType` | string | Yes | Inferred MIME type |
| `sizeBytes` | integer | Yes | File size in bytes |

#### `primaryDocument` and `xbrl` objects

`primaryDocument` holds the primary document metadata plus optional content fields `text`, `markdown`, and `rawHtml` (each `null` unless `includePrimaryDocumentText` is enabled and `outputMode` is `extended`), along with `filename`, `documentType`, `description`, `contentType`, `contentLength`, `sha256`, and `textStorageKey`. `xbrl` holds `available` (boolean), `instanceDocumentUrl`, `facts` (raw summary, `null` unless `xbrlOutputMode` is `raw`/`both`), and `normalizedMetrics` (array, `null` unless `normalized`/`both`).

#### Compact mode and financial-fact fields

With `outputMode: "compact"`, filing records are flattened into webhook-friendly fields: `companyName`, `ticker`, `cik`, `formType`, `filingDate`, `acceptedAt`, `primaryDocumentUrl`, and `filingIndexUrl`, plus `recordType`, `id`, and `accessionNumber`.

Financial-fact records (`recordType: "financialFact"`) carry the metric fields shown in the schema's `financialFacts` view: `metric` (normalized name such as `revenue`, `netIncome`, `assets`), `label` (human label), `value` (number), `unit` (e.g. `USD`, `USD/shares`, `shares`), `period` (object with `startDate`, `endDate`, `fiscalYear`, `fiscalPeriod`), `filing` (object with `formType`, `filedDate`, `accessionNumber`), `taxonomy` (object with `namespace` and `tag`), and `mappingConfidence` (`high`, `medium`, or `low`), plus `frame`, `restated`, and `source`.

The best stable field for deduplication is `accessionNumberNormalized`; `accessionNumber` is an equivalent fallback.

### Example dataset record

The following representative record was produced by the `companyFilings` mode with `companies: ["AAPL"]`, `outputMode: "standard"`, and `includeDocuments: true` (document text and XBRL disabled, so their fields are `null`).

```json
{
  "recordType": "filing",
  "id": "0001140361-26-006577",
  "accessionNumber": "0001140361-26-006577",
  "accessionNumberNormalized": "000114036126006577",
  "company": {
    "name": "Apple Inc.",
    "cik": "320193",
    "cikPadded": "0000320193",
    "entityType": "operating",
    "sic": "3571",
    "sicDescription": "Electronic Computers",
    "stateOfIncorporation": "CA",
    "fiscalYearEnd": "0926",
    "tickers": ["AAPL"],
    "exchanges": ["Nasdaq"],
    "ein": "942404110",
    "phone": "(408) 996-1010",
    "category": "Large accelerated filer",
    "addresses": {
      "business": {
        "street1": "ONE APPLE PARK WAY",
        "city": "CUPERTINO",
        "stateOrCountry": "CA",
        "zipCode": "95014"
      },
      "mailing": {}
    },
    "formerNames": []
  },
  "filing": {
    "formType": "8-K",
    "baseFormType": "8-K",
    "isAmendment": false,
    "filingDate": "2026-02-24",
    "reportDate": "2026-02-24",
    "acceptedAt": "2026-02-24T21:55:58.000Z",
    "items": ["5.07", "9.01"],
    "sizeBytes": 415164,
    "isXBRL": true,
    "isInlineXBRL": null,
    "primaryDocument": "ef20060722_8k.htm"
  },
  "urls": {
    "filingIndex": "https://www.sec.gov/Archives/edgar/data/320193/000114036126006577/0001140361-26-006577-index.html",
    "filingDirectory": "https://www.sec.gov/Archives/edgar/data/320193/000114036126006577/",
    "primaryDocument": "https://www.sec.gov/Archives/edgar/data/320193/000114036126006577/ef20060722_8k.htm",
    "completeSubmissionText": "https://www.sec.gov/Archives/edgar/data/320193/000114036126006577/000114036126006577.txt"
  },
  "documents": [
    {
      "sequence": "1",
      "filename": "ef20060722_8k.htm",
      "documentType": "8-K",
      "isPrimary": true,
      "isExhibit": false,
      "fileExtension": "htm",
      "contentType": "text/html",
      "sizeBytes": 415164
    }
  ],
  "primaryDocument": {
    "filename": "ef20060722_8k.htm",
    "documentType": "8-K",
    "description": null,
    "contentType": null,
    "text": null,
    "markdown": null,
    "rawHtml": null,
    "textStorageKey": null,
    "contentLength": null,
    "sha256": null
  },
  "xbrl": {
    "available": true,
    "instanceDocumentUrl": null,
    "facts": null,
    "normalizedMetrics": null
  },
  "source": {
    "provider": "U.S. Securities and Exchange Commission",
    "system": "EDGAR",
    "retrievedAt": "2026-07-30T10:51:05.410389Z",
    "sourceEndpoint": "https://data.sec.gov/submissions/CIK0000320193.json"
  },
  "warnings": []
}
```

### Query and input reference

| Input | Type | Required | Default | Accepted values | Description |
|---|---|---:|---|---|---|
| `mode` | string | No | `companyFilings` | `companyFilings`, `latestFilings`, `filingLookup`, `companyProfile`, `financialFacts` | Operating mode. |
| `companies` | array | No | `[]` | ticker / CIK / company name | Companies to resolve (exact ticker/CIK match; names are conservative). |
| `formTypes` | array | No | `[]` | e.g. `10-K`, `10-Q`, `8-K` | Form types to include; empty or `ALL` = every form. |
| `startDate` | string | No | — | `YYYY-MM-DD` | Include filings on or after this filing date. |
| `endDate` | string | No | — | `YYYY-MM-DD` | Include filings on or before this filing date. |
| `maxItems` | integer | No | `100` | `1`–`10000` | Maximum dataset items to return. |
| `maxItemsPerCompany` | integer | No | — | `1`–`5000` | Optional per-company cap. |
| `includeAmendments` | boolean | No | `true` | `true` / `false` | When `false`, exclude `/A` amendments. |
| `latestOnly` | boolean | No | `false` | `true` / `false` | Return only the latest matching filing per grouping. |
| `latestGrouping` | string | No | `companyAndForm` | `company`, `companyAndForm` | How `latestOnly` groups results. |
| `includeCompanyProfile` | boolean | No | `true` | `true` / `false` | Attach issuer metadata to each filing. |
| `includeDocuments` | boolean | No | `true` | `true` / `false` | Retrieve the filing document manifest. |
| `includePrimaryDocumentText` | boolean | No | `false` | `true` / `false` | Download and clean the primary document text. |
| `documentTextFormat` | string | No | `text` | `text`, `markdown`, `rawHtml` | Format for downloaded document content. |
| `maxDocumentSizeMb` | integer | No | `20` | `1`–`100` | Skip primary documents larger than this. |
| `includeExhibits` | boolean | No | `false` | `true` / `false` | Include exhibit metadata in the manifest. |
| `exhibitContentMode` | string | No | `metadataOnly` | `metadataOnly`, `text`, `rawHtml` | How much exhibit data to return. |
| `includeXbrlFacts` | boolean | No | `false` | `true` / `false` | Retrieve structured XBRL financial facts. |
| `xbrlOutputMode` | string | No | `normalized` | `normalized`, `raw`, `both` | Which XBRL layer to output. |
| `financialMetrics` | array | No | `[]` | normalized metric names | Metrics to extract; empty = default set. |
| `includeLowConfidenceMetrics` | boolean | No | `false` | `true` / `false` | Include low-confidence XBRL mappings. |
| `filingUrls` | array | No | `[]` | sec.gov filing URLs | Filing index/directory/document URLs (`filingLookup`). |
| `accessionNumbers` | array | No | `[]` | accession numbers | Accessions with or without dashes (`filingLookup`). |
| `outputMode` | string | No | `standard` | `compact`, `standard`, `extended` | Output shaping. |
| `monitoring` | object | No | see schema | `enabled`, `monitorId`, `onlyNew`, … | Incremental runs — only new filings on repeat runs. |
| `delivery` | object | No | see schema | `webhookUrl`, `discordWebhookUrl`, … | Optional webhook/Discord/Slack notifications. |
| `secAccess` | object | **Yes** | see schema | `organizationName`, `contactEmail`, `requestsPerSecond` | SEC fair-access identity and rate limit. |
| `proxyConfiguration` | object | No | `{"useApifyProxy": false}` | proxy config | Optional proxy; direct access is preferred. |
| `debug` | boolean | No | `false` | `true` / `false` | Verbose debug logging. |

`secAccess.organizationName` and `secAccess.contactEmail` are required by SEC fair-access policy. A minimal request and an advanced request:

```json
{
  "mode": "companyFilings",
  "companies": ["AAPL"],
  "secAccess": { "organizationName": "Your Company", "contactEmail": "you@example.com" }
}
```

```json
{
  "mode": "companyFilings",
  "companies": ["AAPL", "MSFT", "NVDA"],
  "formTypes": ["8-K", "10-Q", "10-K"],
  "startDate": "2025-01-01",
  "endDate": "2026-12-31",
  "maxItems": 250,
  "includeDocuments": true,
  "includeXbrlFacts": true,
  "xbrlOutputMode": "normalized",
  "financialMetrics": ["revenue", "netIncome", "assets"],
  "outputMode": "standard",
  "secAccess": {
    "organizationName": "Your Company",
    "contactEmail": "you@example.com",
    "requestsPerSecond": 5
  }
}
```

### Retrieve the data through the API

1. Start the Actor with a JSON input.
2. Wait for the run to finish, or use the synchronous endpoint when appropriate.
3. Read items from the run's default dataset.
4. Paginate or export the dataset.

A Python example using the Apify client:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("datascrapers/sec-filings-intelligence").call(
    run_input={
        "mode": "companyFilings",
        "companies": ["AAPL", "MSFT"],
        "formTypes": ["8-K", "10-Q", "10-K"],
        "maxItems": 100,
        "secAccess": {"organizationName": "Your Company", "contactEmail": "you@example.com"},
    }
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["company"]["name"], item["filing"]["formType"], item["filing"]["filingDate"])
```

For other languages, use the generated API tab on the Actor page. Never place a real token in a URL or example.

### Data quality and record handling

- **Record types** — the dataset mixes `filing`, `companyProfile`, `financialFact`, `financialFactsRaw`, and `error` records; each carries a `recordType` discriminator.
- **Conditional fields** — `documents` is `null` unless `includeDocuments` is on; `primaryDocument.text`/`markdown`/`rawHtml` and `xbrl.facts`/`normalizedMetrics` are `null` unless the corresponding flags and `outputMode` request them.
- **Compact mode** — with `outputMode: "compact"`, `company`, `filing`, and `urls` are flattened into scalar fields (`companyName`, `ticker`, `cik`, `formType`, `filingDate`, `acceptedAt`, `primaryDocumentUrl`, `filingIndexUrl`).
- **Error handling** — company-resolution and lookup failures become `error` records (`errorType`, `message`, `input`) rather than aborting the run, so other companies still succeed.
- **Deduplication** — within a run, filings are deduplicated by accession number. Across runs, deduplicate on `accessionNumberNormalized` or `accessionNumber`.
- **Normalization** — tickers/CIKs are normalized, accession numbers are standardized with and without dashes, and XBRL facts are mapped to common metrics with a `mappingConfidence` label. Source values are preserved in their original form alongside.
- **Provenance** — each record includes a `source` object (provider, system, retrieval timestamp, source endpoint).

### Export and pipeline examples

| Destination | Recommended method | Typical use |
|---|---|---|
| PostgreSQL / Supabase | Dataset API or webhook consumer | Filing history and fundamental data warehouse |
| Google Sheets | Apify integration | Filing watchlists for research teams |
| S3 / cloud storage | Scheduled export or integration | Daily EDGAR archives |
| BI / analytics tools | Scheduled run + CSV/JSON export | Compliance and disclosure monitoring |

### Pricing and cost examples

Billing is pay-per-event. Two events apply:

| Event | What counts | Rate |
|---|---|---|
| `apify-actor-start` | One-time per run | $0.00005 |
| `dataset-item` | Each record written to the dataset | $0.001 (FREE tier) |

The `dataset-item` event is tiered per record: Bronze $0.0009, Silver $0.00087, and Gold/Platinum/Diamond $0.00085. At the standard tier this is approximately $1.00 per 1,000 records.

| Records | Estimated base cost |
|---:|---:|
| 1,000 | $1.00 |
| 10,000 | $10.00 |
| 100,000 | $100.00 |

Estimates assume the FREE/standard tier rate of $0.001 per record plus the one-time $0.00005 start event. Actual cost depends on the verified pay-per-event model, your Apify plan tier, and the selected enrichment options.

### Limitations and responsible data use

- The Actor collects publicly accessible SEC EDGAR data only.
- Filing data reflects SEC records at retrieval time and can change as amendments are filed or corrections posted.
- Some fields are conditional or empty depending on the issuer, form type, and enabled options (see Data quality).
- No historical snapshots are guaranteed unless you store the exported datasets yourself.
- The SEC requires a fair-access identity (`organizationName` and `contactEmail`); you are responsible for providing accurate information and for complying with applicable privacy, contractual, and legal requirements when using the data.

### Dataset questions

#### What does one dataset item represent?

One filing, company profile, financial fact, or resolution error record, identified by the `recordType` field. The default `companyFilings` mode yields one record per filing.

#### Which field should I use as a unique identifier?

Use `accessionNumberNormalized` (accession number without dashes) or `accessionNumber`. Both are stable per SEC submission.

#### What record types can appear in the dataset?

`filing` (the default), `companyProfile`, `financialFact` and `financialFactsRaw` (when XBRL is enabled), and `error` (for company-not-found or ambiguous-name failures).

#### Are fields nullable or conditional?

Yes. `documents`, `primaryDocument` text fields, and `xbrl` metrics are `null` unless the corresponding input flags and `outputMode` request them; many company and filing sub-fields are `null` when SEC does not report them.

#### Can I retrieve the records as CSV or JSON?

Yes. Records are available as JSON through the Apify Dataset API and can be exported as CSV, Excel, HTML, or XML from the Console or integrations.

#### Does the Actor return historical data?

It returns the filings available in SEC EDGAR at run time, filtered by `startDate`/`endDate`. Older submissions are fetched when a start date or a larger `maxItems` requires them; no local historical cache is kept.

#### What counts as a billable result?

Each record written to the dataset triggers the `dataset-item` event. `error` records are written without a charge; the one-time `apify-actor-start` event applies per run.

### Related datasets from Data Scrapers

- **LinkedIn Company Scraper** — company profile and identity data for cross-referencing corporate research.
- **LinkedIn Job Scraper** — job listings that complement issuer-level hiring and headcount analysis.
- **Glassdoor Jobs Scraper** — job and employer data for labor-market context around a filer.
- **FindLaw Scraper** — law firm and attorney records for legal and compliance-adjacent research.
- **Trustpilot Scraper** — company reputation and review data for sentiment alongside financial disclosures.
- **Yelp Scraper** — business listing data for entity-level market research.

### Data Scrapers support

Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample sec.gov URL, the required fields, the expected record volume, and your preferred delivery format.

# Actor input Schema

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

Operating mode. companyFilings: filings for selected companies. latestFilings: recent market-wide filings. filingLookup: resolve URLs or accession numbers. companyProfile: issuer metadata. financialFacts: XBRL company facts.

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

Tickers (AAPL), CIK numbers (320193 or 0000320193), or company names. Ticker and CIK matching is exact; company-name matching is conservative and may return an ambiguity error.

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

SEC form types to include (e.g. 10-K, 10-Q, 8-K). Leave empty or use ALL for every form. Matching is case-insensitive. Amendments use the /A suffix (10-K/A).

## `startDate` (type: `string`):

Include filings on or after this date (YYYY-MM-DD). Uses filing date.

## `endDate` (type: `string`):

Include filings on or before this date (YYYY-MM-DD). Uses filing date.

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

Maximum dataset items to return. Stop once this limit is reached.

## `maxItemsPerCompany` (type: `integer`):

Optional per-company cap before the global maxItems limit. Leave empty for no per-company limit.

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

When false, exclude amended forms that end with /A (e.g. 10-K/A, 8-K/A).

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

When true, return only the latest matching filing per company (or per company+form — see Latest Grouping).

## `latestGrouping` (type: `string`):

How latestOnly groups results: one filing per company, or one filing per company and form type.

## `includeCompanyProfile` (type: `boolean`):

Attach normalized issuer metadata to each filing result.

## `includeDocuments` (type: `boolean`):

Retrieve the filing document list (primary doc, exhibits, XBRL files) from the filing index.

## `includePrimaryDocumentText` (type: `boolean`):

Download and clean the primary filing document. More expensive — only enable when you need the text body.

## `documentTextFormat` (type: `string`):

Format for downloaded primary document content.

## `maxDocumentSizeMb` (type: `integer`):

Skip downloading primary document content larger than this size.

## `includeExhibits` (type: `boolean`):

Include exhibit metadata (and optionally content) in the document manifest.

## `exhibitContentMode` (type: `string`):

How much exhibit data to return when Include Exhibits is enabled.

## `includeXbrlFacts` (type: `boolean`):

Retrieve structured financial facts from the SEC company facts API.

## `xbrlOutputMode` (type: `string`):

normalized: common metrics with provenance. raw: SEC taxonomy facts. both: include both layers.

## `financialMetrics` (type: `array`):

Normalized metrics to extract when XBRL is enabled (revenue, netIncome, assets, etc.). Empty = default metric set.

## `includeLowConfidenceMetrics` (type: `boolean`):

Include XBRL mappings marked low confidence in normalized output.

## `filingUrls` (type: `array`):

SEC filing index, directory, or primary document URLs (filingLookup mode).

## `accessionNumbers` (type: `array`):

Accession numbers with or without dashes (filingLookup mode). Pair with a company CIK/ticker in companies when possible.

## `outputMode` (type: `string`):

compact: flat webhook-friendly fields. standard: normalized filing object without heavy payloads. extended: include requested document text and full XBRL.

## `monitoring` (type: `object`):

Incremental runs for schedules — return only new filings since the last successful run.

## `delivery` (type: `object`):

Optional outbound notifications for discovered filings. Webhook URLs are never written to the dataset.

## `secAccess` (type: `object`):

Required by SEC fair-access policy. Your organization name and contact email are sent in the User-Agent header.

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

Optional proxy. Prefer direct access with a valid SEC User-Agent unless your network blocks sec.gov.

## `debug` (type: `boolean`):

Enable verbose debug logging (local development).

## Actor input object example

```json
{
  "mode": "companyFilings",
  "companies": [
    "AAPL",
    "MSFT",
    "NVDA"
  ],
  "formTypes": [],
  "maxItems": 100,
  "includeAmendments": true,
  "latestOnly": false,
  "latestGrouping": "companyAndForm",
  "includeCompanyProfile": true,
  "includeDocuments": true,
  "includePrimaryDocumentText": false,
  "documentTextFormat": "text",
  "maxDocumentSizeMb": 20,
  "includeExhibits": false,
  "exhibitContentMode": "metadataOnly",
  "includeXbrlFacts": false,
  "xbrlOutputMode": "normalized",
  "financialMetrics": [],
  "includeLowConfidenceMetrics": false,
  "filingUrls": [],
  "accessionNumbers": [],
  "outputMode": "standard",
  "monitoring": {
    "enabled": false,
    "monitorId": "default",
    "onlyNew": true,
    "firstRunBehavior": "returnCurrentMatches",
    "stateRetentionDays": 730,
    "updateStateAfterSuccessfulDelivery": false
  },
  "delivery": {
    "enabled": true,
    "sendEmptyNotification": false,
    "batchDelivery": true,
    "customHeaders": {}
  },
  "secAccess": {
    "organizationName": "Apify SEC Filings Scraper",
    "contactEmail": "admin@example.com",
    "requestsPerSecond": 5
  },
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "debug": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

Normalized filing, profile, financial-fact, and error records

## `runStats` (type: `string`):

Aggregate run statistics including record counts and SEC request telemetry

## `outputSummary` (type: `string`):

Full OUTPUT_SUMMARY.json with delivery and SEC request details

# 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": "companyFilings",
    "companies": [
        "AAPL",
        "MSFT",
        "NVDA"
    ],
    "formTypes": [],
    "financialMetrics": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("datascrapers/sec-filings-intelligence").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": "companyFilings",
    "companies": [
        "AAPL",
        "MSFT",
        "NVDA",
    ],
    "formTypes": [],
    "financialMetrics": [],
}

# Run the Actor and wait for it to finish
run = client.actor("datascrapers/sec-filings-intelligence").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": "companyFilings",
  "companies": [
    "AAPL",
    "MSFT",
    "NVDA"
  ],
  "formTypes": [],
  "financialMetrics": []
}' |
apify call datascrapers/sec-filings-intelligence --silent --output-dataset

```

## MCP server setup

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

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/SG0R6Yo3sVfxZkC3R/builds/qJgdiLQFVBOVDVWXU/openapi.json
