XOOMAR

Free Composite Market Reading API for MT4, MT5 and Bots

One reading per asset from -1 (bearish) to +1 (bullish), with its news, crowd and institutional components in the same object, for 26 assets across crypto, stocks, commodities, FX and indices. Built for Expert Advisors, Python scripts and bots. Open CORS; 10 requests a minute without a key, 30 with a free key.

Endpoints

GET
/api/markets/signals/{slug}

The composite for one asset (btc, eth, gold, eurusd and so on).

GET
/api/markets/signals

Every covered asset in one request, for bots that scan several markets.

Use from an Expert Advisor (MT4 and MT5)

MQL's WebRequest function requires URLs to be whitelisted first:

  1. Open MetaTrader → Tools → Options → Expert Advisors
  2. Check "Allow WebRequest for listed URL"
  3. Add: https://xoomar.com
  4. Click OK. Restart the EA.

Download the MQL include file

Drop this in your MQL4/Include or MQL5/Include folder:

Download XoomarSignals.mqh

Sample EA

#include <XoomarSignals.mqh>

void OnTick() {
   // Your own entry logic
   bool maLong = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0)
                > iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,0);

   // The XOOMAR composite for bitcoin, -1 to +1
   double composite = XoomarGetComposite("btc");

   // Your threshold, your rule: this EA takes no new long below -0.3
   if(maLong && composite < -0.3) return;

   // ... the rest of your entry logic
}

Examples

curl

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

Python

import requests

r = requests.get("https://xoomar.com/api/markets/signals/btc")
reading = r.json()["data"]
print(f"BTC composite: {reading['composite']}")
print(f"News: {reading['news']['score']}, Crowd: {reading['crowd']['score']}")

Limits

  • Minute and hour scale, not tick data: not for high-frequency or sub-minute strategies.
  • The composite follows its components: news within minutes, crowd positioning at each funding settlement, institutional weekly with the CFTC report. Responses refresh every minute.
  • 10 requests a minute without a key, 30 with a free key. The composite changes at most once a minute, so poll no faster than that.
  • A reading of news tone and positioning, not a forecast and not advice. Your strategy makes the calls.

Main features

  • One composite per asset from -1 to +1, with its news, crowd and institutional components in the same object.
  • Built for machines: stable field names, numeric types and a timestamp per component.
  • A free MT4 and MT5 include file (XoomarSignals.mqh) that reads the composite inside a MetaTrader EA.
  • Every covered asset in one call from /api/markets/signals.

Example

Request

curl "https://xoomar.com/api/markets/signals/btc"

Response, live at 2026-10-17 15:29 UTC, trimmed

{
  "data": {
    "asset": {
      "slug": "btc",
      "name": "Bitcoin",
      "kind": "crypto",
      "marketSymbolSlug": "btc"
    },
    "news": {
      "score": -0.0864,
      "articleCount": 22,
      "window": "24h"
    },
    "crowd": {
      "fundingRate": 0.0000371,
      "fundingPercentile30d": 53.33,
      "longShortRatio": null,
      "score": 0.0667
    },
    "institutional": {
      "cotNetPosition": -5844,
      "cotIndex1y": 98.08,
      "reportDate": "2026-10-13",
      "score": 0.9615
    },
    "macro": {
      "fearGreed": 55
    },
    "composite": 0.2139,
    "updatedAt": {
      "news": "2026-10-17T15:25:00.833Z",
      "crowd": "2026-10-17T08:00:00.000Z",
      "institutional": "2026-10-13"
    },
    "disclaimer": "Informational only. Not financial advice."
  },
  "updatedAt": "2026-10-17T15:29:03.250Z",
  "source": "xoomar.com",
  "docs": "https://xoomar.com/markets/api",
  "license": "https://xoomar.com/terms",
  "attribution": "Credit XOOMAR with a link to the dataset page on xoomar.com when you republish this data",
  "meta": {
    "source": "Binance, CFTC, alternative.me",
    "sourceAttribution": "Signals: XOOMAR, from Binance funding, CFTC positioning and the sentiment scores on xoomar.com. Crypto Fear & Greed Index: alternative.me.",
    "notice": "10 requests a minute without a key, 30 with a free key. Get a free key at https://xoomar.com/signup?utm_source=api, register your app at https://xoomar.com/developers/register?utm_source=api, and credit the data as \"Data: XOOMAR\" together with the sourceAttribution line."
  }
}

A component with no data is null.

What people build with it

EA filters

Read the composite before an entry; the .mqh include handles the HTTP and the parsing.

Backtest features

Store the composite and its components next to your own price data as feature columns.

Alert pipelines

Check the composite on a schedule and push changes to Telegram or Discord.

Dashboards

Show the composite for every covered asset from one call to /api/markets/signals.

Fair use

No key needed to start. A 429 response carries a Retry-After header in seconds; cache responses on your side where you can. Need more volume? Write to info@xoomar.com.

Response shape

Every endpoint returns the same JSON envelope: { data, updatedAt, source, docs, license, attribution, meta }. In meta, source names who publishes the data and sourceAttribution is the credit line to show with it. The data field is an object with these fields:

FieldTypeDescription
assetobject{ slug, name, kind }
newsobject{ score, articleCount, window }: tone of recent headlines about the asset, -1 to +1, how many headlines it covers, and the window (24h)
crowdobject | null{ fundingRate, fundingPercentile30d, longShortRatio, score }: the current funding rate, its rank from 0 to 100 against its own recent history, and the crowd score (-1 to +1), where a high reading means traders are paying more than usual to hold longs in that asset and a low reading less than usual; longShortRatio is reserved and null; null for assets without a perpetual
institutionalobject | null{ cotNetPosition, cotIndex1y, reportDate, score }: the net position in contracts of leveraged funds (managed money for commodities), its rank from 0 to 100 against its own history, the CFTC report date, and the institutional score (-1 to +1); null without a CFTC market
macroobject{ fearGreed }: the Crypto Fear & Greed Index by alternative.me; credit alternative.me next to the value when you show it
compositenumber | nullOne reading from -1 to +1 for the asset; higher is more bullish; null when no component has data
updatedAtobject{ news, crowd, institutional }: when each component last changed
disclaimerstringInformational only. Not financial advice.

The list endpoint /api/markets/signals returns this object for every covered asset.

Numeric fields typed string in the table carry exact decimals; parse them with your language's decimal type. No key needed to start: 10 requests a minute per IP without a key and 30 a minute with a free account key, with at least six months of history. A 429 response carries a Retry-After header in seconds. Credit XOOMAR with a link to the dataset page when you republish the data; the data terms are on the terms page.

A free account key raises the limit; send it in an X-API-Key header.

Frequently Asked Questions

Can I use this in MT4 and MT5?
Yes. The MQL include file works with both. Call the API with WebRequest after adding xoomar.com to the allowed URLs in the Expert Advisors settings.
What is the composite?
A number from -1 (bearish) to +1 (bullish) that combines the news, crowd and institutional components in the same response. Higher is more bullish.
Is this a buy or sell call?
No. It's a reading of news tone and positioning, not a forecast. Your own strategy makes the calls. Not financial advice.
How often does the composite change?
It follows its components: news within minutes, crowd positioning at each funding settlement, institutional weekly with the CFTC report. Responses refresh every minute.
Which assets are covered?
26 assets across crypto, stocks, commodities, FX and indices; /api/markets/signals lists them with their slugs.

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