# Instrument names across broker APIs

Independent and unofficial. Not affiliated with or endorsed by any broker or platform named here. Educational only: nothing here is advice, and nothing here recommends a broker or a trade.

This is the markdown version of https://openbrokerapi.com/guides/instrument-names-across-apis, written from the same records as that page.

Risk warning: CFDs and spread bets are complex instruments and come with a high risk of losing money rapidly due to leverage. You can lose money on these products, and each provider publishes its own loss figure under FCA rules. You should consider whether you understand how they work and whether you can afford to take the high risk of losing your money. Automated and API trading can amplify losses through bugs, connectivity failures and runaway orders.

Every API has its own identifier for a market. This page shows what 9 APIs call theirs, in the words of the records on this site, and why a single symbol map across them is hard to build.

- Checked: 2026-10-12

## The problem

You know the market you want by an everyday name. An API does not. It wants its own identifier, exactly as it issued it, and it refuses anything else. The identifier is found by asking the API, usually through a search call, and it is then passed to every call that reads a price or sends an order.

The sections below are in order of name. The order is not a ranking and nothing here recommends a broker. Each row is one record: an endpoint, one of its parameters or an error code, with the page it was read on. Nothing is added to the record's words.

## Capital.com: epic

The parameter the Capital.com records name the market by is called epic. This is what the records say about it.

