TickAtlas
GET /v1/quote

Quotes

Retrieve real-time bid/ask prices with sub-second freshness. Use the single-quote endpoint for live price feeds and the bulk endpoint to value an entire portfolio in one call. Enable multi-broker sources to compare spreads across providers — a critical edge for execution-sensitive strategies.

GET /v1/quote

Single Symbol Live Quote

Returns the latest bid, ask, spread, and source for a single trading symbol. Data is served from a 2-second Redis cache, so consecutive calls within that window return the same snapshot with near-zero latency.

Parameters

Parameter Type Required Description
symbolstringYesTrading symbol (e.g., EURUSD, XAUUSD, BTCUSD). Canonical names are resolved automatically across brokers.
include_sourcesbooleanNoWhen true, the response includes quotes from every connected broker source along with best bid, best ask, and best spread. Default: false.
sourcestringNoForce a specific broker source (e.g., ICMarkets, Pepperstone). Useful when you need pricing from a particular liquidity provider.

Example Request

cURL
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://tickatlas.com/v1/quote?symbol=XAUUSD"

Success Response

200 OK
{
  "success": true,
  "data": {
    "symbol": "XAUUSD",
    "bid": 2341.52,
    "ask": 2341.87,
    "spread": 0.35,
    "spread_pips": 35.0,
    "timestamp": "2026-04-04T14:23:01Z",
    "source": "ICMarkets"
  }
}

Multi-Broker Response (include_sources=true)

When you enable multi-broker sources, the API aggregates quotes from every broker terminal connected for that symbol. The response adds best_bid, best_ask, and best_spread fields calculated across all sources, plus a full sources array so you can see exactly what each broker is quoting.

This is particularly valuable for traders who route orders to multiple brokers. By comparing live spreads in real time, you can identify which provider currently offers the tightest pricing and route accordingly — potentially saving significant cost over thousands of trades.

cURL
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://tickatlas.com/v1/quote?symbol=XAUUSD&include_sources=true"
200 OK
{
  "success": true,
  "data": {
    "symbol": "XAUUSD",
    "bid": 2341.52,
    "ask": 2341.87,
    "spread": 0.35,
    "spread_pips": 35.0,
    "best_bid": 2341.55,
    "best_ask": 2341.82,
    "best_spread": 0.27,
    "source_count": 3,
    "timestamp": "2026-04-04T14:23:01Z",
    "sources": [
      {
        "broker": "ICMarkets",
        "bid": 2341.52,
        "ask": 2341.87,
        "spread": 0.35,
        "updated": "2026-04-04T14:23:01Z"
      },
      {
        "broker": "Pepperstone",
        "bid": 2341.55,
        "ask": 2341.82,
        "spread": 0.27,
        "updated": "2026-04-04T14:23:00Z"
      },
      {
        "broker": "Exness",
        "bid": 2341.48,
        "ask": 2341.85,
        "spread": 0.37,
        "updated": "2026-04-04T14:22:59Z"
      }
    ]
  }
}
POST /v1/quotes Standard (1x)

Bulk Quotes

Fetch live quotes for up to 100 symbols in a single request. Instead of making individual calls per symbol, send one POST with your full watchlist and receive all prices back at once. This dramatically reduces both latency and quota consumption for portfolio-level operations.

Request Body (JSON)

Field Type Required Description
symbolsstring[]YesArray of trading symbols (max 100). Example: ["EURUSD", "GBPUSD", "XAUUSD"]
fieldsstring[]NoFilter response to specific fields. Options: bid, ask, spread, spread_pips, timestamp, source. Omit for all fields.

Example Request

cURL
curl -X POST \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"symbols": ["EURUSD", "GBPUSD", "XAUUSD"], "fields": ["bid", "ask", "spread"]}' \
  "https://tickatlas.com/v1/quotes"

Success Response

