Normalized SEC financial data,
priced per call, built for agents.

Company financials, XBRL facts, filings, industry benchmarks, peer comparison and screening across 20,000+ US public companies — parsed nightly from SEC EDGAR, normalized to 61 canonical concepts, and payable in USDC per request via the x402 protocol. No signup. No API key required. Your agent pays $0.005–$0.25 and gets JSON back.

x402 USDC on Base 20,057 companies 123M+ facts 61 canonical concepts Nightly EDGAR refresh ~10 min new-filing latency

Why this API

Answers, not raw filings

Raw EDGAR XBRL is messy: thousands of overlapping tags, custom extensions, comparative-period traps. We map it all to a canonical concept set with data-quality flags, so "revenue" means revenue — for every company, every year.

Aggregates & curated insights

The only per-call API selling industry benchmark percentiles and pre-built market analyses: sector margin medians, biggest margin movers, the R&D spend arms race, buyback-vs-dividend mix — one GET request each, catalog at /insights.

Agent-native payments

HTTP 402 + x402: your agent discovers the price, signs a USDC payment, and gets data — one round trip, no account, no key management, no subscription. Human? Use an API key instead.

Today's Buffett Quality leaders

Top 3 companies by Buffett Quality Score (ties broken by revenue), recomputed every night from the latest SEC filings. Live from /spotlight — free.

Loading latest rankings…

Endpoints

All endpoints are GET and return JSON. Companies are identified by SEC CIK number (lookup): Apple=320193, Microsoft=789019, NVIDIA=1045810, Amazon=1018724, Alphabet=1652044, Tesla=1318605.

EndpointDescriptionPrice
/company/{cik}/financials Annual financial statements per fiscal year: revenue, gross profit, operating & net income, full balance sheet, cash flow statement, and derived ratios (gross_margin, operating_margin, net_margin, rd_intensity, fcf, current_ratio, debt_to_equity, roa, roe). Params: fy_from, fy_to $0.02
/company/{cik}/facts Every normalized XBRL fact with filing provenance (form, accession, filed date), period, unit and quality flags. Params: concept, fy_from, fy_to, limit $0.01
/company/{cik}/filings Filing index with direct sec.gov document URLs — 10-K, 10-Q, 8-K, Form 4 insider trades, S-1 and every other form type, updated within ~10 minutes of EDGAR acceptance. Params: form, limit $0.005
/aggregate/{metric} Industry benchmark percentiles (p10 / p25 / median / p75 / p90, mean, n) for any metric, by 2-digit SIC industry group and revenue size bucket (micro / small / mid / large / mega). Params: industry, size, fy $0.05
/compare/{cik} One company's metrics side-by-side with its industry cohort percentiles — instantly see if margins, returns or leverage are above or below sector norms. Params: fy $0.05
/screen Screener over all companies: pass a JSON list of [metric, op, value] filters, get matching companies with names, tickers, industries and metrics. Params: fy, filters, limit $0.10
/insight/{name} Curated market-wide analyses computed live over all companies — top_companies (rank by any metric, optionally per industry), movers (biggest metric changes between two years), sector_landscape (margin medians per industry), metric_trend (yearly aggregate time series), capital_returns (buybacks vs dividends by size), filing_velocity (monthly filing counts). Free parameter catalog at /insights. $0.15
/insight/buffett_scan Buffett Quality Score — rank companies 0–100 on value-investing fundamentals over a 5-year window: owner earnings (net income + D&A − capex), ROE consistency at the 15% bar, balance-sheet safety (liabilities/equity), and FCF quality. Per-pillar breakdown included; financial-sector and short-history results flagged. Params: fy, min_score, min_revenue, industry, exclude_foreign (default true), limit. Heuristic screen, not investment advice. $0.25
/insight/piotroski · /insight/altman_z
/insight/beneish_m · /insight/magic_formula
/insight/accruals
Industry-standard scores — peer-reviewed formulas computed across all companies: Piotroski F-Score (0–9 quality), Altman Z-Score (bankruptcy/ distress zones), Beneish M-Score (accounting-quality signal), Greenblatt Magic Formula (earnings-yield + ROC rank), and the Sloan accrual ratio (earnings quality). Each is a named, cited metric — not a black box. Screening heuristics, not investment advice. $0.15
/insight/buffett_value Buffett Value Scan — the Quality Score fused with previous-close valuation: market cap, FCF yield, owner-earnings yield, P/E, and a 10-year owner-earnings DCF with margin of safety. Find quality companies trading below intrinsic value; combined_score averages quality and value. Params: fy, min_score, min_margin_of_safety, min_revenue, industry, exclude_foreign (default true), limit. Heuristic screen, not investment advice. $0.25
/company/{cik}/signal
/insight/top_signals
Composite factor scorecard — five independent evidence sources fused into 0–100 scores: quality (Piotroski, Altman, accruals), value (owner-earnings DCF margin of safety), insider conviction (Form 4 open-market buying as bps of market cap), institutional positioning (13F holder change + ownership %), and short sentiment (FINRA short-volume percentile within industry). Carries cross-dataset metrics available nowhere else — institutional ownership %, insider buy intensity, short-to-ADV — plus governance flags (Form 4 filing latency, Item 4.02 restatements, stale fundamentals). Scored on available factors and renormalized, with a coverage figure so thin results are visible. Factor weights are caller-overridable. Research signal, not investment advice. $0.05
$0.25
/company/{cik}/insider
/company/{cik}/institutional
/company/{cik}/short
Market signals per company — insider (Form 4 open-market buys vs sales, distinct buyers, net dollar value, 10b5-1 flags), institutional (13F holder count, aggregate shares/value, quarter-over-quarter accumulate/trim; 45-day lag), and short (FINRA daily short-volume ratio over ~20 trading days — a bearish-sentiment proxy; daily short-sale volume, not bi-monthly short interest / float). Not investment advice. $0.02
/insight/insider_buying
/insight/institutional_accumulation
/insight/heavy_shorting
Market-wide signal screens — companies with the strongest recent insider cluster buying, the fastest 13F institutional accumulation, and the heaviest short-selling pressure. Smart-money and sentiment positioning across the whole universe. Not investment advice. $0.15
/catalog · /llms.txt · /health · /insights Machine-readable catalog, agent documentation, health — plus /.well-known/x402.json and interactive OpenAPI docs. free

