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
/api/markets/signals/{slug}The composite for one asset (btc, eth, gold, eurusd and so on).
/api/markets/signalsEvery 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:
- Open MetaTrader → Tools → Options → Expert Advisors
- Check "Allow WebRequest for listed URL"
- Add:
https://xoomar.com - Click OK. Restart the EA.
Download the MQL include file
Drop this in your MQL4/Include or MQL5/Include folder:
Download XoomarSignals.mqhSample 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:
| Field | Type | Description |
|---|---|---|
| asset | object | { slug, name, kind } |
| news | object | { score, articleCount, window }: tone of recent headlines about the asset, -1 to +1, how many headlines it covers, and the window (24h) |
| crowd | object | 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 |
| institutional | object | 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 |
| macro | object | { fearGreed }: the Crypto Fear & Greed Index by alternative.me; credit alternative.me next to the value when you show it |
| composite | number | null | One reading from -1 to +1 for the asset; higher is more bullish; null when no component has data |
| updatedAt | object | { news, crowd, institutional }: when each component last changed |
| disclaimer | string | Informational 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?
What is the composite?
Is this a buy or sell call?
How often does the composite change?
Which assets are covered?
Data on this page is provided for informational purposes only and is not financial advice. See our editorial policy.