1 · Get a key
Create a free key (100 requests/day, every dataset). Send it either way on every request:
Authorization: Bearer mlq_your_key # or: X-API-Key: mlq_your_key
2 · First call: statements with receipts
curl -H "Authorization: Bearer $MLQ_KEY" \ "https://mlq.ai/api/v1/companies/AAPL/income-statement/?period=FY&limit=3"
Three annual periods, newest first, familiar camelCase field names — and on every period a
source block with the SEC accession number and filing URL. That block is the point:
any number can be traced to its filing in one click. In Python:
import requests
BASE = "https://mlq.ai/api/v1"; H = {"Authorization": "Bearer YOUR_KEY"}
for p in requests.get(f"{BASE}/companies/AAPL/income-statement/",
params={"period": "FY", "limit": 3}, headers=H).json():
print(p["fiscalYear"], f"rev ${p['revenue']/1e9:.1f}B",
f"net ${p['netIncome']/1e9:.1f}B", "←", p["source"]["accession"])
Swap the path for balance-sheet, cash-flow,
metrics (~50 ratios), or facts (every raw concept).
period=quarter gives the quarterly series; as_of=YYYY-MM-DD gives
point-in-time (why that matters).
3 · Lists: one envelope everywhere
Every non-statement list endpoint returns the same shape —
{count, returned, offset, results}, where count is the total
matches. Page with limit + offset:
def all_rows(path, **params):
out, offset = [], 0
while True:
j = requests.get(f"{BASE}{path}", headers=H,
params={**params, "limit": 200, "offset": offset}).json()
out += j["results"]
offset += j["returned"]
if offset >= j["count"] or not j["returned"]:
return out
trades = all_rows("/congress-trades/", ticker="NVDA")
print(len(trades), "congressional NVDA trades on record")
The same pattern works across /feed/ (materiality-scored filings),
/companies/{t}/insider-trades/, /companies/{t}/institutional-ownership/,
/funds/{cik}/holdings/, and the
infrastructure datasets. Errors are always JSON;
429s tell you your quota and when it resets.
4 · Or skip the code: connect an agent
claude mcp add --transport http mlq https://mlq.ai/mcp \ --header "Authorization: Bearer YOUR_KEY"
Then ask in plain English — "pull NVDA's last 8 quarters of margins and cite the filings". Recipes in the agent cookbook; custom-agent builders can feed llms.txt straight into a system prompt.
Where to next
- API reference — every endpoint, field-by-field, try-it console.
- Methodology & data dictionary — how values are derived, where we differ on purpose.
- Accuracy — the audit, published.
- Pricing — Free / $49 / $199, all datasets in every tier.