# SEC Company Financials MCP (`apex-nexus/sec-company-financials-mcp`) Actor

SEC Company Financials MCP — SEC company financials as callable agent tools: ticker→CIK resolution, concept time-series (Revenue, Assets…) and XBRL companyfacts as flat rows, provenance from public data.sec.gov. Stateless, no credentials, no LLMs. Free when empty.

- **URL**: https://apify.com/apex-nexus/sec-company-financials-mcp.md
- **Developed by:** [Valunex](https://apify.com/apex-nexus) (community)
- **Categories:** Business
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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 Company Financials MCP — SEC company financials as callable agent tools

Flat SEC company financials (XBRL companyfacts) from public SEC APIs, returned as
callable agent-tool rows: the user brings a CIK (or a ticker) plus an XBRL concept
(e.g. `Revenues`, `Assets`), a unit (`USD`, `shares`) and an optional period label
(e.g. `CY2025`); the Actor returns one flat dataset row per matching fact — period,
end date, value, form, accession and a public SEC Archives source URL — ready to
paste into an AI assistant or a spreadsheet.

The live public Actor supports two callable tools, both verified on live runs:

- **`resolve_ticker`** — resolve a ticker (e.g. `AAPL`) to its SEC CIK and company
  name.
- **`concept_series`** — pull a company's XBRL concept series as flat rows with
  period, end date, value, form, accession and source URL.

Public U.S. government data only, via
`https://data.sec.gov/api/xbrl/companyfacts/` (no credentials, no proxies, no
anti-bot scraping, no LLMs, no commercial inference). Stateless: each run is
independent, nothing is remembered between runs. Free when nothing to return.

**Actor:** `apex-nexus~sec-company-financials-mcp` (Actor id `VB5s2he8duRa4JDjb`,
account `apex-nexus`, owner userId `cgh1CqgRIRsjx7PlQ`), public Store listing,
isPublic = true, notice = NONE, categories \[BUSINESS], pricing **FREE**.
**Store page:** https://apify.com/apex-nexus/sec-company-financials-mcp
**Actor source:** `actor/` (Apify SDK Python project, `main.py`, schemas in
`.actor/`, tests, Dockerfile)
**Default input:** `{"tool":"concept_series","cik":"320193","concept":"Revenues","unit":"USD","period":"CY2025"}`
— the listing's stored `exampleRunInput` — returns Apple Inc.'s revenue series.
The Actor also accepts `{"tool":"resolve_ticker","ticker":"AAPL"}` to resolve a
ticker to its CIK and company name.

### What it is for

- **Fundamental-analysis desk:** pull a company's revenue (or asset) series from
  SEC companyfacts without parsing XBRL by hand.
- **AI-assistant builder:** citation-ready financial rows with a public SEC
  Archives URL per fact, ready to paste into an assistant or spreadsheet.
- **Compliance/research:** verify a reported figure against the filing it came
  from (accession + `sourceUrl` on every row).

Public SEC data only — data.sec.gov companyfacts. No credentials, no proxies, no
LLMs, no commercial inference inside the product.

### 30-second quickstart

Open https://apify.com/apex-nexus/sec-company-financials-mcp on the Apify Store,
paste the input below into the input editor and run
(or `POST /v2/actors/VB5s2he8duRa4JDjb/runs` with the same body):

```json
{
  "tool": "resolve_ticker",
  "ticker": "AAPL"
}
```

The run returns the SEC CIK and company name for the ticker — CIK `320193`,
company "Apple Inc." — in seconds. No API key, signup or credentials needed.

### Example input → output pairs (live runs)

All three pairs below were run on the live public Actor against data.sec.gov.
Output shown is the first dataset item; `runId` and `datasetId` cite the evidence
run on Apify.

#### Pair 1 — resolve_ticker: AAPL → CIK 320193 "Apple Inc." (verified live run `r7Ckxex5YQZ4H8OEa`)

Input (verified live run `r7Ckxex5YQZ4H8OEa`, Actor `VB5s2he8duRa4JDjb`,
started `2026-11-06T19:59:15Z` → finished `19:59:18Z` (2.713 s), build `0.1.1`,
dataset `I4EkPclUcmW6Cbfjj`, exit code 0):

```json
{
  "tool": "resolve_ticker",
  "ticker": "AAPL"
}
```

Output (1 dataset item; run `r7Ckxex5YQZ4H8OEa`, SUCCEEDED):

```json
{
  "tool": "resolve_ticker",
  "cik": "320193",
  "cik10": "0000320193",
  "concept": null,
  "period": null,
  "endDate": null,
  "startDate": null,
  "value": null,
  "unit": null,
  "form": null,
  "filed": null,
  "accession": null,
  "sourceUrl": "https://www.sec.gov/files/company_tickers.json",
  "name": "Apple Inc.",
  "ticker": "AAPL",
  "retrievedAt": "2026-11-06T19:59:17.967882+00:00"
}
```

#### Pair 2 — concept_series: Apple Inc. Revenues, USD, CY2025 (verified live run `67PhgFdnIEKZNX7FR`)

Input (verified live run `67PhgFdnIEKZNX7FR`, build `0.1.7`, dataset
`tqct3Qv4pugFmRYfK`, 3.631 s, SUCCEEDED):

```json
{
  "tool": "concept_series",
  "cik": "320193",
  "concept": "Revenues",
  "unit": "USD",
  "period": "CY2025"
}
```

Output (first dataset item; run `67PhgFdnIEKZNX7FR`, SUCCEEDED):

```json
{
  "tool": "concept_series",
  "cik": "320193",
  "cik10": "0000320193",
  "concept": "Revenues",
  "period": "CY2018",
  "endDate": "2016-09-24",
  "startDate": "2015-09-27",
  "value": 215639000000,
  "unit": "USD",
  "form": "10-K",
  "fy": 2018,
  "fp": "FY",
  "accession": "0000320193-18-000145",
  "filed": "2018-11-05",
  "sourceUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019318000145/",
  "retrievedAt": "2026-11-07T02:24:34.175163+00:00"
}
```

#### Pair 3 — concept_series: Apple Inc. Assets, USD, CY2025 (verified live run `xMEEkGe7dWT0ITCsO`)

Input (verified live run `xMEEkGe7dWT0ITCsO`, build `0.1.7`, dataset
`nIETHKSt863zMWKwq`, 3.607 s, SUCCEEDED):

```json
{
  "tool": "concept_series",
  "cik": "320193",
  "concept": "Assets",
  "unit": "USD",
  "period": "CY2025"
}
```

Output (first dataset item; run `xMEEkGe7dWT0ITCsO`, SUCCEEDED):

```json
{
  "tool": "concept_series",
  "cik": "320193",
  "cik10": "0000320193",
  "concept": "Assets",
  "period": "CY2025",
  "endDate": "2024-09-28",
  "startDate": null,
  "value": 364980000000,
  "unit": "USD",
  "form": "10-K",
  "fy": 2025,
  "fp": "FY",
  "accession": "0000320193-25-000079",
  "filed": "2025-10-31",
  "sourceUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/",
  "retrievedAt": "2026-11-07T02:24:40.638720+00:00"
}
```

### Input schema (`.actor/input_schema.json`)

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `tool` | string | `"concept_series"` | Callable tool: `concept_series` (financial facts); the live Actor also accepts `resolve_ticker` (ticker → CIK/company name). |
| `cik` | string | `"320193"` | SEC CIK with or without leading zeros (default 320193 = Apple Inc.). |
| `concept` | string | `"Revenues"` | XBRL concept name, e.g. `Revenues`, `Assets`, `Liabilities`. |
| `unit` | string | `"USD"` | Value unit, e.g. `USD`, `shares`. |
| `period` | string | `"CY2025"` | Period label, e.g. `CY2025` or `CY2025Q2`; omit for all periods. |

Example input (default run): `{"tool":"concept_series","cik":"320193","concept":"Revenues","unit":"USD","period":"CY2025"}`.

### Output

One dataset item per matching fact (concept_series) or one item (resolve_ticker).
Fields: `tool`, `cik`, `cik10`, `concept`, `period`, `endDate`, `startDate`,
`value`, `unit`, `form`, `fy`, `fp`, `accession`, `filed`, `sourceUrl` (public SEC
Archives URL of the filing), `name`/`ticker` (resolve_ticker only), `retrievedAt`.

### Search terms (Store discovery)

Users find this Actor on the Apify Store with terms such as:

- SEC company financials
- SEC companyfacts
- XBRL financials lookup
- SEC revenues assets lookup
- company financials agent tool
- sec-company-financials-mcp
- SEC financial statement rows
- fundamental data SEC API

### Pricing & positioning

FREE public Store listing (no per-run or per-row charge to buyers). Listed in the
BUSINESS category with SEO title/description staged on the listing. Competing SEC
financials Store actors are mostly pay-per-event scrapers; this Actor is a free,
stateless, agent-friendly lookup of public SEC companyfacts.

**Pricing decision:** keep current effective pricing — no price change without an
owner/KYC step (POLICY #5/#6). `isPublic` left unchanged (true — not flipped
without director GO). No publication flips in this task (Apify cap: 5 publications
per rolling 24h; window ≈ 2026-11-07 12:50 CET).

### Quality gate (POLICY #6, verified live)

Default input returns >0 dataset items in well under 5 minutes: run
`r7Ckxex5YQZ4H8OEa` (resolve_ticker AAPL, build `0.1.1`), status SUCCEEDED, 1
dataset item (CIK `320193`, "Apple Inc."), server runtime 2.713 s. Also verified:
concept_series Apple Revenues run `67PhgFdnIEKZNX7FR` (3.631 s) and concept_series
Apple Assets run `xMEEkGe7dWT0ITCsO` (3.607 s). All well under the 1-minute bound.
`isPublic`, categories and pricing were not modified — no regressions.

### Local checks

```bash
## From product root
python3 -m pytest tests/   # 4 tests, deterministic & network-free
```

### Claims statement

All claims in this README are limited to what the product verifiably does: it
reads public SEC companyfacts through official SEC endpoints and returns
citation-ready financial rows. This README contains no revenue, user, or adoption
claims, because none are verified (see knowledge/portfolio.md: 0 buyer runs, $0
verified revenue, owner runs only on every Actor).

# Changelog

This Actor's version history is a separate document: https://apify.com/apex-nexus/sec-company-financials-mcp/changelog.md

# Actor input Schema

## `tool` (type: `string`):

Only concept_series is supported.

## `cik` (type: `string`):

SEC CIK of the company, with or without leading zeros. Default 320193 (Apple Inc.).

## `concept` (type: `string`):

XBRL concept name, e.g. Revenues, Assets, Liabilities, NetIncomeLoss, StockholdersEquity.

## `unit` (type: `string`):

Unit of the concept values, e.g. USD, shares, USD/share. Default USD.

## `period` (type: `string`):

Optional period label derived from the fact's fiscal year/period, e.g. CY2025 or CY2025Q2. Omit or leave empty to return all periods for the concept.

## Actor input object example

```json
{
  "tool": "concept_series",
  "cik": "320193",
  "concept": "Revenues",
  "unit": "USD",
  "period": "CY2025"
}
```

# Actor output Schema

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

Flat SEC company financials rows — one item per matching companyfacts fact.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("apex-nexus/sec-company-financials-mcp").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("apex-nexus/sec-company-financials-mcp").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 '{}' |
apify call apex-nexus/sec-company-financials-mcp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,apex-nexus/sec-company-financials-mcp"
        }
    }
}
```

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/VB5s2he8duRa4JDjb/builds/aaphjxGABzaiJoH5k/openapi.json
