Free · JSON · No API Key

NIFTY Fear & Greed
Public JSON API

Live composite score, full history, and CSV download. Updated daily after NSE close. Free for personal & commercial use, no authentication required.

Endpoints
  1. Live Score — ?action=nifty
  2. History — ?action=nifty-history
  3. CSV Download — ?action=nifty-history.csv

Quick start

Fetch the current score in one line:

curl https://nifty.feargreedchart.com/api/?action=nifty
Base URL: https://nifty.feargreedchart.com/api/ — All endpoints return JSON with Access-Control-Allow-Origin: *, so they work from any browser.
GET /api/?action=nifty
Live Score
Current Fear & Greed score, all three components, NIFTY 50 level, USD/INR, and recent history snapshots.
{
  "score": 65,
  "label": "Greed",
  "updated": "2026-05-16",
  "nifty": {
    "level": 23694.15,
    "change_pct": 0.14,
    "recent_30d": [23412.6, 23456.7, ...]
  },
  "usd_inr": 84.32,
  "components": [
    { "name": "Market Momentum", "weight": 33, "score": 78, "note": "..." },
    { "name": "Volatility",      "weight": 33, "score": 65, "note": "..." },
    { "name": "Currency",        "weight": 34, "score": 42, "note": "..." }
  ],
  "history": {
    "prev_close": { "date": "2026-05-15", "score": 63 },
    "week":       { "date": "2026-05-09", "score": 58 },
    "month":      { "date": "2026-04-16", "score": 71 },
    "year":       { "date": "2025-05-16", "score": 49 }
  },
  "meta": {
    "methodology":      "equal-weight 3-component model (33% × 3); Foreign Flow component pending NSE FII pipeline",
    "history_size":     842,
    "generated_at_utc": "2026-05-16T10:31:04+00:00"
  }
}
FieldTypeDescription
scoreint 0–100Composite Fear & Greed score.
labelstringOne of: Extreme Fear, Fear, Neutral, Greed, Extreme Greed.
updateddateNSE trading date the score reflects (YYYY-MM-DD).
nifty.levelfloatNIFTY 50 closing level.
nifty.change_pctfloatDay-over-day percent change.
nifty.recent_30darrayLast 30 NIFTY 50 closes for sparkline use.
usd_inrfloatLatest USD/INR rate from FRED DEXINUS.
componentsarrayEach component: name, weight, score, note.
historyobjectScore values from prev_close, week, month, year ago.
meta.methodologystringNotes on weights and pending components.
meta.history_sizeintTotal number of dates in the history series.
JavaScript
fetch('https://nifty.feargreedchart.com/api/?action=nifty')
  .then(r => r.json())
  .then(d => console.log(d.score, d.label));
Python
import requests
r = requests.get(
  'https://nifty.feargreedchart.com/api/?action=nifty'
).json()
print(r['score'], r['label'])
cURL
curl -s https://nifty.feargreedchart.com\
/api/?action=nifty | jq .score
GET /api/?action=nifty-history
History
Daily Fear & Greed score and NIFTY 50 close for every date in the series.
{
  "count": 842,
  "range": { "from": "2023-01-02", "to": "2026-05-16" },
  "rows": [
    { "date": "2023-01-02", "score": 51, "nifty": 18197.45 },
    { "date": "2023-01-03", "score": 49, "nifty": 18232.55 },
    ...
  ]
}
FieldTypeDescription
countintNumber of rows.
range.fromdateFirst date in the series.
range.todateMost recent date.
rows[].datedateTrading date.
rows[].scoreint|nullScore for that date (may be null on bootstrap days).
rows[].niftyfloat|nullNIFTY 50 close for that date.
JavaScript
const d = await (
  await fetch('https://nifty.feargreedchart.com/api/?action=nifty-history')
).json();
console.log(d.count, 'days');
Python
import requests
hist = requests.get(
  'https://nifty.feargreedchart.com/api/?action=nifty-history'
).json()
print(len(hist['rows']))
cURL
curl -s https://nifty.feargreedchart.com\
/api/?action=nifty-history | jq '.count'
GET /api/?action=nifty-history.csv
CSV Download
The same history as a CSV file (alias: ?action=nifty-csv) for spreadsheets and notebooks.
date,fear_greed_score,label,nifty_close
2023-01-02,51,Neutral,18197.45
2023-01-03,49,Fear,18232.55
2023-01-04,52,Neutral,18042.95
...
import pandas as pd
df = pd.read_csv('https://nifty.feargreedchart.com/api/?action=nifty-history.csv')
df.head()

Caching & refresh

Live score (?action=nifty) is cached for 5 minutes via Cache-Control: public, max-age=300. History endpoints are cached for 1 hour. The underlying score regenerates once per trading day, shortly after NSE close at 15:30 IST (10:00 UTC) Mon–Fri. Be considerate with polling — once every few minutes is plenty.

Attribution & terms

Free for personal & commercial use. Please link back to nifty.feargreedchart.com so others can find the source. The score is informational only — not investment advice — and may be inaccurate. Underlying data: NIFTY 50 closes via Yahoo Finance (^NSEI); USD/INR via the Federal Reserve's FRED DEXINUS series.