Trading basics

If you’re new to trading we recommend that you familiarise yourself with the basic concepts first. We have a wide range of articles and guides that cover important topics such as trading strategies and risk management which can be found here.

If you’re ready to start using our API, we highly recommend that you first understand how we treat our products in a development environment.

Market instruments

Market instruments are a fundamental aspect of our API. Each market instrument represents either a CFD or spread bet whose price is determined by an underlying asset or market. In the majority of cases you can take a long (buy) or short (sell) position on a market to take advantage of rising and falling prices. You can find more information on the markets you can trade at

Our instruments are identified by proprietary EPICs, such as IX.D.FTSE.CFD.IP - this CFD contract shows that it is the FTSE100 cash price market.

There are several ways to locate instruments using our API:

  • Searching using the /markets?q={searchTerm} API
  • Browsing using the /marketnavigation API, which mirrors the market finder navigation structure on our dealing platform
  • Using a watchlist that has either been created using the /watchlists API or our dealing platform

Please note that our markets are not always available to be traded. When retrieving market information on a particular product our API will also return the status of the market. Examples of market statuses are:

  • TRADEABLE - the market is open
  • CLOSED - we are not currently offering that market
A full list of market statuses along with descriptions can be found in the API reference.

Instrument prices

There are two ways to determine the latest bid (sell price)/offer (buy price) level for an instrument:

  • Subscribe to the instrument via the our streaming API. This is the recommended approach, allowing up to 40 concurrent subscriptions by default
  • Poll the /markets/{epic} API to obtain a regular market snapshot. This is not recommended as it will rapidly use up the API quota for an application

In addition, historical prices may be obtained via the /prices API.


Placing a trade involves opening a position. A basic position consists of:

  • An instrument and, if applicable, an expiry
  • An execution price level
  • A direction - buy or sell

Once opened, the position will then be either in profit or loss, depending on the market movement of the underlying instrument. Positions are then closed in order to realise any profit or loss.

Positions can either be opened immediately via the /positions API, or with conditional, working orders (via the /workingorders API) which only trigger when the desired price level is met. Positions will generally be created as market orders, where we will determine the appropriate execution price level when the position is placed. For more information about the different kinds of order types please visit the API order types section.

Confirming trades

Trade confirmation is done in two phases:

  • Acknowledgement- a deal reference is returned via the /positions/otc API when an order is placed
  • Confirmation - a deal identifier is received by subscribing to the TRADES:CONFIRMS Streaming API message (recommended), or by polling the /confirms REST API
Most orders are usually executed within a few milliseconds but it means the confirm may not be available immediately if there is a delay. Please also note the confirm is only available up to 1 minute via the REST API.

Trade history

Historical trade and account activity can be viewed via the /history/transactions and /history/activity APIs.

Instrument expiry

Some of our CFD and spread bet instruments have an associated expiry (or period). This is the date at which the instrument will automatically close, eg DEC-14. CFDs that do not expirehave an expiry of '-'.

When a market expires it will settle (close) based on the price of the underlying asset. You can instruct us to roll a product over which will result in your existing position being closed and automatically reopened with the next available expiry date, while realising any running profit or loss.

Market research

In addition to an EPIC, every instrument has an associated market group identifier, eg FT100. This typically refers to the underlying real-world instrument from which the IG instrument was derived. Market group identifiers are used by the research APIs such as /clientsentiment to provide contextual market information.

An instrument's market group may be determined via the /markets/{epic} API.

If you need more information please refer to the reference, glossary and support sections.