200 OK
{
  "success": true,
  "quotes": [
    {
      "symbol": "EURUSD",
      "bid": 1.08432,
      "ask": 1.08445,
      "spread": 0.00013
    },
    {
      "symbol": "GBPUSD",
      "bid": 1.29210,
      "ask": 1.29228,
      "spread": 0.00018
    },
    {
      "symbol": "XAUUSD",
      "bid": 2341.52,
      "ask": 2341.87,
      "spread": 0.35
    }
  ],
  "count": 3,
  "not_found": [],
  "timestamp": "2026-04-04T14:23:01Z"
}

Any symbols that could not be found are returned in the not_found array rather than causing the entire request to fail. This lets you handle missing data gracefully without retrying the whole batch.

Code Examples

Python

Python
import requests

API_KEY = "YOUR_API_KEY"
BASE = "https://tickatlas.com"
headers = {"X-API-Key": API_KEY}

# --- Single quote ---
resp = requests.get(f"{BASE}/v1/quote",
                    headers=headers,
                    params={"symbol": "XAUUSD"})
quote = resp.json()["data"]
print(f"{quote['symbol']}: {quote['bid']}/{quote['ask']} (spread {quote['spread_pips']} pips)")

# --- Single quote with multi-broker sources ---
resp = requests.get(f"{BASE}/v1/quote",
                    headers=headers,
                    params={"symbol": "XAUUSD", "include_sources": True})
data = resp.json()["data"]
print(f"Best spread: {data['best_spread']} across {data['source_count']} brokers")
for src in data["sources"]:
    print(f"  {src['broker']}: {src['bid']}/{src['ask']}")

# --- Bulk quotes ---
resp = requests.post(f"{BASE}/v1/quotes",
                     headers=headers,
                     json={"symbols": ["EURUSD", "GBPUSD", "XAUUSD"],
                           "fields": ["bid", "ask", "spread"]})
result = resp.json()
for q in result["quotes"]:
    print(f"{q['symbol']}: {q['bid']}/{q['ask']}")
if result["not_found"]:
    print(f"Not found: {result['not_found']}")

JavaScript

JavaScript
const API_KEY = "YOUR_API_KEY";
const BASE = "https://tickatlas.com";
const headers = { "X-API-Key": API_KEY };

// --- Single quote ---
const singleResp = await fetch(
  `${BASE}/v1/quote?symbol=XAUUSD`,
  { headers }
);
const { data: quote } = await singleResp.json();
console.log(`${quote.symbol}: ${quote.bid}/${quote.ask}`);

// --- Multi-broker comparison ---
const sourcesResp = await fetch(
  `${BASE}/v1/quote?symbol=XAUUSD&include_sources=true`,
  { headers }
);
const { data } = await sourcesResp.json();
console.log(`Best spread: ${data.best_spread} across ${data.source_count} brokers`);
data.sources.forEach(s =>
  console.log(`  ${s.broker}: ${s.bid}/${s.ask} (spread ${s.spread})`)
);

// --- Bulk quotes ---
const bulkResp = await fetch(`${BASE}/v1/quotes`, {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json" },
  body: JSON.stringify({
    symbols: ["EURUSD", "GBPUSD", "XAUUSD"],
    fields: ["bid", "ask", "spread"]
  })
});
const result = await bulkResp.json();
result.quotes.forEach(q =>
  console.log(`${q.symbol}: ${q.bid}/${q.ask}`)
);

Use Cases

Live Price Feeds

Poll GET /v1/quote on a short interval to power real-time price tickers, trading dashboards, or heads-up displays. With a 2-second cache TTL, you get fresh data on every call without overloading the backend.

Portfolio Valuation

Use POST /v1/quotes to price an entire portfolio in a single request. Pass all your open positions and get back current bid/ask for every instrument at once — ideal for real-time P&L dashboards and risk calculations.

Multi-Broker Comparison

Enable include_sources=true to compare live spreads across all connected brokers. Identify the tightest spread in real time and route orders to the best provider. Over thousands of trades, even fractional pip savings compound into meaningful cost reduction.

Spread Monitoring

Track spread fluctuations throughout the trading session to identify optimal execution windows. Combine with the Spread Analysis endpoint for historical spread patterns and anomaly detection.