Available metrics for /aggregate and /screen: revenue, cost_of_revenue, gross_profit, operating_income, net_income, operating_cash_flow, investing_cash_flow, financing_cash_flow, fcf, capex, research_development, sga_expense, total_assets, total_liabilities, stockholders_equity, retained_earnings, long_term_debt, cash_and_equivalents, inventory, operating_lease_liability, gross_margin, operating_margin, net_margin, rd_intensity, current_ratio, debt_to_equity, roa, roe — and more (see /llms.txt).

Quickstart

1. See the price (any HTTP client)

Unpaid requests return HTTP 402 with x402 v2 payment requirements in the PAYMENT-REQUIRED header — including input/output schemas and worked examples for every route.

$ curl -i https://sec.multyplylabs.com/company/320193/financials

HTTP/2 402
payment-required: eyJ4NDAyVmVyc2lvbiI6Mi...   # base64: scheme, network, amount, payTo, schemas

2. Pay per call — Python

pip install "x402[evm]" eth-account
import asyncio
from eth_account import Account
from x402.client import x402Client
from x402.http.clients.httpx import x402HttpxClient
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact import ExactEvmClientScheme

account = Account.from_key("0x...")          # wallet holding USDC on Base
client = x402Client()
client.register("eip155:8453", ExactEvmClientScheme(EthAccountSigner(account)))

async def main():
    async with x402HttpxClient(client) as http:
        r = await http.get(
            "https://sec.multyplylabs.com/company/320193/financials?fy_from=2023")
        print(r.status_code)                  # 200 — paid $0.02 automatically
        print((await r.aread()).decode()[:200])

asyncio.run(main())

2′. Pay per call — TypeScript

npm install x402-fetch viem
import { privateKeyToAccount } from "viem/accounts";
import { wrapFetchWithPayment } from "x402-fetch";

const account = privateKeyToAccount("0x...");     // USDC on Base
const fetchWithPay = wrapFetchWithPayment(fetch, account);

