Deriv API
Migration guide/Active symbols

Active symbols

Data

Retrieves a list of all currently active symbols (underlying markets upon which contracts are available for trading).

Quick comparison

AspectLegacyNewAction required
Endpoint
✅ Same
active_symbolsactive_symbolsNone
Auth Required
✅ Same
NoNoNone
Request Complexity
⚠️ Changed
9 parameters4 parametersRemove obsolete parameters

Breaking changes

1. Response field name changes

What Changed: Core symbol identification fields have been renamed in the response

  • symbolunderlying_symbol
  • symbol_typeunderlying_symbol_type

2. Display name fields removed

What Changed: All translated display name fields have been removed from New response:

  • display_name (removed)
  • market_display_name (removed)
  • subgroup_display_name (removed)
  • submarket_display_name (removed)

3. Spot price data removed

What Changed: Real-time spot price fields are no longer included:

  • spot (removed)
  • spot_age (removed)
  • spot_percentage_change (removed)
  • spot_time (removed)

4. Landing company and product type filtering removed

What Changed: Request parameters for filtering by landing company and product type removed:

  • landing_company (deprecated in Legacy, now removed)
  • landing_company_short (removed)
  • product_type (removed)
  • loginid (removed)

5. Barrier category filtering removed

What Changed: The barrier_category request parameter has been removed:

  • barrier_category (removed) - No longer possible to filter by: american, asian, euro_atm, euro_non_atm, non_financial, lookback, reset

6. Additional metadata fields removed

What Changed: Various metadata fields no longer available:

  • allow_forward_starting (removed)
  • exchange_name (removed)
  • delay_amount (removed)
  • intraday_interval_minutes (removed)
  • quoted_currency_symbol (removed)

Request structure

Legacy Request Example

1{
2  "active_symbols": "brief",
3  "product_type": "basic",  // ❌ Removed in New
4  "landing_company_short": "svg",  // ❌ Removed in New
5  "contract_type": ["CALL", "PUT"]
6}

New Request Example

1{
2  "active_symbols": "brief",
3  "contract_type": ["CALL", "PUT"]
4}

Response structure

Legacy Response Example

1{
2  "active_symbols": [
3    {
4      "allow_forward_starting": 1,  // ❌ Not in New
5      "close_only": 0,
6      "display_name": "EUR/USD",  // ❌ Not in New
7      "display_order": 1,
8      "exchange_is_open": 1,
9      "is_trading_suspended": 0,
10      "market": "forex",
11      "market_display_name": "Forex",  // ❌ Not in New
12      "pip": 0.0001,
13      "spot": 1.0850,  // ❌ Not in New
14      "spot_age": "2",  // ❌ Not in New
15      "subgroup": "major_pairs",
16      "submarket": "major_pairs",
17      "symbol": "frxEURUSD",  // ❌ Changed
18      "symbol_type": "forex"  // ❌ Changed
19    }
20  ],
21  "msg_type": "active_symbols"
22}

New Response Example

1{
2  "active_symbols": [
3    {
4      "close_only": 0,
5      "display_order": 1,
6      "exchange_is_open": 1,
7      "is_trading_suspended": 0,
8      "market": "forex",
9      "pip": 0.0001,
10      "pip_size": 0.0001,  // 🆕 New field
11      "subgroup": "major_pairs",
12      "submarket": "major_pairs",
13      "underlying_symbol": "frxEURUSD",  // 🆕 Replaces symbol
14      "underlying_symbol_type": "forex"  // 🆕 Replaces symbol_type
15    }
16  ],
17  "msg_type": "active_symbols"
18}

Code examples

Legacy Implementation

1async function getActiveSymbols() {
2  const request = {
3    active_symbols: "brief",
4    product_type: "basic",
5    landing_company_short: "svg"
6  };
7
8  ws.send(JSON.stringify(request));
9
10  ws.onmessage = (message) => {
11    const data = JSON.parse(message.data);
12    if (data.msg_type === "active_symbols") {
13      data.active_symbols.forEach(symbol => {
14        console.log(`Symbol: ${symbol.symbol}`);
15        console.log(`Type: ${symbol.symbol_type}`);
16        console.log(`Display: ${symbol.display_name}`);
17      });
18    }
19  };
20}

New Implementation

1async function getActiveSymbols() {
2  const request = {
3    active_symbols: "brief"
4  };
5
6  ws.send(JSON.stringify(request));
7
8  ws.onmessage = (message) => {
9    const data = JSON.parse(message.data);
10    if (data.msg_type === "active_symbols") {
11      data.active_symbols.forEach(symbol => {
12        console.log(`Symbol: ${symbol.underlying_symbol}`);
13        console.log(`Type: ${symbol.underlying_symbol_type}`);
14        // Display name no longer available
15      });
16    }
17  };
18}