GET /v1/symbols

Returns the market symbols accessible to your API key. Use the symbol parameter to fetch a single symbol's full metadata, or omit it to list and search across all accessible symbols.


Request

GET /v1/symbols

Auth: Required

Query Parameters

ParameterTypeDefaultDescription
symbolstring—Compound key (e.g. WMMARKETS:ZERO:EURUSD). If provided, returns full metadata for that single symbol.
searchstring—Filter by display name (e.g. EUR returns all symbols containing "EUR")
limitinteger100Number of results to return (max: 1000)
offsetinteger0Pagination offset

Response — Single Symbol (?symbol=...)

{
  "symbol": "WMMARKETS:ZERO:EURUSD",
  "full_name": "WMMARKETS:ZERO:EURUSD",
  "display_symbol": "EUR/USD",
  "description": "EUR/USD — WM Markets Ltd",
  "exchange": "WMMARKETS",
  "type": "forex",
  "digits": 5,
  "price_scale": 100000,
  "feed": "WMMARKETS:ZERO",
  "supported_resolutions": ["1","5","10","15","30","60","120","240","1D","1W","1M"],
  "has_intraday": true,
  "has_daily": true,
  "has_weekly_and_monthly": true,
  "session": "24x7",
  "timezone": "UTC",
  "data_status": "streaming",
  "delay_seconds": 0
}

Response — Symbol List (no symbol param)

{
  "symbols": [
    {
      "symbol": "WMMARKETS:ZERO:EURUSD",
      "display_symbol": "EUR/USD",
      "description": "EUR/USD — WM Markets Ltd",
      "exchange": "WMMARKETS",
      "type": "forex",
      "digits": 5,
      "price_scale": 100000,
      "feed": "WMMARKETS:ZERO"
    }
  ],
  "total": 230,
  "limit": 100,
  "offset": 0
}

Symbol Fields

FieldTypeDescription
symbolstringCompound key — use this in /v1/history and WebSocket subscriptions
display_symbolstringHuman-readable name (e.g. EUR/USD)
descriptionstringFull description including broker
exchangestringBroker identifier
typestringforex, crypto, index, or cfd
digitsintegerDecimal places in the price
price_scaleintegerPrice scale factor (10^digits)
feedstringFeed key: BROKER:ACCOUNT
sessionstringTrading session — 24x7 (always open) or 24x5 (weekdays only)
data_statusstringstreaming (live) or endofday
delay_secondsintegerHow far the broker's own quotes for this symbol lag real time. 0 = real time. A few brokers quote exchange-listed shares from a delayed exchange feed — e.g. Alpari's single-stock CFDs (ALPARI:LIVE:APPLE_CFD …) are 900 (15 minutes). For such a symbol the newest candle is always about this far behind the clock, and tick timestamps (tick.t) carry the time the price is from, not the time it was delivered. Use this field to tell "delayed by design" from "stalled".

Examples

Search for symbols

# Find all symbols containing "USD"
curl -H "X-API-Key: fxd_your_key" \
  "https://api.pipdata.net/v1/symbols?search=USD&limit=20"

Paginate through all symbols

import requests

headers = {"X-API-Key": "fxd_your_key"}
BASE = "https://api.pipdata.net"

all_symbols = []
offset = 0
limit = 100

while True:
    r = requests.get(
        f"{BASE}/v1/symbols",
        headers=headers,
        params={"limit": limit, "offset": offset}
    )
    data = r.json()
    all_symbols.extend(data["symbols"])

    if offset + limit >= data["total"]:
        break
    offset += limit

print(f"Total symbols fetched: {len(all_symbols)}")

Fetch a specific symbol

curl -H "X-API-Key: fxd_your_key" \
  "https://api.pipdata.net/v1/symbols?symbol=WMMARKETS:ZERO:XAUUSD"

Error Codes

HTTP StatusCodeDescription
401UNAUTHORIZEDAPI key missing or invalid
403SYMBOL_NOT_PERMITTEDYour key does not have access to this feed
404SYMBOL_NOT_FOUNDSymbol does not exist
429RATE_LIMIT_EXCEEDEDToo many requests
500SERVER_ERRORInternal error