Build
The same numbers as the site, for your own tools.
Every endpoint below except desk.php needs an API key. Pass it as a Bearer header (preferred) or ?api_key=. The quota follows your plan; past it, you get HTTP 429 until midnight.
01
GET /api/v1/quote.php
Score, fundamentals and money flow for one symbol.
| Param | Type | |
|---|---|---|
| symbol | string | Required. e.g. AAPL |
| api_key | string | If not sent as a header |
Quotas
| Plan | Calls / day |
|---|---|
| Board | 500 |
| Reader | 5,000 |
| Pro | 50,000 |
| Desk | 500,000 |
Errors
| 400 | symbol required (quote.php) |
| 401 | missing, invalid or revoked key |
| 429 | daily quota reached · resets at midnight, server time |
| 200 | with "score": null · symbol not scored yet (request it) |
429 body
{
"ok": false,
"error": "daily quota reached",
"used": 5000,
"limit": 5000,
"plan": "reader",
"resets_at": "2026-10-01T00:00:00Z",
"upgrade": "/pricing#api"
}
curl -H "Authorization: Bearer $FD_KEY" \
"https://ricktorious.com/api/v1/quote.php?symbol=AAPL"
import os, requests
r = requests.get("https://ricktorious.com/api/v1/quote.php?symbol=AAPL",
headers={"Authorization": f"Bearer {os.environ['FD_KEY']}"})
print(r.json())
const r = await fetch("https://ricktorious.com/api/v1/quote.php?symbol=AAPL",
{ headers: { Authorization: `Bearer ${FD_KEY}` } });
console.log(await r.json());
200 OK · response (trimmed) live rows · 23:05 BST
{
"ok": true,
"symbol": "AAPL",
"score": {
"composite": 38.43,
"stable_composite": 36.51,
"confidence": 95,
"quality": 97,
"spot": 336.65,
"call_vol": 640555,
"put_vol": 291340,
"call_oi": 94768,
"put_oi": 40621,
"fetched_at": "2026-09-30 16:48:42"
},
"fundamentals": …,
"money_flow": …
}
Sign in to create a key. Sign in
Samples are live rows in each endpoint’s real shape; fundamentals, money flow and links are trimmed. Plans are at Plans. Was /api-docs.