Developer Platform

Stock fundamentals, charts, and MCP — built for apps and AI agents

The same precomputed data that powers TGMCharts, as an API: 28 computed metric series (20-year daily valuation history), 46 chart renders that embed as PNGs, per-stock summaries, a screener, and a Model Context Protocol server your agent can call directly. Refreshed daily. Missing data stays an honest N/A — never a fabricated zero.

AAPL rolling trailing-twelve-month revenue — live chart render from the TGMCharts API
GET /api/v1/charts/AAPL/revenue-ttm

Three ways in

No key, no signup — these work as-is. Responses are CORS-open and cache-friendly.

JSON & CSV data

Per-stock summaries (~5 KB) and computed metric histories — daily P/E, EV/EBITDA, FCF yield, rolling TTM revenue, quarterly margins — with methodology and as-of dates on every payload.

curl
curl https://tgmcharts.com/api/v1/summary/KO
curl · 10y of daily P/E as CSV
curl "https://tgmcharts.com/api/v1/series/KO/pe-ratio?years=10&format=csv"

Chart images

1600×900 PNG renders of any chart metric, in TGMCharts' house style with the as-of date in the frame. Drop the URL into an <img> tag, a README, a newsletter, or an agent's output.

HTML embed
<img src="https://tgmcharts.com/api/v1/charts/NVDA/revenue-quarterly"
     width="800" alt="NVDA quarterly revenue" />
Comparison bars
https://tgmcharts.com/api/v1/charts/KO/revenue?compare=PEP

MCP for AI agents

A streamable-HTTP MCP server with six tools: summaries, metric series, chart URLs, comparisons, screening, and the metric catalog. Works with Claude Code, Claude Desktop, and any MCP client.

Claude Code
claude mcp add --transport http tgmcharts https://tgmcharts.com/api/v1/mcp
.mcp.json
{
  "mcpServers": {
    "tgmcharts": { "type": "http", "url": "https://tgmcharts.com/api/v1/mcp" }
  }
}

Live from the API

Each image below is the endpoint's actual response — copy the URL under it.

KO dividend yield, 20-year daily series
/api/v1/charts/KO/dividend-yield?years=20
NVDA single-quarter revenue bars
/api/v1/charts/NVDA/revenue-quarterly
AAPL P/E ratio, 10-year daily series
/api/v1/charts/AAPL/pe-ratio?years=10

In a notebook

Python
import requests

summary = requests.get("https://tgmcharts.com/api/v1/summary/KO").json()
print(summary["valuation"]["peRatio"], summary["asOf"]["dataUpdatedAt"])

pe = requests.get("https://tgmcharts.com/api/v1/series/KO/pe-ratio", params={"years": 10}).json()
points = pe["points"]  # [{"date": "2016-08-30", "value": 22.1}, ...]

CSV output (?format=csv) loads straight into pandas, spreadsheets, or R. Every series response carries its computation methodology in the payload.

In an agent

Tool definition from the spec
# Every metric slug is enumerated in the machine-readable spec:
curl https://tgmcharts.com/api/v1/openapi.json

# Feed it to your agent framework (OpenAI function calling,
# Claude tool use, LangChain, …) — or skip the glue entirely
# and connect the MCP server.

The spec's x-tgmcharts-metrics extension carries the full catalog (slug, unit, basis, methodology, tier flags) in one fetch, and llms.txt documents the whole machine-readable surface.

The data promise

Precomputed, not proxied

Every response reads stored, precomputed data. No request ever waits on — or varies with — a live vendor call.

Honest N/A

Missing or not-meaningful values come back null or empty with a written reason. Nothing is zero-filled or estimated.

As-of on everything

Payloads and chart frames carry their data date. A public freshness probe (/api/health/freshness) enforces the daily SLA.

Computed in the open

Series responses state their methodology — what was divided by what, on which basis, stepped on which dates.

Metric catalog

One slug = one series. Series = JSON/CSV via /api/v1/series (TGMCharts-computed metrics); Chart = PNG via /api/v1/charts. Statement-level series join the JSON tier when the SEC-filings-sourced fundamentals lane ships.

