XOOMAR

Free Market Sentiment API

AI-scored per-asset sentiment combining three layers: news analysis, crowd positioning (funding rates), and institutional flows (COT). Updated every hour. Others charge for sentiment feeds; ours runs on our own news coverage and public positioning data.

Endpoints

GET
/api/markets/sentiment

Latest sentiment scores for all 20 tracked assets (all windows).

GET
/api/markets/sentiment/{slug}?history=7d|30d|all

Sentiment history for a specific asset.

Rate Limit

30 req/min/IP

CORS

Open (*)

Auth

None

Examples

curl

curl https://xoomar.com/api/markets/sentiment/btc

Python

import requests

r = requests.get("https://xoomar.com/api/markets/sentiment")
for row in r.json()["data"]:
    if row["window"] == "24h":
        print(f"{row['slug']}: composite {row['composite']}")

JavaScript

const res = await fetch("https://xoomar.com/api/markets/sentiment/btc?history=30d");
const { data } = await res.json();
data.forEach(r => console.log(`${r.ts}: ${r.composite}`));

Honest Limits

  • Recomputes hourly. Not a real-time feed.
  • News layer scored by GPT from our own coverage; crowd layer from funding rates; institutional from COT positioning.
  • Score range is -1 to +1. Values near 0 are neutral.
  • Not all layers are available for all assets (e.g., COT layer is null for crypto assets without CME futures).

Main Features

  • Multi-layer sentiment for 17 assets across crypto, FX, indices, and commodities, recomputed every hour.
  • Three independent layers per asset: AI-scored news coverage, crowd positioning from funding and ratio data, and institutional positioning from COT.
  • Composite score with transparent weights (news 0.5, crowd 0.25, institutional 0.25) and null-safe renormalization when a layer has no data.
  • Both 24h and 7d windows per asset, plus the Crypto Fear & Greed Index for crypto assets.
  • Per-asset history endpoint for charting how sentiment evolved into and out of market events.

How It Works

Each layer has its own clock; the aggregate runs hourly.

1

News scoring

Our pipeline's AI reads incoming market news and scores each relevant article from -1 (bearish) to +1 (bullish) per asset, then aggregates over 24h and 7d windows.

2

Crowd and institutional layers

Funding rate percentiles and long/short ratios become the crowd layer; weekly COT net positioning becomes the institutional layer.

3

Blending

The composite renormalizes weights across whichever layers have data, so a missing layer never silently zeroes the score. We unit-test this math.

Real Example

Request

curl "https://xoomar.com/api/markets/sentiment"

Response (captured live, trimmed)

{
  "data": [
    {
      "slug": "btc",
      "name": "Bitcoin",
      "kind": "crypto",
      "window": "24h",
      "ts": "2026-06-12T15:00:03.798Z",
      "newsScore": null,
      "newsCount": 0,
      "crowdScore": "0.0129",
      "institutionalScore": "1.0000",
      "fearGreed": 12,
      "composite": "0.5065"
    }
  ],
  "updatedAt": "2026-06-12T15:08:35.828Z",
  "source": "xoomar.com",
  "docs": "https://xoomar.com/markets/api"
}

One row per asset per window with the latest scores. Scores are strings to preserve precision; parse before comparing.

What People Build With This

Contrarian screens

Extreme bearish news sentiment plus washed-out crowd positioning is a classic capitulation pattern. Both layers arrive in the same row.

News-driven bot filters

Bots pause entries when 24h news sentiment crosses a threshold against the trade direction.

Cross-asset dashboards

17 assets in one call: render a sentiment heatmap across crypto, FX, indices, and commodities with zero joins.

Event studies

The history endpoint lets you measure how long sentiment shocks take to mean-revert per asset class.

Pricing and Fair Use

Free. No API key, no signup, no credit card. We rate limit per IP to keep the service fast for everyone; a 429 response carries a Retry-After header telling you exactly when to retry. Cache responses on your side where you can. If you are building something that needs guaranteed volume, contact us first instead of hammering the endpoint.

Response Shape

Every endpoint returns the same JSON envelope: { data, updatedAt, source, docs }. The data field is an array of records with these fields:

FieldTypeDescription
slugstringAsset slug (btc, gold, sp500...)
namestringDisplay name
kindstringcrypto, fx, index, or commodity
windowstringAggregation window: 24h or 7d
tsstringWhen this score was computed (ISO)
newsScorestring | nullAI news sentiment, -1 (bearish) to +1 (bullish)
newsCountnumber | nullArticles scored in the window
crowdScorestring | nullCrowd positioning layer from funding/ratio data
institutionalScorestring | nullInstitutional layer from COT positioning
fearGreednumber | nullCrypto Fear & Greed Index (crypto assets only)
compositestring | nullWeighted blend of available layers, -1 to +1

Returns the latest score per asset per window. Per-asset history is available at /api/markets/sentiment/{slug}.

Numeric values arrive as strings where precision matters (prices, rates); parse with your language's decimal type for accounting-grade math. Rate limiting is fair-use per IP; a 429 response includes a Retry-After header. No authentication, no API key, no signup. Attribution is appreciated: xoomar.com/markets.

Frequently Asked Questions

How is the sentiment score calculated?
Three layers: news (AI-scored articles, weight 0.5), crowd (funding rates, weight 0.25), and institutional (COT positioning, weight 0.25). Missing layers are renormalized.
What does the composite score mean?
Range -1 to +1. Above +0.15 is bullish, below -0.15 is bearish. Values between are neutral. It represents the weighted opinion of news, retail, and institutional positioning.
Which assets are covered?
17 assets: 6 crypto (BTC, ETH, SOL, XRP, BNB, DOGE), 4 forex pairs (EUR/USD, USD/JPY, GBP/USD, AUD/USD), 3 indices (S&P 500, Nasdaq, Russell 2000), and 4 commodities (Gold, Silver, Oil, Copper).
Can I get historical sentiment?
Yes. Use the per-asset endpoint with ?history=30d or ?history=all for the full history since sentiment tracking began.

Data on this page is provided for informational purposes only and is not financial advice. See our editorial policy.