const res = await fetchWithPay(
  "https://sec.multyplylabs.com/aggregate/gross_margin?industry=73&size=mega&fy=2025");
console.log(await res.json());                     // paid $0.05 automatically

3. Or use an API key (prepaid / fiat customers)

$ curl -H "X-API-Key: YOUR_KEY" \
    "https://sec.multyplylabs.com/company/320193/financials?fy_from=2024"

Want an API key with volume pricing? Email help@multyplylabs.com.

Worked examples

Apple's financials (real response, abridged)

GET /company/320193/financials?fy_from=2025

{"cik": 320193, "years": [{
  "fiscal_year": 2025,
  "revenue": 416161000000.0,
  "gross_profit": 195201000000.0,
  "operating_income": 133050000000.0,
  "net_income": 112010000000.0,
  "eps_diluted": 7.46,
  "total_assets": 359241000000.0,
  "stockholders_equity": 73733000000.0,
  "operating_cash_flow": 111482000000.0,
  "capex": 12715000000.0,
  "fcf": 98767000000.0,
  "gross_margin": 0.4690,
  "operating_margin": 0.3197,
  "net_margin": 0.2691,
  "rd_intensity": 0.0830,
  "roe": 1.5191, ...}]}

Industry benchmarks: software gross margins

GET /aggregate/gross_margin?industry=73&size=mega&fy=2025

{"metric": "gross_margin", "cohorts": [{
  "industry_group": "73", "size_bucket": "mega", "fiscal_year": 2025,
  "p10": 0.41, "p25": 0.55, "median": 0.67, "p75": 0.78, "p90": 0.85,
  "mean": 0.66, "n": 42}]}

Screening: profitable large caps

GET /screen?fy=2025&filters=[["operating_margin",">",0.25],["revenue",">",10000000000]]

{"fiscal_year": 2025, "count": 87, "companies": [
  {"cik": 320193, "name": "Apple Inc.", "tickers": ["AAPL"],
   "revenue": 416161000000.0, "operating_margin": 0.3197, ...}, ...]}

Peer comparison

GET /compare/1065280?fy=2025          # Netflix vs its industry cohort

{"company": {"name": "NETFLIX INC", "gross_margin": 0.489, ...},
 "cohort_percentiles": [
   {"metric": "gross_margin", "median": 0.41, "p75": 0.58, ...}, ...]}

Fresh filings with document links

GET /company/320193/filings?form=10-K&limit=1

{"cik": 320193, "filings": [{
  "form": "10-K", "filed": "2025-11-01",
  "document_url": "https://www.sec.gov/Archives/edgar/data/320193/..."}]}

Curated insights: who improved margins the most?

GET /insight/movers?metric=gross_margin&fy_from=2023&fy_to=2025&min_revenue=1000000000

{"insight": "movers", "count": 20, "results": [
  {"name": "Example Corp", "tickers": ["EXMP"],
   "start_value": 0.31, "end_value": 0.47, "delta": 0.16}, ...]}

Curated insights: the R&D arms race

GET /insight/metric_trend?metric=research_development&agg=sum&fy_from=2015&fy_to=2025

{"insight": "metric_trend", "results": [
  {"fiscal_year": 2015, "value": 271.4e9, "companies_reporting": 3211},
  ...
  {"fiscal_year": 2025, "value": 702.9e9, "companies_reporting": 4187}]}

Buffett Quality Score: durable high-quality businesses

GET /insight/buffett_scan?fy=2025&min_score=70&min_revenue=1000000000&limit=10

{"insight": "buffett_scan", "count": 10, "results": [{
  "name": "Example Corp", "tickers": ["EXMP"],
  "buffett_score": 85,
  "score_owner_earnings": 25,     // OE positive, ≥90% cash conversion, growing
  "score_roe_consistency": 27,    // 5y avg ROE 31%, 4 of 5 years ≥15%
  "score_debt_safety": 20,        // liabilities/equity 0.42
  "score_fcf_quality": 13,
  "owner_earnings": 8123000000.0,
  "avg_roe_5y": 0.31, "liabilities_to_equity": 0.42,
  "history_years": 5, "flags": ""}, ...]}

Raw normalized facts with provenance

GET /company/320193/facts?concept=revenue&fy_from=2023

