# US Company Financials API - Revenue, EPS & Cash Flow (SEC XBRL) (`smartmoney-data/us-company-financials`) Actor

Quarterly and annual financials for any US-listed company from official SEC XBRL filings: revenue, gross profit, operating and net income, EPS, cash flow, free cash flow, buybacks, debt, margins and year-over-year growth. Clean rows, no API key.

- **URL**: https://apify.com/smartmoney-data/us-company-financials.md
- **Developed by:** [SmartMoney Data](https://apify.com/smartmoney-data) (community)
- **Categories:** Business, AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 financial periods

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

## US Company Financials API - Revenue, EPS & Cash Flow (SEC XBRL)

**Clean quarterly and annual financials for any US stock, straight from the numbers companies file with the SEC.**

| | |
|---|---|
| **Data** | Official SEC XBRL financial data (10-K and 10-Q filings) |
| **Price** | $2 per 1,000 company periods, no subscription. Apify's free plan credit covers a first test. |
| **Freshness** | Updated as soon as a company files its 10-Q or 10-K |
| **Try it** | The input is pre-filled with a working example: just click **Start**. |

**Example output**

| Ticker | Period | Revenue | Rev. YoY | Op. margin | EPS | Free cash flow |
|---|---|---|---|---|---|---|
| XYZ | Q2 2026 | $12.4B | +18.2% | 31.5% | $1.42 | $3.1B |
| XYZ | Q1 2026 | $11.9B | +15.0% | 30.2% | $1.31 | $2.7B |

*Illustrative rows; real runs return the full fields listed under Output.*

Revenue, margins, earnings per share, free cash flow, buybacks, dividends, cash and debt for every quarter and year, with year-over-year growth already calculated. The data comes from SEC XBRL filings, the same numbers in the company's 10-Q and 10-K, so there is no scraping of finance websites and no API key to buy.

### What you can do with it

- 📈 **Growth screens:** revenue and EPS growth year over year, every quarter.
- 💵 **Quality checks:** margins, free cash flow and debt before you buy.
- 🔁 **Shareholder returns:** buybacks and dividends paid each quarter, the company as its own smart-money buyer.
- 🤖 **Models and AI agents:** clean, typed numbers ready for pandas, Sheets or an LLM.

### Why it is cleaner than raw XBRL

- **Real quarters.** Companies report cash flows year-to-date in 10-Qs and only show Q4 inside the annual report. This Actor turns those into true single quarters, and lists which fields were derived in `derivedFromYearToDate`.
- **Restatements applied.** When a later filing revises a number, the newest value is used.
- **Concept mapping.** Revenue alone has several XBRL tags across years and companies; each metric tries the common ones and `SUMMARY.conceptsUsed` shows which were used.

### How to use it

#### Last 8 quarters

```json
{ "tickers": ["AAPL", "MSFT", "NVDA"] }
```

#### Five years of annual results

```json
{ "tickers": ["COST", "WMT"], "periodType": "annual", "periods": 5 }
```

### Output

One row per company per period, newest first:

```json
{
  "ticker": "XYZ",
  "companyName": "XYZ CORP",
  "periodType": "quarter",
  "fiscalYear": 2026,
  "fiscalPeriod": "Q2",
  "periodStart": "2026-04-01",
  "periodEnd": "2026-06-30",
  "revenue": 12400000000,
  "grossProfit": 5900000000,
  "operatingIncome": 3900000000,
  "netIncome": 3200000000,
  "epsDiluted": 1.42,
  "operatingCashFlow": 4200000000,
  "capitalExpenditure": 1100000000,
  "freeCashFlow": 3100000000,
  "shareBuybacks": 2500000000,
  "dividendsPaid": 600000000,
  "cash": 18000000000,
  "longTermDebt": 9000000000,
  "grossMargin": 47.58,
  "operatingMargin": 31.45,
  "netMargin": 25.81,
  "revenueGrowthYoY": 18.2,
  "epsGrowthYoY": 21.4,
  "derivedFromYearToDate": ["operatingCashFlow", "capitalExpenditure"]
}
```

Values are in the filing currency (USD for US companies). Margins and growth are percentages. Fields a company does not report are `null`.

### Use it from code or an AI agent

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("smartmoney-data/us-company-financials").call(run_input={"tickers": ["AAPL", "MSFT", "NVDA"]})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

**AI agents (Claude, ChatGPT, Cursor and other MCP clients):** connect the Apify MCP server with this Actor preloaded:

```text
https://mcp.apify.com/?tools=smartmoney-data/us-company-financials
```

Add this URL as a remote MCP server or custom connector in your AI client, sign in with Apify (OAuth), then just ask, for example:

> Compare revenue growth and operating margins for AAPL, MSFT and NVDA over the last 8 quarters.

> Part of the **SmartMoney Data** suite: [Insider Trades](https://apify.com/smartmoney-data/sec-insider-trades-tracker) · [Institutional Ownership](https://apify.com/smartmoney-data/institutional-ownership-by-ticker) · [Hedge Fund 13F](https://apify.com/smartmoney-data/sec-13f-hedge-fund-tracker) · [8-K Material Events](https://apify.com/smartmoney-data/sec-8k-material-events) · [Red Flag Radar](https://apify.com/smartmoney-data/red-flag-radar)

### Pricing

**Pay per result:** you're charged for each company period returned. See the **Pricing** tab for current rates.

### FAQ

**Which companies are covered?**
Any company that files 10-Qs and 10-Ks with XBRL data, which is nearly every US-listed operating company. Funds and foreign companies that only file 20-F or 6-K may have little or no data; they are listed in `SUMMARY.sourceErrors`.

**Why is a field null?**
The company did not tag that line in its filing (banks, for example, have no "gross profit"). The Actor never guesses a value.

**How is this different from Yahoo Finance scrapers?**
The numbers come from the official filings, not a scraped website, so they do not break when a page changes and they show restatements.

### Support

Found a bug or need a feature? Open an issue on the **Issues** tab or email **smartmoney-data@googlegroups.com**.

*Data is provided for informational purposes only and is not investment advice.*

# Actor input Schema

## `tickers` (type: `array`):

US stocks that file 10-Ks and 10-Qs with the SEC, e.g. AAPL, MSFT, NVDA.

## `periodType` (type: `string`):

Quarterly, annual, or both.

## `periods` (type: `integer`):

Most recent periods per company (and per period type when both).

## `secUserAgent` (type: `string`):

The SEC asks automated clients to identify themselves as 'Company Name email@domain.com'.

## Actor input object example

```json
{
  "tickers": [
    "AAPL",
    "MSFT",
    "NVDA"
  ],
  "periodType": "quarterly",
  "periods": 8,
  "secUserAgent": "SmartMoney Data Company Financials smartmoney-data@googlegroups.com"
}
```

# Actor output Schema

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

No description

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

No description

# 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 = {
    "tickers": [
        "AAPL",
        "MSFT",
        "NVDA"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("smartmoney-data/us-company-financials").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 = { "tickers": [
        "AAPL",
        "MSFT",
        "NVDA",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("smartmoney-data/us-company-financials").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 '{
  "tickers": [
    "AAPL",
    "MSFT",
    "NVDA"
  ]
}' |
apify call smartmoney-data/us-company-financials --silent --output-dataset

```

## MCP server setup

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

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/LfX2W5TU1IRlbthtl/builds/UrdKA1ea7LKYcpfIC/openapi.json
