CFGI Developer API
The Crypto Indicator Your Models Are Missing.
CFGI is a Fear and Greed indicator built from 10 underlying signals, across 100+ assets and every timeframe. One call adds a unique sentiment layer to the stack you already run.
Free to start, then pay only for what you call.
100 free credits No subscription Volume discounts
Scored every 15 minutes since 2022, across 100+ assets.
The call
One Call, the Whole Picture
One request returns the Fear and Greed score, the classification and all 10 sub-signals: unique data, as clean JSON.
Request
GET https://cfgi.io/api/api_request_v2.php
?api_key=YOUR_API_KEY
&token=BTC
&period=4
&fields=cfgi,price,volatility,volume,impulse,technical,social,dominance,trends,whales,orders
&values=1Response
[
{
"token": "BTC",
"date": "2026-06-19 16:00:00",
"price": 30000,
"cfgi": 38,
"classification": "Fear",
"data_volatility": 41,
"data_volume": 52,
"data_impulse": 34,
"data_technical": 47,
"data_social": 55,
"data_dominance": 60,
"data_trends": 33,
"data_whales": 72,
"data_orders": 49
}
]Historical data
Backtest Against Years of Sentiment
100+
assets tracked
11
signals per asset
4
timeframes
Every 15 min
since 2022
200M+
data points
Price history is everywhere. Sentiment history is not. Every score and sub-signal CFGI has ever calculated is queryable, so you can study how the crowd behaved around past stress and euphoria and feed it straight into your models.
- Every Fear and Greed score and all 10 sub-signals, back to 2022
- 100+ assets, the whole market, and 15m / 1h / 4h / daily
- Pull any date range with start and end, to backfill and backtest
- Full history for every account, not gated behind a top tier
Historical range
https://cfgi.io/api/api_request_v2.php?api_key=YOUR_API_KEY&token=BTC&period=4&fields=cfgi,price,whales&start=2022-01-01&end=2026-06-01Live data, 24/7
React the Moment It Moves
Every new reading is available the instant it is scored. Poll the REST API on your own schedule, or skip polling entirely and let CFGI push events to your endpoint by webhook the moment a score updates.
- Every new reading the moment it is scored, 24/7
- Poll the REST API on your own schedule
- Or get events pushed to your endpoint by webhook, no polling
- Build bots, dashboards and alert engines that react in real time
Webhook event
POST https://your-app.com/hooks/cfgi
{
"event": "score.updated",
"token": "BTC",
"period": "4h",
"cfgi": 38,
"classification": "Fear",
"date": "2026-06-19 16:00:00"
}Pricing
Pay Only for What You Call
The unique-data shops lock you into a subscription, cap your calls and lag your history. CFGI does not.
- No subscription and no monthly minimum
- Full history included for everyone, no 30-day lag
- Pay only for the exact fields you call
- The more you buy, the cheaper each credit gets
| Pack | Credits | Price | Per 1k | Discount |
|---|---|---|---|---|
| Free | 100 credits | $0 | ||
| Starter | 100k credits | $40 | $0.40 / 1k | |
| Growth | 1M credits | $300 | $0.30 / 1k | 25% off |
| Scale | 10M credits | $2,000 | $0.20 / 1k | 50% off |
| Volume | 100M credits | $15,000 | $0.15 / 1k | 62% off |
How Credits Work
One credit = 1 field × 1 token × 1 value. You pay only for the exact data you request, and every response shows credits used and remaining.
Free to start, then pay only for what you call.
100 free credits No subscription Volume discounts
Example requests (at the $0.40 / 1k starter rate)
- 1 token × 4 fields × 1 value4 credits · $0.0016
- 5 tokens × 4 fields × 1 value20 credits · $0.0080
- 2 tokens × 3 fields × 100 values600 credits · $0.2400
Documentation
Full API Documentation
Everything the endpoint accepts and returns. Every section is linkable. Jump straight to what you need.
Request builder
Build Your Request
Pick your token, timeframe and signals — we write the URL. Paste in your key and go.
Timeframe
Signals (2 selected)
Your request URL
https://cfgi.io/api/api_request_v2.php?api_key=YOUR_API_KEY&token=BTC&period=4&fields=cfgi,price&values=1Replace YOUR_API_KEY with your key. Estimated cost: 2 credits (2 fields × 1 row).
1. Authentication
Every request is authenticated with your API key, passed as the api_key parameter. Generate one from your account and claim 100 free credits. Keep it private, and regenerate it anytime if it is exposed.
2. Making a Request
The endpoint accepts GET and returns JSON from https://cfgi.io/api/api_request_v2.php.
| Parameter | Example | What it controls |
|---|---|---|
| api_key | YOUR_API_KEY | Authenticates the request. |
| token | BTC | The market or asset. Comma-separate symbols for multi-token requests. |
| period | 4 | Selects 15m, 1h, 4h or 1d (period IDs, see Timeframes). |
| fields | cfgi,price,whales | Which data to return, and the credit cost. |
| start / end | 2026-01-01 / 2026-06-01 | Pulls a historical range. |
| values | 100 | Number of rows when no date range is given. |
| ALL | 1 | Returns every 15-minute source row for a range, when supported. |
Use ALL=1 only when you need every 15-minute source row; filtered hourly, 4-hour or daily snapshots are lighter.
3. Supported Tokens
Use token=MARKET for the whole crypto market index, or any supported symbol below. Pass one (token=BTC) or several (token=BTC,ETH,SOL). Unsupported symbols are returned explicitly in errors.
102 tokens + MARKET
MARKETAAVEADAAIXBTALGOAPEAPUARBASTERATOMAURAAVAXAXSBABYDOGEBCHBITCOINBNBBOBOBOMEBONKBTCBTTCHEEMSCROCRVCULTDOGDOGEDOTEGLDEIGENEOSETCETHFARTCOINFETFILFLOKIFLOWFTMFWOGGALAGIGAGRTHBARHNTHYPEICPINJIOTAJOEJUPKASKEYCATLINKLTCLUNAMANAMEWMICHIMOGMOODENGNEARNEIRONOTNPCOGPENGUPEPEPNUTPOPCATPUMPRETARDIORUNESSANDSEISHIBSIGMASNEKSOLSPXSUITAOTETTHETATONTOSHITRXTSTTURBOUFDUNIUSELESSVETVINEWIFWOJAKWOLFXLMXRPXTZZEC4. Timeframes & Periods
The period parameter maps onto CFGI's four crypto timeframes.
| Period | Timeframe | Cadence | Default rows |
|---|---|---|---|
| 1 | 15m | Every 15 minutes | Every 15-minute data point |
| 2 | 1h | Hourly snapshots | Hourly rows filtered from the 15-minute feed |
| 3 | 4h | 4-hour snapshots | Rows at 00:00, 04:00, 08:00, 12:00, 16:00 and 20:00 |
| 4 | 1d | Daily snapshots | Daily rows near the end of the UTC day |
5. Fields
Choose what comes back with fields=. Every response also includes three fields automatically: token (the asset symbol), date (UTC time of the reading) and classification(the score's sentiment band: Extreme Fear, Fear, Neutral, Greed or Extreme Greed).
Each value is a 0 to 100 score. cfgi and price return under their own name; the ten indicators return prefixed data_ (so whales arrives as data_whales). Each field adds one credit per token, per value.
cfgiThe 0 to 100 Fear and Greed score.
priceToken price at the returned timestamp.
volatilityPrice instability and fluctuation pressure.
volumeTrading participation behind the move.
impulseForce of the latest market shift.
technicalWeighted trend and oscillator signals.
socialCrowd attention and social sentiment.
dominanceRisk concentration versus the wider market.
trendsSearch-interest and intent signals.
whalesLarge-holder exchange flow pressure.
ordersOrder-book buying and selling pressure.
See the score, classification and all ten indicators live, with history, on any token page, for example the Bitcoin Fear and Greed Index, or the whole-market index.
6. How Credits Are Calculated
One credit = 1 field × 1 token × 1 value. The cost of any call is the product of the three.
| Request | Credits | Cost (starter) |
|---|---|---|
| 1 token × 4 fields × 1 value | 4 credits | $0.0016 |
| 5 tokens × 4 fields × 1 value | 20 credits | $0.0080 |
| 2 tokens × 3 fields × 100 values | 600 credits | $0.2400 |
7. Responses & Errors
Successful calls return a JSON array. Every response also carries billing headers: X-Credits-Used, X-Credits-Remaining, X-Fields-Requested and X-Tokens-Requested. Use them to track usage from each response.
Example response
[
{
"token": "BTC",
"date": "2026-06-19 16:00:00",
"price": 30000,
"cfgi": 38,
"classification": "Fear",
"data_volatility": 41,
"data_volume": 52,
"data_impulse": 34,
"data_technical": 47,
"data_social": 55,
"data_dominance": 60,
"data_trends": 33,
"data_whales": 72,
"data_orders": 49
}
]402 insufficient credits
{
"error": "Insufficient credits.",
"credits_needed": 20,
"credits_available": 5,
"calculation": "4 fields x 5 tokens = 20 credits"
}| Status | Error | Meaning |
|---|---|---|
| 400 | Invalid Tokens / Range | A requested symbol is not supported, or a start/end range is malformed. |
| 401 | Missing Authentication | api_key, token or period is missing. |
| 402 | Insufficient Credits | Not enough credits for the requested fields, tokens and values. |
| 429 | Rate Limited | Request frequency exceeded the documented limit. |
8. Webhooks
Skip polling — have CFGI push each new reading to your endpoint the instant it is scored. Set one up in your account API tab: paste your URL, pick a token, a timeframe and the signals you want. We hand you a signing secret.
- Add a webhook in your account: URL · token · timeframe · fields.
- Each time that token and timeframe scores a new reading, we
POSTthe JSON payload to your URL. - Verify the
X-CFGI-Signatureheader, then act on the data.
Payload (POST to your URL)
POST https://your-app.com/hooks/cfgi
{
"event": "score.updated",
"token": "BTC",
"period": "4h",
"cfgi": 38,
"classification": "Fear",
"date": "2026-06-19 16:00:00"
}Verify the signature
import crypto from 'node:crypto'
// rawBody = the exact bytes you received (do not re-serialize)
const signature = req.headers['x-cfgi-signature']
const expected = 'sha256=' + crypto.createHmac('sha256', YOUR_SECRET).update(rawBody).digest('hex')
if (signature !== expected) return res.status(401).end()
// signature valid — handle JSON.parse(rawBody)Billing and reliability
Each delivery is billed exactly like a call: fields × 1 row credits, so a webhook on just cfgi is 1 credit per push. If your credits run out we pause the webhook and flag it in your account — top up and hit Resume. Failed deliveries are retried 3 times; an endpoint that keeps failing is paused too.
Developer Questions
How do I start, and is it really free?
Generate an API key, claim 100 free credits, and make your first call. You only buy credits when you need more.
How do credits work?
One credit = one field × one token × one value. A call for 4 fields on 1 token costs 4 credits. Every response returns headers showing credits used and remaining, so usage is never a surprise.
Is there a subscription or monthly minimum?
No. The API is pay-as-you-go. Buy a credit pack when you need it, and bigger packs cost less per credit. There is no recurring fee and no minimum.
How far back does the historical data go?
Full history since 2022 for crypto sentiment, available to every account, with no top-tier gate and no data lag. Pull any date range with start and end.
Do you support webhooks?
Yes. CFGI can push events to your endpoint when a score updates, so your bots, dashboards and alerts react without polling.
Can I use CFGI data in a trading bot?
Yes, as one input in your own logic. CFGI provides unique structured sentiment data; it does not predict price or tell the bot when to trade.
Start With 100 Free Credits
Generate a key, make your first call, and inspect the credit headers. Buy more only when you need them.