Onera Corpus
US · India · China

Financial data your backtest can trust

Filings, fundamentals, prices and court records across three markets. Served point-in-time, traced to the source document, metered by credits.

100,000 credits on sign-up. No sales call.

11.4M
SEC filings, with full text and exhibits
22.2M
Indian daily price bars
18.3M
Chinese A-share price bars
100,000
Credits on every new account
COVERAGE

Three markets, native identifiers

A CIK is not a CIN is not an A-share code. Corpus keeps each market's own identifier and shares only the request and response shape.

United States

SEC filings with full text and exhibits, XBRL financials as reported, insider transactions, 13F holdings, and daily prices.

11.4M filingsCIK · ACCESSION · TICKER

India

NSE and BSE daily prices, annual reports, syndicated news, MCA company master data, and High Court and district judgments.

22.2M price barsISIN · NSE SYMBOL · CIN

China

Shanghai and Shenzhen A-share daily prices, unadjusted. A suspended day carries its halt status rather than a forward-filled price.

18.3M price barsEXCHANGE-QUALIFIED CODE
GUARANTEES

What the data promises

Point-in-time: Every value carries the time we learned it, separately from the time it describes. A query as of a past date returns what was knowable then.

Traceable: Every record carries its accession, source id and retrieval time. Source bytes are content-addressed, so the document behind a number can be replayed exactly as fetched.

Unrevised: Restatements are kept as separate observations. The figure a filing first reported stays readable after the company corrects it.

Marked: A suspended trading day says suspended. An unaudited figure says unaudited. Coverage gaps are reported, not interpolated.

ONE REQUEST

Typed responses, every market

One key, one response envelope. The jurisdiction and the point-in-time flag travel with the payload rather than living in the docs.

GET/us/financials/income-statements
curl "https://corpus-api.onera.app/us/financials/income-statements?ticker=AAPL&limit=1"
  --header "X-API-KEY: $CORPUS_API_KEY"

{
  "income_statements": [{
    "ticker": "AAPL",
    "report_period": "2025-09-27",
    "revenue": 416161000000,
    "net_income": 112010000000
  }],
  "meta": { "point_in_time": true }
}
INTERFACES

One account, three ways in

REST

Typed envelopes. Every response carries its jurisdiction and its point-in-time metadata. OpenAPI schema published.

Documentation
MCP

The same surface for agents. Same key, same credit accounting, no second integration to keep in step.

Documentation
ASK

Natural-language questions planned into real queries, answered with the rows and the citations behind them.

Documentation
PRICING

Credits, not seats

Every account carries the full public surface. No tier gates an endpoint. Reads are cheap. Work that fans out across documents costs more, because it costs us more.

At zero the API returns 402. Your key keeps every permission it held, so you top up rather than re-request access.

Sign up
Prices, filings, financials, securities1
Document search10
Natural-language ask25
Bulk export (CSV, XLSX, Parquet)50
CREDITS PER REQUEST
REDISTRIBUTION

Access is not a redistribution licence. Some sources carry no resale rights, and Corpus cannot grant rights it does not hold. Read the provenance page before building anything that republishes.

Data provenance

Start with 100,000 credits

Enough to evaluate every market and every endpoint without speaking to anyone.