Trading research API, the same data as our website
Key levels, short-term and swing signals and published performance, delivered as JSON straight into your platform. Field names are always English and text comes in English or Chinese; everything updates with the website every 30 minutes. Most data vendors hide this behind a demo call. Our samples and field reference are right here.
- 92markets with key levels
- 30minute updates
- 6endpoints, GET only
- 60requests per minute per key
Gold key levels in one request
curl -H "X-API-Key: YOUR_KEY" https://borearis.com/api/v1/levels/xauusd
Send your key in the X-API-Key header (an ?api_key= parameter also works, but the header is safer). Add ?lang=zh for Chinese text; numbers are identical.
What you can get
| Endpoint | Returns | Updates |
|---|---|---|
GET /api/v1/instruments | All markets: id, symbol, name, asset class, digits | 30 min |
GET /api/v1/levels | Level summary for every market: bias, pivot, targets 1–2, state | 30 min |
GET /api/v1/levels/{id} | Full levels for one market: intraday and daily, 3 support and resistance tiers, expected move, headline, preference, alternative scenario and comment. Use the id or the symbol from the instrument list (xauusd or XAUUSD) | 30 min |
GET /api/v1/signals/short | Short-term signals (30-minute): open plus the last 100 closed, with results | on candle close |
GET /api/v1/signals/swing | Swing signals (1-hour and 4-hour): open and recently closed | on candle close |
GET /api/v1/performance | Performance: backtest and price replay, by asset class and by month | daily |
Real output, not mock data
This is what the API returned when this page was built (2026-10-28 17:04 UTC+8); long lists are trimmed.
GET /api/v1/levels/xauusd{
"api_version": "1.0",
"generated": "2026-10-28T17:04:30+08:00",
"language": "en",
"disclaimer": "For information only, not investment advice. Trading involves risk.",
"data": {
"id": "xauusd",
"symbol": "XAUUSD",
"name": "Gold (XAU/USD)",
"asset_class": "metal",
"digits": 2,
"price": 4052.52,
"price_time": "2026-10-28T17:30:00+08:00",
"market_open": true,
"updated": "2026-10-28T17:03:01+08:00",
"views": {
"intraday": {
"timeframe": "30m",
"bias": "bearish",
"state": "edge",
"valid": true,
"pivot": 4062.44,
"target_1": 3991.32,
"target_2": 3972.8,
"opposite_1": 4093.62,
"opposite_2": 4112.18,
"resistance": [
4062.44,
4093.62,
4112.18
],
"support": [
3991.32,
3972.8,
3954.29
],
"expected_move": "1.97%",
"headline": "On the edge of pivot level",
"preference": "Below 4,062.44, look for a move towards 3,991.32.",
"alternative": "Above 4,062.44, expect 4,093.62 and 4,112.18.",
"comment": "The price is approaching our pivot level at a critical juncture, leaving little room for the asset to reverse its current trajectory. RSI is at 59 and MACD is above its signal line."
},
"daily": {
"timeframe": "1d",
"bias": "bearish",
"state": "ok",
"valid": true,
"pivot": 4446.08,
"target_1": 3799.26,
"target_2": 3636.17,
"opposite_1": 4726.72,
"opposite_2": 4893.77,
"resistance": [
4446.08,
4726.72,
4893.77
],
"support": [
3799.26,
3636.17,
3473.08
],
"expected_move": "10.27%",
"headline": "Target level as a potential turning point",
"preference": "Below 4,446.08, look for a move towards 3,799.26.",
"alternative": "Above 4,446.08, expect 4,726.72 and 4,893.77.",
"comment": "Price is approaching our first target at 3,799.26, which may trigger a pullback; a clear break below it would open the way to 3,636.17. RSI is at 41 and MACD is below its signal line."
}
},
"url": "https://borearis.com/en/analysis/xauusd/"
}
}
GET /api/v1/levels{
"api_version": "1.0",
"generated": "2026-10-28T17:04:30+08:00",
"language": "en",
"disclaimer": "For information only, not investment advice. Trading involves risk.",
"count": 92,
"data": [
{
"id": "alibaba",
"symbol": "BABA",
"name": "Alibaba (BABA)",
"price": 100.12,
"market_open": false,
"intraday": {
"bias": "bearish",
"state": "ok",
"pivot": 101.49,
"target_1": 98.36,
"target_2": 97.53,
"valid": true
},
"daily": {
"bias": "bearish",
"state": "ok",
"pivot": 105.04,
"target_1": 92.46,
"target_2": 89.03,
"valid": true
}
},
{
"id": "alphabet",
"symbol": "GOOGL",
"name": "Alphabet (GOOGL)",
"price": 320.54,
"market_open": false,
"intraday": {
"bias": "bullish",
"state": "ok",
"pivot": 318.74,
"target_1": 325.92,
"target_2": 327.94,
"valid": true
},
"daily": {
"bias": "bearish",
"state": "ok",
"pivot": 334.93,
"target_1": 304.32,
"target_2": 296.44,
"valid": true
}
},
{
"id": "amazon",
"symbol": "AMZN",
"name": "Amazon (AMZN)",
"price": 253.12,
"market_open": false,
"intraday": {
"bias": "bullish",
"state": "ok",
"pivot": 248.82,
"target_1": 255.87,
"target_2": 257.77,
"valid": true
},
"daily": {
"bias": "bearish",
"state": "ok",
"pivot": 259.68,
"target_1": 231.67,
"target_2": 224.34,
"valid": true
}
}
]
}
GET /api/v1/signals/short{
"api_version": "1.0",
"generated": "2026-10-28T17:04:30+08:00",
"language": "en",
"disclaimer": "For information only, not investment advice. Trading involves risk.",
"count": 430,
"open": [
{
"id": "dogeusdt-1793176200",
"type": "short",
"symbol": "DOGEUSD",
"name": "Dogecoin",
"category": "crypto",
"direction": "sell",
"signal_time": "2026-10-28T16:30:00+08:00",
"entry_type": "limit",
"entry": 0.08073,
"stop_loss": 0.08153,
"take_half": 0.08032,
"target": 0.0787,
"risk_reward": "1:2.5",
"exit_style": "scale_out",
"status": "pending_order",
"status_text": "Limit order pending",
"result_r": null,
"result_points": null,
"closed_time": null,
"timeframe": "30m",
"url": "https://borearis.com/en/analysis/dogecoin/",
"tracking": "live"
},
{
"id": "gbpjpy-1793174400",
"type": "short",
"symbol": "GBPJPY",
"name": "GBP/JPY",
"category": "fx",
"direction": "sell",
"signal_time": "2026-10-28T16:00:00+08:00",
"entry_type": "limit",
"entry": 209.645,
"stop_loss": 209.883,
"take_half": null,
"target": 208.931,
"risk_reward": "1:3",
"exit_style": "single_exit",
"status": "open",
"status_text": "Open",
"result_r": null,
"result_points": null,
"closed_time": null,
"timeframe": "30m",
"url": "https://borearis.com/en/analysis/gbpjpy/",
"tracking": "live"
}
],
"recent_closed": [
{
"id": "usdcad-1793095200",
"type": "short",
"symbol": "USDCAD",
"name": "USD/CAD",
"category": "fx",
"direction": "sell",
"signal_time": "2026-10-27T18:00:00+08:00",
"entry_type": "limit",
"entry": 1.40158,
"stop_loss": 1.40273,
"take_half": null,
"target": 1.39813,
"risk_reward": "1:3",
"exit_style": "single_exit",
"status": "stopped_out",
"status_text": "Stopped out",
"result_r": -1.16,
"result_points": "−13.3 pips",
"closed_time": "2026-10-27T21:00:00+08:00",
"timeframe": "30m",
"url": "https://borearis.com/en/analysis/usdcad/",
"tracking": "live"
},
{
"id": "usdjpy-1793091600",
"type": "short",
"symbol": "USDJPY",
"name": "USD/JPY",
"category": "fx",
"direction": "sell",
"signal_time": "2026-10-27T17:00:00+08:00",
"entry_type": "limit",
"entry": 157.692,
"stop_loss": 157.875,
"take_half": null,
"target": 157.143,
"risk_reward": "1:3",
"exit_style": "single_exit",
"status": "stopped_out",
"status_text": "Stopped out",
"result_r": -1.08,
"result_points": "−19.8 pips",
"closed_time": "2026-10-27T21:30:00+08:00",
"timeframe": "30m",
"url": "https://borearis.com/en/analysis/usdjpy/",
"tracking": "live"
}
]
}
GET /api/v1/signals/swing{
"api_version": "1.0",
"generated": "2026-10-28T17:04:30+08:00",
"language": "en",
"disclaimer": "For information only, not investment advice. Trading involves risk.",
"count": 4,
"open": [
{
"id": "usdcnh-1793145600",
"type": "swing",
"symbol": "USDCNH",
"name": "USD/CNH",
"category": "fx",
"direction": "buy",
"signal_time": "2026-10-28T08:00:00+08:00",
"entry_type": "market",
"entry": 6.665,
"stop_loss": 6.65443,
"take_half": 6.67029,
"target": 6.67782,
"risk_reward": "1:1.2",
"exit_style": "scale_out",
"status": "open",
"status_text": "Open",
"result_r": null,
"result_points": null,
"closed_time": null,
"strong": false,
"timeframe": "4h",
"url": "https://borearis.com/en/analysis/usdcnh/",
"tracking": "live"
},
{
"id": "cucusd-1793102400",
"type": "swing",
"symbol": "COPPER",
"name": "Copper",
"category": "commodity",
"direction": "buy",
"signal_time": "2026-10-27T20:00:00+08:00",
"entry_type": "limit",
"entry": 6.4871,
"stop_loss": 6.3632,
"take_half": 6.5615,
"target": 6.6111,
"risk_reward": "1:1",
"exit_style": "scale_out",
"status": "pending_order",
"status_text": "Limit order pending",
"result_r": null,
"result_points": null,
"closed_time": null,
"strong": false,
"timeframe": "4h",
"url": "https://borearis.com/en/analysis/copper/",
"tracking": "live"
}
],
"recent_closed": []
}
GET /api/v1/performance{
"api_version": "1.0",
"generated": "2026-10-28T17:04:30+08:00",
"language": "en",
"disclaimer": "For information only, not investment advice. Trading involves risk.",
"data": {
"short": {
"backtest": {
"signals": 2501,
"win_rate": 65.1,
"avg_r": 0.197,
"from": "2024-10",
"to": "2026-10"
},
"price_replay": {
"signals": 378,
"win_rate": 65.1,
"avg_r": 0.193
},
"by_category": {
"gold": {
"signals": 780,
"win_rate": 71.2,
"avg_r": 0.15
},
"fx": {
"signals": 759,
"win_rate": 47.6,
"avg_r": 0.242
},
"crypto": {
"signals": 962,
"win_rate": 73.9,
"avg_r": 0.2
}
},
"monthly": [
{
"month": "2024-11",
"sum_r": 7.3,
"signals": 32
},
{
"month": "2024-12",
"sum_r": 11.7,
"signals": 106
},
{
"month": "2025-01",
"sum_r": 26.2,
"signals": 143
},
{
"month": "2025-02",
"sum_r": 51.3,
"signals": 126
},
{
"month": "2025-03",
"sum_r": 21.1,
"signals": 99
},
{
"month": "2025-04",
"sum_r": 11.3,
"signals": 86
},
{
"month": "2025-05",
"sum_r": 2.5,
"signals": 95
},
{
"month": "2025-06",
"sum_r": -4.5,
"signals": 80
},
{
"month": "2025-07",
"sum_r": 43.4,
"signals": 129
},
{
"month": "2025-08",
"sum_r": 9.2,
"signals": 99
},
{
"month": "2025-09",
"sum_r": 27.5,
"signals": 136
},
{
"month": "2025-10",
"sum_r": 19.8,
"signals": 186
},
{
"month": "2025-11",
"sum_r": 28.4,
"signals": 92
},
{
"month": "2025-12",
"sum_r": 22.5,
"signals": 84
},
{
"month": "2026-01",
"sum_r": 33.7,
"signals": 173
},
{
"month": "2026-02",
"sum_r": 23.6,
"signals": 111
},
{
"month": "2026-03",
"sum_r": -2.7,
"signals": 67
},
{
"month": "2026-04",
"sum_r": 22.3,
"signals": 71
},
{
"month": "2026-05",
"sum_r": 22.2,
"signals": 108
},
{
"month": "2026-06",
"sum_r": 37.4,
"signals": 125
},
{
"month": "2026-07",
"sum_r": 15.3,
"signals": 53
},
{
"month": "2026-08",
"sum_r": 46.6,
"signals": 140
},
{
"month": "2026-09",
"sum_r": 14.6,
"signals": 93
},
{
"month": "2026-10",
"sum_r": 2.4,
"signals": 67
}
]
},
"swing": {
"backtest": {
"signals": 1668,
"win_rate": 73.2,
"avg_r": 0.171,
"from": "2024-03",
"to": "2026-10"
},
"price_replay": {
"signals": 515,
"win_rate": 72.0,
"avg_r": 0.114
},
"by_category": {
"gold": {
"signals": 849,
"win_rate": 73.3,
"avg_r": 0.152
},
"crypto": {
"signals": 146,
"win_rate": 74.0,
"avg_r": 0.172
},
"fx": {
"signals": 326,
"win_rate": 75.2,
"avg_r": 0.143
},
"index": {
"signals": 81,
"win_rate": 69.1,
"avg_r": 0.149
},
"commodity": {
"signals": 76,
"win_rate": 69.7,
"avg_r": 0.217
},
"stock": {
"signals": 190,
"win_rate": 72.1,
"avg_r": 0.297
}
},
"monthly": [
{
"month": "2024-03",
"signals": 1,
"wins": 1,
"sum_r": 0.5
},
{
"month": "2024-04",
"signals": 2,
"wins": 2,
"sum_r": 0.53
},
{
"month": "2024-06",
"signals": 2,
"wins": 1,
"sum_r": 0.33
},
{
"month": "2024-07",
"signals": 1,
"wins": 1,
"sum_r": 0.27
},
{
"month": "2024-08",
"signals": 5,
"wins": 4,
"sum_r": 0.83
},
{
"month": "2024-09",
"signals": 15,
"wins": 11,
"sum_r": 2.42
},
{
"month": "2024-10",
"signals": 22,
"wins": 19,
"sum_r": 7.74
},
{
"month": "2024-11",
"signals": 18,
"wins": 16,
"sum_r": 4.56
},
{
"month": "2024-12",
"signals": 20,
"wins": 12,
"sum_r": -2.57
},
{
"month": "2025-01",
"signals": 38,
"wins": 24,
"sum_r": 2.74
},
{
"month": "2025-02",
"signals": 50,
"wins": 36,
"sum_r": 1.49
},
{
"month": "2025-03",
"signals": 62,
"wins": 48,
"sum_r": 20.19
},
{
"month": "2025-04",
"signals": 93,
"wins": 64,
"sum_r": 12.6
},
{
"month": "2025-05",
"signals": 31,
"wins": 23,
"sum_r": 5.92
},
{
"month": "2025-06",
"signals": 45,
"wins": 30,
"sum_r": -1.73
},
{
"month": "2025-07",
"signals": 62,
"wins": 50,
"sum_r": 14.36
},
{
"month": "2025-08",
"signals": 55,
"wins": 41,
"sum_r": 11.09
},
{
"month": "2025-09",
"signals": 109,
"wins": 82,
"sum_r": 25.87
},
{
"month": "2025-10",
"signals": 141,
"wins": 104,
"sum_r": 20.05
},
{
"month": "2025-11",
"signals": 76,
"wins": 56,
"sum_r": 15.13
},
{
"month": "2025-12",
"signals": 82,
"wins": 61,
"sum_r": 6.19
},
{
"month": "2026-01",
"signals": 157,
"wins": 125,
"sum_r": 57.1
},
{
"month": "2026-02",
"signals": 108,
"wins": 72,
"sum_r": 1.4
},
{
"month": "2026-03",
"signals": 64,
"wins": 49,
"sum_r": 18.22
},
{
"month": "2026-04",
"signals": 40,
"wins": 26,
"sum_r": 4.61
},
{
"month": "2026-05",
"signals": 54,
"wins": 37,
"sum_r": 1.24
},
{
"month": "2026-06",
"signals": 94,
"wins": 73,
"sum_r": 26.95
},
{
"month": "2026-07",
"signals": 63,
"wins": 41,
"sum_r": 4.57
},
{
"month": "2026-08",
"signals": 60,
"wins": 45,
"sum_r": 17.1
},
{
"month": "2026-09",
"signals": 59,
"wins": 37,
"sum_r": -4.12
},
{
"month": "2026-10",
"signals": 39,
"wins": 30,
"sum_r": 10.45
}
]
},
"notes": {
"win_rate": "percent of signals that closed with a profit (after spreads)",
"avg_r": "average result in R; 1R = the distance from entry to stop loss",
"backtest": "historical simulation",
"price_replay": "replayed on real broker prices",
"live": "signals published after launch are listed one by one in /signals/*"
}
}
}
GET /api/v1/instruments{
"api_version": "1.0",
"generated": "2026-10-28T17:04:30+08:00",
"language": "en",
"disclaimer": "For information only, not investment advice. Trading involves risk.",
"count": 92,
"data": [
{
"id": "alibaba",
"symbol": "BABA",
"name": "Alibaba (BABA)",
"asset_class": "stock",
"digits": 2,
"url": "https://borearis.com/en/analysis/alibaba/"
},
{
"id": "alphabet",
"symbol": "GOOGL",
"name": "Alphabet (GOOGL)",
"asset_class": "stock",
"digits": 2,
"url": "https://borearis.com/en/analysis/alphabet/"
},
{
"id": "amazon",
"symbol": "AMZN",
"name": "Amazon (AMZN)",
"asset_class": "stock",
"digits": 2,
"url": "https://borearis.com/en/analysis/amazon/"
},
{
"id": "apple",
"symbol": "AAPL",
"name": "Apple (AAPL)",
"asset_class": "stock",
"digits": 2,
"url": "https://borearis.com/en/analysis/apple/"
}
]
}
What each field means
views.intraday / views.daily | Two views: intraday (30-minute) and short-term (daily) |
bias | bullish or bearish |
pivot | The line in the sand: a close through it invalidates the view and a new set of levels is drawn |
target_1, target_2 | First and second targets in the direction of the view |
opposite_1, opposite_2 | The two levels in play the other way if the pivot fails |
resistance / support | Three tiers each, nearest first |
state | ok / edge (near the pivot) / reached (target 1 hit) / broken (pivot breached) |
valid | false = targets are too far from price (e.g. after a sharp move); we suggest hiding it |
expected_move | Pips to targets 1–2 for FX; percent to target 2 for everything else |
headline, preference, alternative, comment | Text in English or Chinese, depending on lang |
market_open | false = no quote for over 3 hours (market closed) |
type | short (30-minute) or swing (1-hour and 4-hour) |
direction | buy or sell |
entry_type | market, or limit (fills only when price gets there) |
entry, stop_loss, take_half, target | Entry, stop, take-half price and target; breakout signals have no take_half (null) |
risk_reward | Risk-reward, e.g. 1:3 (target distance ÷ stop distance) |
exit_style | scale_out or single_exit |
status | waiting_for_open, pending_order, open, half_closed, target_hit, stopped_out, break_even, expired |
result_r | Result in R (1R = entry-to-stop distance), after spreads; null while open |
result_points | The result in pips, points or dollars |
tracking | live (tracked since launch) or replay (re-run on real prices before launch) |
strong | Strong swing signal |
Before you integrate
Keys
One key per platform, sent in the X-API-Key header. Keep it server-side; never ship it in web or app front-end code.
Rate limits
60 requests per minute per key, with a burst of 20. Data changes every 30 minutes, so cache on your side and poll every 5–10 minutes. Higher limits are available on request.
Errors
401 | Missing, invalid or revoked key |
404 | Unknown endpoint or market id |
429 | Rate limit exceeded; retry later |
Errors are JSON too: {"error": "invalid_key"}
What is not included
Results only, never the model: no formulas, rules or filters, and no floating P&L on open signals. Third-party data such as the economic calendar is not included for now.
FAQ
Is the API data the same as the website?
Yes. The key level cards, signal pages and the API come from the same calculation, so the numbers always match. The samples on this page are real output from the latest build.
How often is it updated?
Key levels every 30 minutes; short-term signals after each 30-minute candle closes; swing signals after 1-hour and 4-hour candles close. The API updates together with the website.
Do you share the model or its rules?
No. We deliver results only: levels, direction, status and performance. No formulas, filters or rules.
How do I get a key, and what does it cost?
Fill in the trial request page with your platform type and use case (or email [email protected]) and we will issue a 30-day trial key. Pricing depends on markets, volume and delivery method.
All data is for information only and is not investment advice. Trading involves risk.