PUBLIC API

Free JSON endpoints for the Fear & Greed Index. Use in dashboards, trading tools, research, or any project. No API key required.

FREE CORS ENABLED 15-MIN CACHE NO AUTH
Fair use: Data is cached server-side for 15 minutes. Polling faster returns the same response. For most use cases, fetching once per page load or every 15 minutes is sufficient. Excessive automated requests from a single IP may be throttled.

BASE URL

https://feargreedchart.com/api/

ENDPOINTS

GET /?action=all
Returns everything in a single call: current score with all 5 component breakdowns, market data for major indices and sector ETFs, full score history, and backtest results.
score.scoreintComposite score (0–100)
score.componentsarray5 components with name, val, wt, desc, raw
marketobjectPrice, change, pct, closes for each symbol
recentarrayFull score history [{date, score}, ...]
sectorsobjectPer-sector sentiment scores (XLK, XLF, etc.)
backtestobjectForward returns by sentiment zone
tsintServer timestamp (ms)
GET /?action=history
Full score history as a JSON array. Each entry has a date (YYYY-MM-DD) and score (0–100). Includes seed estimates back to 2016 and daily computed scores from 2025 onward.
[].datestringDate in YYYY-MM-DD format
[].scoreintFear & Greed score (0–100)
GET /?action=history&format=csv
Same data as above, returned as a downloadable CSV file with date,score columns. Useful for Excel, Google Sheets, or data analysis workflows.
↓ Download CSV
GET /?action=market
Raw market data for all tracked symbols. Includes current price, daily change, percentage change, and an array of recent closing prices. Covers VIX, SPY, QQQ, DIA, IWM, and 11 sector ETFs.
{SYM}.pricefloatCurrent/last price
{SYM}.chgfloatDaily price change
{SYM}.pctfloatDaily percentage change
{SYM}.closesarrayRecent daily closing prices
GET /?action=backtest
Pre-computed S&P 500 forward returns after entries into each sentiment zone. Shows average return, win rate, best, and worst for 1-month, 3-month, and 6-month periods. Recomputed daily by cron.
GET /?action=news
Market headlines aggregated from Yahoo Finance, MarketWatch, and Reuters RSS feeds. Cached for 15 minutes. Returns up to 7 deduplicated articles sorted newest first.
[].titlestringHeadline text
[].linkstringURL to full article
[].publisherstringSource name
[].timeintUnix timestamp
GET /?action=crypto
Crypto Fear & Greed Index from alternative.me, BTC/ETH prices from Yahoo Finance, and stock F&G for comparison. 10-minute cache. Includes 365-day crypto sentiment history.
crypto_fng.scoreintCrypto Fear & Greed score (0-100)
crypto_fng.labelstringClassification: Extreme Fear, Fear, Neutral, Greed, Extreme Greed
prices.BTCUSD.pricefloatCurrent BTC price in USD
prices.ETHUSD.pricefloatCurrent ETH price in USD
stock_fng.scoreintStock market F&G score for comparison
crypto_history[]array365-day crypto F&G history (date + score)
GET /?action=insider
Insider sentiment score computed from SEC Form 4 filings via OpenInsider.com. Rolling 30-day window of open-market purchases vs sales. 30-minute cache.
score.scoreintInsider sentiment score (0-100)
score.labelstringHeavy Selling, Sell Pressure, Neutral, Accumulation, Strong Conviction
score.components[]array4-component breakdown: Buy/Sell Ratio, C-Suite Conviction, Buy Momentum, Sell Pressure
score.statsobjectSummary: total_buys, total_sells, total_buy_val, total_sell_val, csuite_buys
top_buys[]arrayRecent notable insider purchases (symbol, name, title, shares, value, date)
top_sells[]arrayRecent notable insider sales
GET /?action=liquidity
US net liquidity index from FRED data. Net Liquidity = Fed Balance Sheet (WALCL) − Treasury General Account (WTREGEN) − Reverse Repo (RRPONTSYD). 6-hour cache.
scoreintLiquidity score (0-100, percentile within 2-year range)
labelstringVery Tight, Tight, Neutral, Loose, Very Loose
net_liquidityfloatCurrent net liquidity in trillions USD
trendfloat4-week change in trillions
trend_labelstringExpanding, Contracting, or Stable
components[]arrayFed Balance Sheet, TGA, RRP, M2 — each with value, date, series ID
history[]array~2 years of weekly net liquidity (date + net in trillions)
GET /?action=regime
Market regime analysis combining F&G score, insider sentiment, VIX, and US liquidity into a single regime assessment. 10-minute cache. Returns the current regime, all matching regimes, signal dashboard, and historical pattern matches.
regime.namestringCurrent regime: Capitulation Phase, Liquidity Squeeze, Euphoria Zone, Complacency with Headwinds, Fear with Macro Support, Recovery Phase, Risk-On Environment, Consolidation Phase, Neutral with Undercurrents
regime.severitystringRegime outlook: positive, negative, caution, neutral, moderate, watch
currentobjectSignal dashboard: fg_score, fg_zone, velocity, vel_dir, vix, vix_level, insider_score, insider_label, liq_score, liq_trend, liq_label
all_regimes[]arrayAll matching regimes (multiple can be active simultaneously)
history.episodesintCount of past episodes in the same F&G zone
history.avg_fwd_5dfloatAverage 5-day forward F&G score change from similar episodes
history.avg_fwd_22dfloatAverage 22-day forward F&G score change
history.avg_spy_1mfloatAverage 1-month SPY price return (%) from similar past episodes
history.avg_spy_3mfloatAverage 3-month SPY price return (%) from similar past episodes
history.win_rate_1mintPercentage of episodes with positive 1-month SPY return
history.win_rate_3mintPercentage of episodes with positive 3-month SPY return

QUICK START

JAVASCRIPT
// Get today's score
fetch('https://feargreedchart.com/api/?action=all')
  .then(r => r.json())
  .then(data => {
    const score = data.score.score;
    const label = score <= 20 ? 'Extreme Fear'
               : score <= 40 ? 'Fear'
               : score <= 60 ? 'Neutral'
               : score <= 80 ? 'Greed'
               : 'Extreme Greed';
    console.log(`Fear & Greed: ${score} — ${label}`);
  });
PYTHON
import requests

r = requests.get("https://feargreedchart.com/api/?action=all")
data = r.json()

score = data["score"]["score"]
for c in data["score"]["components"]:
    print(f"{c['name']:12s} {c['val']:3d}  ({c['wt']}%)  {c['raw']}")
print(f"\nComposite: {score}")
Attribution appreciated: If you use this API in a public project, a link back to feargreedchart.com is appreciated but not required. Data is provided as-is with no uptime guarantee. Not financial advice.