Market Mood API
SentiSense's proprietary fear and greed composite index. Combines social sentiment, market direction, fear gauge, social momentum, and S&P 500 trend into a single 0-100 score with phase classification, weekly change, and per-sector breakdowns.
Overview
Market Mood is SentiSense's proprietary 0-100 composite that blends five sub-signals (social sentiment, market direction, fear gauge, social momentum, S&P 500 trend) into a single fear-or-greed score plus a phase label. The endpoint returns the latest score, the daily history, the per-signal breakdown, and per-sector aggregations so you can compare a sector's mood against the broader market.
Use cases:
- Build a top-of-page fear/greed gauge for your own dashboard
- Track regime changes (Greed -> Neutral -> Fear) on a 6-month rolling window
- Compare sector-level moods to spot rotation (e.g. Technology in Greed while Energy in Fear)
- Plot any of the five sub-signals on its own time series
Versioning: Market Mood lives at /api/v2/market-mood (note: v2, not the /api/v1/... prefix used by most other endpoints).
Access: API key required. Free for all tiers (no PRO gating, no quota cost beyond your key's existing rate-limit-per-minute). Anonymous calls return 401 api_key_required.
GET /api/v2/market-mood
Returns the current Market Mood composite, the daily history over the requested window, the per-signal breakdown, and per-sector summaries.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
days |
int | No | 180 | Days of history to return |
Example Request:
curl "https://app.sentisense.ai/api/v2/market-mood?days=90"
from sentisense import SentiSenseClient
client = SentiSenseClient(api_key="ss_live_YOUR_KEY") # API key optional
result = client.get_market_mood(days=90)
print(f"Score: {result['market']['currentScore']} ({result['market']['phase']})")
print(f"Weekly change: {result['market']['weeklyChange']}")
for signal in result["market"]["signals"]:
print(f" {signal['label']}: {signal['value']} (week change: {signal['change']})")
Response Schema:
| Field | Type | Description |
|---|---|---|
market.currentScore |
double | Latest composite score, 0-100 (null if no data) |
market.phase |
string | Plain-text label (e.g. "Extreme Fear", "Fear", "Neutral", "Optimism", "Greed", "Extreme Greed", "---" when null). Optimism is the 60-74 band between Neutral and Greed |
market.weeklyChange |
double | Composite score change vs ~7 days ago (null when insufficient history) |
market.signals |
array | Per-signal breakdown (5 entries) |
market.history |
array | Daily history points |
sectors |
object | Map of sector name to sector summary (currentScore, phase, weeklyChange) |
Signal entry:
| Field | Type | Description |
|---|---|---|
key |
string | One of social_sentiment, market_direction, fear_gauge, social_momentum, spy_trend |
label |
string | Human-readable label (e.g. "Social Sentiment", "S&P 500 Trend") |
value |
double | Latest value of this sub-signal, 0-100 |
change |
double | Change vs ~7 days ago (null when insufficient history) |
History point:
| Field | Type | Description |
|---|---|---|
date |
string | New York date in YYYY-MM-DD format |
timestamp |
long | Epoch milliseconds for the data point |
score |
double | Composite score for that day |
socialSentiment |
double | Social sentiment sub-signal value |
marketDirection |
double | Market direction sub-signal value |
fearGauge |
double | Fear gauge sub-signal value |
socialMomentum |
double | Social momentum sub-signal value |
spyTrend |
double | S&P 500 trend sub-signal value |
Sector summary:
| Field | Type | Description |
|---|---|---|
currentScore |
double | Latest composite score for the sector |
phase |
string | Plain-text phase label |
weeklyChange |
double | Score change vs ~7 days ago (null when insufficient history) |
Example Response:
{
"market": {
"currentScore": 62.4,
"phase": "Greed",
"weeklyChange": 4.2,
"signals": [
{ "key": "social_sentiment", "label": "Social Sentiment", "value": 58.3, "change": 1.5 },
{ "key": "market_direction", "label": "Market Direction", "value": 70.0, "change": 5.0 },
{ "key": "fear_gauge", "label": "Fear Gauge", "value": 55.0, "change": -2.1 },
{ "key": "social_momentum", "label": "Social Momentum", "value": 60.5, "change": 3.0 },
{ "key": "spy_trend", "label": "S&P 500 Trend", "value": 68.2, "change": 6.0 }
],
"history": [
{ "date": "2026-04-01", "timestamp": 1743552000000, "score": 55.0, "socialSentiment": 50.0, "marketDirection": 60.0, "fearGauge": 55.0, "socialMomentum": 50.0, "spyTrend": 60.0 }
]
},
"sectors": {
"Technology": { "currentScore": 70.5, "phase": "Greed", "weeklyChange": 3.2 },
"Finance": { "currentScore": 48.0, "phase": "Neutral", "weeklyChange": -1.5 }
}
}
Notes
- Market Mood is recomputed daily after the U.S. market close. Real-time intraday changes are not reflected; check the
historytimestamps to see the freshness of the latest point. - The five sub-signals are documented in the SentiSense methodology pages on the main site.
- Sector keys (e.g.
Technology,Finance) follow the GICS L1 sector taxonomy; the exact set is whatever has been computed for the requested window.
Try It
Test endpoints directly from your browser. Paste your API key once: it's saved locally and shared across all widgets. Get a free key
GET/api/v2/market-mood
Composite market fear/greed score, history, and sector summaries
curl -H "X-SentiSense-API-Key: ssk_YOUR_KEY" \
"https://app.sentisense.ai/api/v2/market-mood"