Xeronance Realtime Market Data (BIST, VIOP, FX, Crypto)
Pricing
Pay per usage
Xeronance Realtime Market Data (BIST, VIOP, FX, Crypto)
Real-time quotes for Borsa Istanbul (BIST) equities, VIOP futures, BIST indices, US equities, FX pairs, precious metals, commodities, CFDs and crypto. No delay, no conflation.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Xeronance
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Features
Share
Xeronance Realtime Market Data
Real-time quotes for Borsa Istanbul (BIST), VIOP derivatives, FX pairs, precious metals, commodities, CFDs and crypto — roughly 2,070 instruments in one Actor.
No 15-minute delay. No conflation. No snapshot-every-N-seconds. A quote is published the moment the price changes.
Why this Actor exists
Turkish market data is badly served. Google Finance is unreliable for BIST, most global APIs delay quotes by 15 minutes, and many skip the Turkish market entirely. We built this feed for our own trading systems and opened it up.
Prices come straight from a professional terminal feed — not from a delayed aggregator and not scraped from a website.
Coverage
| Market | Count | Examples |
|---|---|---|
| US equities | 707 | AAPL:EDGX, TSLA:EDGX, NVDA:EDGX |
| BIST equities | 703 | GARAN, THYAO, ASELS |
| VIOP derivatives | 241 | F_XU0301226, F_USDTRY0127, F_XAUUSD1226 |
| Crypto | 191 | BTCUSDT:BNN, ETHUSDT:BNN |
| FX pairs | 169 | EURUSD, USDTRY, GBPJPY |
| Global index CFDs | 20 | DOW30F:CFD, GER30:CFD, NIKKEI225F:CFD, VIXF:CFD |
| Metals & commodities | 25 | XAUUSD, XAGUSD, XBRUSD, XTIUSD |
| Commodity CFDs | 2 | NATURALGAS:CFD, COPPERUS:CFD |
| Funds | 8 | ABE.FON, ARO.FON |
| Indices | 4 | XU100, XU030, XU050, USDX |
| Total | 2,070 |
Index CFDs cover the major global benchmarks: US (DOW30F, US500F,
N100F, RUT2000F), Europe (GER30F, CAC40F, FTSE100F, IBEX35F,
FTSEMIBF, SMIF, STOXX50F), Asia-Pacific (NIKKEI225F, HSIF,
ASXF, FTSEA50F), plus volatility (VIXF) and German bunds
(FGBL, FGBM).
Symbol names are case-insensitive. Use /v1/symbols on the REST API for the
full, current list.
Try it right now
The Actor comes with a demo key already filled in — just hit Start. No signup, no card, nothing to configure.
The demo key is limited to 5 symbols per request, which is enough to see the data flowing but not enough for production.
Getting your own key
👉 t.me/xeronancebot — send /start, pick a
plan, receive your key. Takes under a minute.
Input
| Field | Type | Description |
|---|---|---|
apiKey | string | Your Xeronance API key (starts with XR_live_) |
symbols | array | Symbols to fetch. Case-insensitive. |
pollSeconds | integer | 0 = single snapshot, then exit. Positive = repeat at this interval. |
maxIterations | integer | How many rounds in polling mode. 0 = unlimited. |
{"apiKey": "XR_live_...","symbols": ["GARAN", "THYAO", "EURUSD", "XAUUSD", "BTCUSDT:BNN"],"pollSeconds": 0,"maxIterations": 0}
Snapshot vs. continuous
pollSeconds: 0— fetch once, write the dataset, exit. Cheapest option; ideal for a scheduled task that runs every N minutes.pollSeconds: 60— keep running and collect every minute. Use withmaxIterationsto bound the run.
For sub-second updates, use the WebSocket endpoint directly rather than this Actor — Apify Actors are not designed for continuous streaming.
Output
One dataset row per symbol per round:
| Field | Description |
|---|---|
symbol | Symbol code |
category | shares, viop, forex, crypto, … |
description | Instrument name |
bid | Bid price. null if the symbol has not traded yet. |
ask | Ask price |
price | Alias of bid, kept so older integrations keep working |
change | Change versus previous close |
changePercent | Percent change versus previous close |
digits | Number of decimal places for this instrument |
quotedAt | When the price was set (ISO-8601, +03:00) |
quotedAtMs | Same, Unix milliseconds |
collectedAt | When this Actor fetched it (ISO-8601, +03:00) |
{"symbol": "GARAN","category": "shares","description": "GARANTI BANKASI","bid": 126.9,"ask": 126.9,"price": 126.9,"change": 0.4,"changePercent": 0.32,"digits": 2,"quotedAt": "2026-10-30T10:38:17.067+03:00","quotedAtMs": 1793345897067,"collectedAt": "2026-10-30T10:38:26.465+03:00"}
Behaviour worth knowing
| Situation | What happens |
|---|---|
| Symbol exists but has not traded today | Row is returned with bid/ask null |
bid and ask are equal | By design. The feed publishes the last traded price on both sides so you can apply your own spread. |
| Symbol does not exist | Skipped, logged as a warning, run still succeeds |
| Duplicate symbols in input | Deduplicated; they do not count against your plan limit |
| Plan symbol limit exceeded | Request rejected with a clear error naming your plan |
| Quota exhausted | Actor waits for the interval the API returns, then retries |
Symbols are fetched in batches of 50, so 200 symbols cost 4 API requests, not 200.
Plans
| Plan | Price | Symbols per request | Requests/day | Requests/min |
|---|---|---|---|---|
| Free | $0 | 10 | 200 | 60 |
| Basic | $19/mo | 50 | 10,000 | 120 |
| Pro | $49/mo | 200 | 100,000 | 600 |
| Diamond | $149/mo | 2,500 (all) | unlimited | 3,000 |
Annual billing: pay for 10 months, get 12.
Quotas reset at midnight Europe/Istanbul. Every API response carries
X-RateLimit-* headers so you can track usage before hitting a limit.
Diamond has no daily cap; the per-minute ceiling exists purely as abuse protection and no normal workload comes close to it.
Also available as
- REST API —
https://feedapi.xeronance.com(OpenAPI spec available) - WebSocket — streaming quotes, sub-second
- Google Sheets add-on — live prices in a spreadsheet
Contact & support
- WhatsApp: +44 7537 175 451
- Telegram: @xeronance
- API key bot: @xeronancebot
- Website: xeronance.com