# SEC EDGAR Filings & Financials — US Company Data (`dalbian/sec-edgar-company-data`) Actor

Look up any US-listed company by ticker, name or CIK and get its identity, recent SEC filings with direct document links, and its reported financials straight from XBRL. Public-domain regulator data, no key needed.

- **URL**: https://apify.com/dalbian/sec-edgar-company-data.md
- **Developed by:** [Benjamin Jerez](https://apify.com/dalbian) (community)
- **Categories:** Business, Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$20.00 / 1,000 company resolveds

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 & Financials — US Company Data

Look up any US-listed company by **ticker, name or CIK** and get three things in one row: who the company is, what it has filed with the SEC, and what it actually reported — revenue, net income, assets, equity, EPS — taken from its own XBRL filings.

Straight from the regulator. No key, no scraping, no third-party estimate.

### What comes back

| Field | Example (Apple) |
| --- | --- |
| `companyName`, `ticker`, `cik` | Apple Inc. · AAPL · 0000320193 |
| `exchange`, `industry`, `sicCode` | Nasdaq · Electronic Computers · 3571 |
| `stateOfIncorporation`, `fiscalYearEnd`, `address` | CA · 0927 · One Apple Park Way, Cupertino |
| `latest_revenue` | 416,161,000,000 (period ending 2025-09-27) |
| `latest_netIncome`, `latest_totalAssets`, `latest_epsDiluted` | 112,010,000,000 · 359,241,000,000 · 7.46 |
| `filings[]` | Form, filing date, period, and a direct link to each document |
| `formerNames` | Previous registered names, for tracking a rebrand |

### The part most tools get wrong

Companies change the accounting tag they report under. Apple reported revenue as `Revenues` until 2018, then switched to `RevenueFromContractWithCustomerExcludingAssessedTax`. A tool that queries one tag and stops will happily hand you a 2018 figure labelled "latest".

This Actor queries **every tag a figure is known to be reported under** and keeps whichever carries the most recent period, then tells you which tag it used in `xbrlTag`. Ask for Apple and you get 2025, not 2018.

The same care goes into the ticker. EDGAR lists every security a company has registered, so Ford appears as both `F` and `F-PD`, its preferred class. You get `F`.

### Filing types worth knowing

Leave `formTypes` empty for everything, or narrow it:

| Form | What it is |
| --- | --- |
| **10-K** | Annual report — the full picture |
| **10-Q** | Quarterly report |
| **8-K** | Material event: results, an acquisition, an executive leaving |
| **DEF 14A** | Proxy statement — executive pay, board, shareholder votes |
| **S-1** | IPO registration |
| **4** | Insider buying and selling |
| **13F-HR** | What an institutional manager holds |
| **SC 13D / SC 13G** | Someone crossed 5% ownership |

### Who uses this

Analysts and funds building screens without paying for a terminal. Fintech and research products that need an auditable source. Compliance and KYB teams verifying that a counterparty is a real registrant. Journalists and academics who need figures they can cite. Anyone comparing several hundred companies where doing it by hand is not an option.

### Rate limits and etiquette

The SEC asks callers to identify themselves and to stay under ten requests per second. This Actor does both, serialising requests with a deliberate pause. Financial figures cost several extra requests per company, so turn `includeFinancials` off when you only want the filing list — a plain filings sweep is much faster.

### Source and licence

**EDGAR**, the SEC's electronic filing system, via its public JSON APIs: the company-tickers index, the submissions feed and the XBRL `companyconcept` endpoint. Works of the US federal government are in the **public domain** — you can store, republish and sell products built on this data.

### Frequently asked

**Why is one figure missing for a company?**
Because it does not report it under any tag this Actor knows, which happens with unusual structures and with foreign private issuers filing 20-F. The figures that were found are still correct.

**How current is it?**
As current as the company's last filing. `financialsPeriodEnd` tells you the period, and `filedOn` tells you when it was submitted.

**Does it cover foreign companies?**
Those with US-listed securities, yes — they file 20-F or 40-F rather than 10-K. Purely foreign listings are not in EDGAR.

**Can I get the filing text itself?**
`documentUrl` links straight to the document on sec.gov. The files stay where the SEC publishes them.

# Actor input Schema

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

Tickers, company names or CIK numbers, one per line. A ticker is the most reliable — AAPL, MSFT, NVDA. A name is matched against EDGAR's registered name, so use the legal name rather than the brand. A CIK can be written 320193 or CIK0000320193.

## `includeFilings` (type: `boolean`):

Return the company's recent SEC filings with their form type, date, period covered and a direct link to the document.

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

Keep only these form types, one per line. Leave empty for all. The ones most people want: 10-K for the annual report, 10-Q for quarterly, 8-K for material events, DEF 14A for the proxy statement, S-1 for an IPO registration, 4 for insider transactions, 13F-HR for institutional holdings.

## `maxFilings` (type: `integer`):

How many recent filings to return per company. EDGAR keeps the most recent thousand in this feed; older ones live in the full archive.

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

Return the latest reported revenue, net income, total assets and liabilities, equity, cash, diluted EPS and shares outstanding, taken from the company's own XBRL filings rather than a third-party estimate. Each figure carries the period it covers and the form it came from. This costs several extra requests per company, so turn it off for a pure filings sweep.

## `maxCompanies` (type: `integer`):

Hard stop on how many companies this run processes.

## Actor input object example

```json
{
  "companies": [
    "AAPL",
    "TSLA"
  ],
  "includeFilings": true,
  "maxFilings": 20,
  "includeFinancials": true,
  "maxCompanies": 200
}
```

# Actor output Schema

# 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"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("dalbian/sec-edgar-company-data").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",
    ] }

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

```

## MCP server setup

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

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/We32i2gbmADUbRnyU/builds/RUkgOQOgtlvbsr15L/openapi.json
