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.