- [GET /api/v1/markets](https://openbrokerapi.com/brokers/capital-com/endpoints/markets): Search markets by term or fetch up to 50 epics at once. With no query it returns every market.
  - Status: verified. Source: [open-api.capital.com](https://open-api.capital.com/), checked 2026-10-12.
- [epic, a body parameter of POST /api/v1/positions](https://openbrokerapi.com/brokers/capital-com/endpoints/post-positions): Instrument epic, for example from GET /api/v1/markets.
  - Status: verified. Source: [open-api.capital.com](https://open-api.capital.com/), checked 2026-10-12.
- [Error error.not-found.epic: what the record says to do](https://openbrokerapi.com/errors/capital-com/not-found-epic): Search with GET /api/v1/markets?searchTerm first and use the returned epic exactly.
  - Status: verified. Source: [github.com](https://github.com/capital-com-sv/capital-api-postman/blob/main/capital.collection.json), checked 2026-09-18.

[The Capital.com record](https://openbrokerapi.com/brokers/capital-com)

## cTrader

No endpoint record is held here for cTrader, so there is no parameter to show. This is what the other records say.

- [Error 114: what the record says it means](https://openbrokerapi.com/errors/ctrader/symbol-not-found): The symbol does not exist for this account.
  - Status: verified. Source: [help.ctrader.com](https://help.ctrader.com/open-api/model-messages/), checked 2026-09-19.
- [Error 114: what the record says to do](https://openbrokerapi.com/errors/ctrader/symbol-not-found): Use symbol IDs from ProtoOASymbolsListReq for that account; IDs differ between brokers.
  - Status: verified. Source: [help.ctrader.com](https://help.ctrader.com/open-api/model-messages/), checked 2026-09-19.

No endpoint or message record for cTrader is held here, so how a symbol id is requested is recorded only in the error record above.

[The cTrader record](https://openbrokerapi.com/platforms/ctrader)

## eToro: instrumentId

The parameter the eToro records name the market by is called instrumentId. This is what the records say about it.

- [instrumentId, a body parameter of POST /api/v2/trading/execution/demo/orders](https://openbrokerapi.com/brokers/etoro/endpoints/demo-create-order): eToro instrument ID. For open orders give exactly one of instrumentId or symbol.
  - Status: verified. Source: [api-portal.etoro.com](https://api-portal.etoro.com/api-reference/trading--demo/create-an-order.md), checked 2026-10-12.
- [symbol, a body parameter of POST /api/v2/trading/execution/demo/orders](https://openbrokerapi.com/brokers/etoro/endpoints/demo-create-order): Ticker symbol, as the alternative to instrumentId.
  - Status: verified. Source: [api-portal.etoro.com](https://api-portal.etoro.com/api-reference/trading--demo/create-an-order.md), checked 2026-10-12.
- [GET /api/v1/market-data/instruments](https://openbrokerapi.com/brokers/etoro/endpoints/instrument-display-data): Returns display metadata for instruments, such as name, type, exchange, full symbol and logo images. Filter by instrument, exchange, industry or instrument type IDs.
  - Status: verified. Source: [api-portal.etoro.com](https://api-portal.etoro.com/api-reference/market-data/get-instrument-display-data.md), checked 2026-10-12.

[The eToro record](https://openbrokerapi.com/brokers/etoro)

## IG: epic

The parameter the IG records name the market by is called epic. This is what the records say about it.

- [GET /markets](https://openbrokerapi.com/brokers/ig/endpoints/markets): Search markets by free text. Returns epics you then feed into every other call.
  - Status: verified. Source: [labs.ig.com](https://labs.ig.com/reference/markets-searchterm.html), checked 2026-10-12.
- [epic, a body parameter of POST /positions/otc](https://openbrokerapi.com/brokers/ig/endpoints/post-positions-otc): Instrument epic, for example IX.D.FTSE.DAILY.IP.
  - Status: verified. Source: [labs.ig.com](https://labs.ig.com/reference/positions-otc.html), checked 2026-10-12.
- [GET /markets/{epic}](https://openbrokerapi.com/brokers/ig/endpoints/markets-by-epic): Full market details for one epic: instrument, dealing rules (minimum size, stop distances) and snapshot.
  - Status: verified. Source: [labs.ig.com](https://labs.ig.com/reference/markets-epic.html), checked 2026-10-12.
- [Error error.public-api.epic-not-found: what the record says it means](https://openbrokerapi.com/errors/ig/epic-not-found): The epic in the request was not found.
  - Status: verified. Source: [labs.ig.com](https://labs.ig.com/reference/markets.html), checked 2026-10-09.

[The IG record](https://openbrokerapi.com/brokers/ig)

## Interactive Brokers: conid

The parameter the Interactive Brokers records name the market by is called conid. This is what the records say about it.

- [GET /iserver/secdef/search](https://openbrokerapi.com/brokers/ibkr/endpoints/secdef-search): Finds contracts for a symbol and returns their contract IDs (conid), which every market data and order call needs.
  - Status: verified. Source: [interactivebrokers.com](https://www.interactivebrokers.com/docs/web-api/api-reference/trading/trading-contracts/get-contract-symbols), checked 2026-09-18.
- [orders\[\].conid, a body parameter of POST /iserver/account/{accountId}/orders](https://openbrokerapi.com/brokers/ibkr/endpoints/place-order): IB contract ID of the instrument. Find it with GET /iserver/secdef/search.
  - Status: verified. Source: [interactivebrokers.com](https://www.interactivebrokers.com/docs/web-api/api-reference/trading/trading-orders/submit-new-order), checked 2026-09-18.
- [GET /iserver/contract/{conid}/info](https://openbrokerapi.com/brokers/ibkr/endpoints/contract-info): Full contract details for a conid: symbol, instrument type, currency, exchange, trading class and whether it can be smart routed.
  - Status: verified. Source: [interactivebrokers.com](https://www.interactivebrokers.com/docs/web-api/api-reference/trading/trading-contracts/get-instrument-info), checked 2026-09-18.

[The Interactive Brokers record](https://openbrokerapi.com/brokers/ibkr)

## MetaTrader 4

No endpoint record is held here for MetaTrader 4, so there is no parameter to show. This is what the other records say.

- [Error 4106: what the record says it means](https://openbrokerapi.com/errors/mt4/4106-err-unknown-symbol): "Unknown symbol" is MetaQuotes' whole description of this code. It is an MQL4 runtime error code, returned by GetLastError().
  - Status: verified. Source: [docs.mql4.com](https://docs.mql4.com/constants/errorswarnings/errorcodes), checked 2026-10-09.

Symbol names that carry a broker's own suffix are not recorded here.

[The MetaTrader 4 record](https://openbrokerapi.com/platforms/metatrader-4)

## MetaTrader 5

No endpoint record is held here for MetaTrader 5, so there is no parameter to show. This is what the other records say.

- [Error 4301: what the record says it means](https://openbrokerapi.com/errors/mt5/4301-err-market-unknown-symbol): "Unknown symbol" is MetaQuotes' whole description of this code. It is an MQL5 runtime error code, returned by GetLastError(). The vendor lists it under the heading "MarketInfo".
  - Status: verified. Source: [mql5.com](https://www.mql5.com/en/docs/constants/errorswarnings/errorcodes), checked 2026-10-09.
- [Error 5301: what the record says it means](https://openbrokerapi.com/errors/mt5/5301-err-custom-symbol-wrong-name): The name of the custom symbol is invalid. The vendor says a name may contain only Latin letters without punctuation, spaces or special characters, apart from the full stop, underscore, ampersand and hash, and recommends against the characters used in file paths and wildcards. It is an MQL5 runtime error code, returned by GetLastError(). The vendor lists it under the heading "Custom Symbols".
  - Status: verified. Source: [mql5.com](https://www.mql5.com/en/docs/constants/errorswarnings/errorcodes), checked 2026-10-09.
- MetaQuotes describes the symbols_get function of the Python package in these words: "Get all financial instruments from the MetaTrader 5 terminal."
  - Status: verified. Source: [MQL5 reference: symbols_get](https://www.mql5.com/en/docs/python_metatrader5/mt5symbolsget_py), checked 2026-10-12.

Symbol names that carry a broker's own suffix are not recorded here. No vendor page opened for this guide states how a broker names or suffixes its symbols, so nothing is said about it.

[The MetaTrader 5 record](https://openbrokerapi.com/platforms/metatrader-5)

## OANDA: instrument

The parameter the OANDA records name the market by is called instrument. This is what the records say about it.

- [instrument, a path parameter of GET /v3/instruments/{instrument}/candles](https://openbrokerapi.com/brokers/oanda/endpoints/candles): Instrument name with an underscore.
  - Status: unverified. Source: [raw.githubusercontent.com](https://raw.githubusercontent.com/oanda/v20-openapi/master/json/v20.json), checked 2026-10-12.
- [GET /v3/accounts/{accountID}/instruments](https://openbrokerapi.com/brokers/oanda/endpoints/instruments): Instruments this account can trade, with precision, pip location and margin rate.
  - Status: verified. Source: [developer.oanda.com](https://developer.oanda.com/rest-live-v20/account-ep/), checked 2026-10-12.
- [instruments, a query parameter of GET /v3/accounts/{accountID}/pricing](https://openbrokerapi.com/brokers/oanda/endpoints/pricing): Comma separated instrument names.
  - Status: verified. Source: [developer.oanda.com](https://developer.oanda.com/rest-live-v20/pricing-ep/), checked 2026-10-12.

[The OANDA record](https://openbrokerapi.com/brokers/oanda)

## Saxo: Uic

The parameter the Saxo records name the market by is called Uic. This is what the records say about it.

- [Uic, a path parameter of GET /ref/v1/instruments/details/{Uic}/{AssetType}](https://openbrokerapi.com/brokers/saxo/endpoints/instrument-details): Universal Instrument Code of the instrument.
  - Status: verified. Source: [developer.saxo](https://www.developer.saxo/openapi/referencedocs/ref/v1/instruments/get__ref__details_uic_assettype), checked 2026-10-12.
- [AssetType, a path parameter of GET /ref/v1/instruments/details/{Uic}/{AssetType}](https://openbrokerapi.com/brokers/saxo/endpoints/instrument-details): Asset type of the instrument, for example Stock or FxSpot.
  - Status: verified. Source: [developer.saxo](https://www.developer.saxo/openapi/referencedocs/ref/v1/instruments/get__ref__details_uic_assettype), checked 2026-10-12.
- [GET /ref/v1/instruments](https://openbrokerapi.com/brokers/saxo/endpoints/instruments-search): Searches Saxo's instrument universe by keyword, asset type, exchange or Uic and returns summary rows. Use it to find the Uic you need for prices, charts and orders.
  - Status: verified. Source: [developer.saxo](https://www.developer.saxo/openapi/referencedocs/ref/v1/instruments/get__ref), checked 2026-10-12.

[The Saxo record](https://openbrokerapi.com/brokers/saxo)

## Not recorded here

No record on this site says how these APIs name a market, so they are left out above. That is a gap in this dataset. It says nothing either way about the API.

- [Axi](https://openbrokerapi.com/brokers/axi): not recorded here
- [Bitget](https://openbrokerapi.com/brokers/bitget): not recorded here
- [CMC Markets](https://openbrokerapi.com/brokers/cmc-markets): not recorded here
- [Deriv](https://openbrokerapi.com/brokers/deriv): not recorded here
- [Dukascopy](https://openbrokerapi.com/brokers/dukascopy): not recorded here
- [Exness](https://openbrokerapi.com/brokers/exness): not recorded here
- [FOREX.com / StoneX Trading (City Index)](https://openbrokerapi.com/brokers/forex-com-city-index): not recorded here
- [FXCM](https://openbrokerapi.com/brokers/fxcm): not recorded here
- [FxPro](https://openbrokerapi.com/brokers/fxpro): not recorded here
- [Pepperstone](https://openbrokerapi.com/brokers/pepperstone): not recorded here
- [Swissquote](https://openbrokerapi.com/brokers/swissquote): not recorded here
- [ThinkMarkets](https://openbrokerapi.com/brokers/thinkmarkets): not recorded here
- [Tickmill](https://openbrokerapi.com/brokers/tickmill): not recorded here
- [Trading 212](https://openbrokerapi.com/brokers/trading-212): not recorded here
- [XTB](https://openbrokerapi.com/brokers/xtb): not recorded here
- [DXtrade APIs](https://openbrokerapi.com/platforms/dxtrade): not recorded here
- [Match-Trader Platform API](https://openbrokerapi.com/platforms/match-trader): not recorded here
- [MetaApi](https://openbrokerapi.com/platforms/metaapi): not recorded here
- [MetaCopier](https://openbrokerapi.com/platforms/metacopier): not recorded here
- [TradeLocker API](https://openbrokerapi.com/platforms/tradelocker): not recorded here

## Why a universal symbol map is hard

It is tempting to keep one table that turns a market's everyday name into the right identifier for each API. This page does not print one, because no record here holds one and a guessed entry would be worse than none. These are the reasons such a table is hard to build and harder to keep right.

- The identifiers are different kinds of thing. The parameters shown above are called epic (Capital.com), instrumentId (eToro), epic (IG), conid (Interactive Brokers), instrument (OANDA) and Uic (Saxo). One identifier can be a name a person can read, another a number that means nothing outside the API that issued it, and another only identifies a market together with a second field.
- An identifier has a scope. It may hold for every account, or only for one account, one broker or one server. Where a record above states a scope, that is the record's statement. Where none does, this site does not know the scope and you should not assume one.
- One market is often several instruments. The same underlying market can be offered as more than one product, with different contract sizes, currencies or expiry dates, and each has an identifier of its own. A map needs a rule for which one you mean.
- The lists change. Instruments are added, renamed and withdrawn, so a table that was right when it was written goes stale without telling you.
- A wrong entry does not always fail. An identifier that does not exist is refused. One that exists but is a different product is accepted, and the order goes to a market you did not intend.

## What to do instead

- Ask the API. Use its own search or instrument list call for the account you will trade on, and keep the identifier it returns.
- Keep your own table, per account, built from those replies, and store the date you built it.
- Read back the instrument's details before the first order, and check that the product, the currency and the size are what you expect.
- Do all of this on a demo account first.

- [Instrument search, broker by broker](https://openbrokerapi.com/endpoints/instrument-search)
- [Glossary: epic](https://openbrokerapi.com/glossary#epic)
- [Demo versus live](https://openbrokerapi.com/guides/demo-vs-live)
- [Broker API questions, answered from records](https://openbrokerapi.com/answers)
- [Every guide](https://openbrokerapi.com/guides)

## Licence and how to cite

The records behind this page are all rights reserved. This file is the page itself, at its own address, in another format. It is not part of the CC BY 4.0 downloads listed at https://openbrokerapi.com/data. Quote from it with a link to the page.

Cite as: Instrument names across broker APIs. Broker API Hub, https://openbrokerapi.com/guides/instrument-names-across-apis, newest check 2026-10-12.

Where you rely on a single figure, cite the source and the checked date printed beside it as well. Where this page and a broker's own documentation differ, the documentation wins.