MetricSlugUnitBasisSeriesChart
P/E Ratiope-ratioratiodaily
P/S Ratiops-ratioratiodaily
P/B Ratiopb-ratioratiodaily
P/FCF Ratiopfcf-ratioratiodaily
P/OCF Ratiopocf-ratioratiodaily
EV/EBITDAev-ebitdaratiodaily
EV/EBITev-ebitratiodaily
EV/Salesev-salesratiodaily
EV/FCFev-fcfratiodaily
EV/Assetsev-assetsratiodaily
Earnings Yieldearnings-yieldpercentdaily
FCF Yieldfcf-yieldpercentdaily
EBITDA Yieldebitda-yieldpercentdaily
OCF Yieldocf-yieldpercentdaily
Dividend Yielddividend-yieldpercentdaily
Total Returntotal-returnusddaily
ROICroicpercentdaily
Revenue (TTM)revenue-ttmusdttm
Net Income (TTM)net-income-ttmusdttm
Free Cash Flow (TTM)fcf-ttmusdttm
EBITDA (TTM)ebitda-ttmusdttm
Capital Expenditure (TTM)capex-ttmusdttm
Buybacks (TTM)buybacks-ttmusdttm
Stock-Based Compensation (TTM)sbc-ttmusdttm
R&D Expense (TTM)rd-ttmusdttm
Gross Margin (Quarterly)gross-margin-quarterlypercentquarterly
Operating Margin (Quarterly)operating-margin-quarterlypercentquarterly
Net Margin (Quarterly)net-margin-quarterlypercentquarterly
Revenuerevenueusdannual
Net Incomenet-incomeusdannual
EPSepsusdPerShareannual
Free Cash Flowfree-cash-flowusdannual
EBITDAebitdausdannual
Capital Expenditurecapexusdannual
Buybacksbuybacksusdannual
Stock-Based Compensationstock-based-compusdannual
R&D Expenser-and-dusdannual
Gross Margingross-marginpercentannual
Operating Marginoperating-marginpercentannual
Profit Marginprofit-marginpercentannual
Return on Equityroepercentannual
Return on Assetsroapercentannual
Revenue (Quarterly)revenue-quarterlyusdquarterly
Net Income (Quarterly)net-income-quarterlyusdquarterly
EPS (Quarterly)eps-quarterlyusdPerSharequarterly
Free Cash Flow (Quarterly)fcf-quarterlyusdquarterly

Pricing

Request units: JSON call = 1 · chart render = 5 · MCP tool call = 2. Keys and upgrades live in the developer console; while checkout is opening, the waitlist (mention "API waitlist") gets you in first.

Free

Live today

$0

  • 1,000 units/day fair use
  • Works with or without a key
  • All series + chart metrics
  • MCP server access
  • Attribution required
  • Commercial use at this volume

Builder

Coming soon

$19/mo

  • 100k units/mo
  • Exact per-account metering
  • Priority coverage onboarding
  • Email support

Pro

Coming soon

$49/mo

  • 1M units/mo
  • Exact per-account metering
  • Higher burst
  • Priority support

Scale

Coming soon

$199/mo

  • 10M units/mo included
  • $0.10 per 1k overage (metered)
  • Custom limits
  • Priority support

Free keys are live now in the developer console with exact per-account metering. Paid checkout opens shortly (preview pricing — confirmed at launch); keyless free use stays governed by edge fair-use limits.

FAQ

Is there a free stock fundamentals API?

Yes — this one. TGMCharts serves per-stock summaries, 20-year daily valuation series (P/E, P/S, EV/EBITDA, FCF yield, dividend yield, ROIC, total return), rolling TTM flows, and quarterly margins for 800+ US-listed stocks and ETFs, free, CORS-open, and keyless, with attribution. Data is precomputed daily from company filings and market data.

How do I connect Claude or another AI agent to stock market data?

Point any MCP client at the TGMCharts MCP server: `claude mcp add --transport http tgmcharts https://tgmcharts.com/api/v1/mcp`. The agent gets six tools — summaries, metric histories, chart-image URLs, comparisons, screening, and the metric catalog. Frameworks that consume OpenAPI can instead generate tools from /api/v1/openapi.json.

Can I get stock charts as images from an API?

Yes — GET /api/v1/charts/{symbol}/{metric} returns a 1600×900 PNG of the metric's history in TGMCharts' chart style, ready for <img> tags, READMEs, newsletters, and agent outputs. 46 chart metrics including revenue, EPS, free cash flow, margins, and the daily valuation-ratio lines, with ?compare= for two-company bars.

Do I need an API key?

No — the free tier is keyless and CORS-open. Keys (created at /developers/keys, sent as Authorization: Bearer tgm_live_… or x-api-key) add exact metering, per-account quotas, and paid tiers. A keyed request bypasses the shared cache, gets X-RateLimit headers, and 401s loudly on a bad key instead of silently downgrading.

What does the free tier require?

Attribution: name TGMCharts as the data source and link tgmcharts.com where the data or charts are shown ("data by TGMCharts"). Chart images carry the attribution in the render. Fair use is 1,000 request-units per day (JSON call = 1 unit, chart render = 5, MCP tool call = 2).

Where does the data come from, and what can I redistribute?

Everything is precomputed daily — no request ever hits a live market-data vendor. The JSON/CSV series tier serves TGMCharts-computed metrics (daily valuation and yield series, rolling TTM flows, quarterly margins, ROIC, total return). Statement-level line items are available as chart renders today and join the JSON tier when our SEC-filings-sourced fundamentals lane ships.

How fresh is the data, and how should I cache?

Data refreshes daily after the US market close (every covered symbol within ~24h; freshness probe: /api/health/freshness). Cache responses for at least an hour — endpoints send cache headers that do this for you.

What happens for missing or not-meaningful values?

Honest states, never fabrication: unknown symbols 404 with an onboarding hint, metrics that don't apply to a company type return null with a written explanation, and empty histories return [] with a note. Nothing is zero-filled.

Can I use it commercially?

Yes — free-tier volumes with attribution cover commercial applications. Bulk redistribution or resale of the data as a dataset is not allowed. See the API terms on the terms page.

Endpoints: /api/v1/summary/{symbol} · /api/v1/series/{symbol}/{metric} · /api/v1/charts/{symbol}/{metric} · /api/v1/mcp · openapi.json · API keys · API terms