{"cik": 320193, "facts": [{
  "concept": "revenue",
  "concept_raw": "RevenueFromContractWithCustomerExcludingAssessedTax",
  "value": 416161000000.0, "unit": "USD",
  "fiscal_year": 2025, "fiscal_period": "FY",
  "form": "10-K", "filed": "2025-11-01", "quality_flags": ""}]}

How payment works (x402)

x402 is the open protocol — stewarded by the Linux Foundation, backed by Coinbase, Cloudflare, Google, Visa and Mastercard — that turns HTTP 402 into a working payment flow for machines:

Client libraries handle all of this automatically — x402 SDKs exist for Python, TypeScript, Go and Rust. All you need is a wallet holding USDC on Base. Payments are final (no chargebacks); repeated identical requests are your responsibility to de-duplicate.

MCP server — plug into Claude, Cursor, or any MCP client

Give your AI assistant direct, self-paying access to SEC data. Nine tools: company_financials, company_facts, company_filings, industry_aggregate, screen_companies, compare_to_peers, buffett_scan, buffett_value, market_insight, list_insights (free catalog).

Option A — Hosted endpoint (no install)

Point any MCP client at https://sec.multyplylabs.com/mcp (Streamable HTTP) and pass your API key as an X-API-Key header. Free tools (list_insights) work without a key; paid tools return payment guidance.

// Claude Desktop / Cursor / Cline
{"mcpServers": {"sec-data": {
  "url": "https://sec.multyplylabs.com/mcp",
  "headers": {"X-API-Key": "YOUR_KEY"}
}}}

Option B — Self-paying stdio server (pays per call in USDC)

Runs locally and pays each tool call from your wallet via x402 — no API key needed.

1. Download the server (single file, no package needed)

mkdir -p ~/mcp && curl -o ~/mcp/sec_data_server.py https://sec.multyplylabs.com/mcp-server.py
pip install mcp "x402[evm]" eth-account httpx

2. Add it to your MCP client

// Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json
// (Cursor, Cline, etc. use the same shape)
{"mcpServers": {"sec-data": {
  "command": "python3",
  "args": ["/Users/YOU/mcp/sec_data_server.py"],
  "env": {
    "SECPLATFORM_URL": "https://sec.multyplylabs.com",
    "BUYER_PRIVATE_KEY": "0x..."        // wallet with USDC on Base — pays per tool call
    // or instead: "SEC_PLATFORM_API_KEY": "..." for prepaid access
  }}}}

3. Restart your client and ask a question

Then ask: "How does NVIDIA's R&D intensity compare to other mega-cap semiconductor companies?" — the agent calls compare_to_peers and industry_aggregate, pays a few cents in USDC, and answers with sourced numbers.

Data & methodology

Source and freshness

Normalization (what you're paying for)

Valuation (Buffett Value Scan)

Data is derived from public-domain SEC filings. Scores are heuristics inspired by Buffett's published writing — they are not Buffett's method, not a recommendation, and not investment advice. Prices are sourced from public EOD feeds and may contain errors.

FAQ

How do I find a company's CIK?

Use the SEC's company search, or query /screen and read CIKs from results. Common ones: Apple 320193 · Microsoft 789019 · Amazon 1018724 · Alphabet 1652044 · Meta 1326801 · Tesla 1318605 · NVIDIA 1045810 · Netflix 1065280 · JPMorgan 19617 · Berkshire 1067983.

What do I need to pay with x402?

A wallet private key holding USDC on Base (the buyer needs no ETH — transfers are authorized off-chain and the facilitator pays gas). $1 covers 10–200 calls depending on endpoint.

Can I get quarterly data?

/facts includes quarterly (10-Q) facts today — filter by fiscal_period in the response. Clean quarterly statements and point-in-time snapshots are on the roadmap.

Do you have an SLA / higher rate limits / bulk pricing?

Email help@multyplylabs.com for API keys, volume pricing, or custom datasets.

Where else can my agent discover this service?

We're indexed in the Agentic Market / x402 Bazaar (via the Coinbase CDP facilitator) with machine-readable schemas in every 402 response, plus /llms.txt and /.well-known/x402.json.

Explore the interactive API reference →