Financial data is informational and may be inaccurate. See Disclaimer.

drillr.ai
API keys →

Quickstart

A key, one request, and what came back. Four steps, about two minutes.

1 · Get a key

Create one under API Keys. It is shown once — keep it somewhere your shell can read it.

export DRILLR_API_KEY="drl_your_key_here"

Using an agent instead of a script? MCP signs in through the browser and needs no key — see MCP server.

2 · Make your first call

Apple’s last four annual income statements. Every endpoint takes the same header and the same base URL.

curl -H "X-API-KEY: $DRILLR_API_KEY" \
  "https://gateway.drillr.ai/api/v2/income-statements?ticker=AAPL&period=FY&limit=4"
import os, requests

response = requests.get(
    "https://gateway.drillr.ai/api/v2/income-statements",
    headers={"X-API-KEY": os.environ["DRILLR_API_KEY"]},
    params={"ticker": "AAPL", "period": "FY", "limit": 4},
)
for row in response.json()["data"]:
    print(row["fiscal_year"], f'{row["revenue"] / 1e9:.1f}B')

No key yet? Create one under API Keys — it is shown once, so store it where your shell can read it. Connecting an agent over MCP instead? That signs in through the browser and needs no key at all.

3 · Read the response

Rows come back under data, newest period first, with the fiscal calendar spelled out rather than inferred — so you never have to guess whose year you are looking at.

{
  "data": [
    {
      "ticker": "AAPL",
      "market": "US",
      "fiscal_year": 2025,
      "period": "FY",
      "period_start": "2024-09-29",
      "report_period": "2025-09-27",
      "currency": "USD",
      "accounting_standard": "US-GAAP",
      "revenue": 416161000000,
      "gross_profit": 195201000000
    }
  ]
}

Fewer rows than limit means fewer matching periods are available; this endpoint is not paginated.

4 · Where next

  • REST API — every endpoint and parameter.
  • MCP server — the same data as tools your agent can call.