MENU Navbar
Logo
Third party data has moved to IEX Cloud. Get started for free.

Getting Started

examples => `You'll find code ${examples} here.`

The IEX API is a set of services offered by The Investors Exchange (IEX) to provide access to data from the Exchange to developers and engineers for free.

  1. Read the terms.
  2. Read the manual and start building.
  3. Attribute properly.

The IEX API removed all non-IEX data in June 2019 - the list of endpoints that were deprecated can be found here. IEX data continues to be available on the IEX API. Data from third-party data sources are currently available on IEX Cloud, a new platform from IEX Group that is separate from the Exchange.

Reference Data

IEX Market Data

IEX Stats

Markets

Terms

By using the IEX API, you agree to our terms.

Before we begin

Want to help run this api and help change the finance industry for the better? We’re Hiring!

Attribution

If you redistribute our API data:

  1. Cite IEX using the following text and link: “Data provided for free by IEX. View IEX’s Terms of Use.”

Additionally, if you display our TOPS price data, cite “IEX Real-Time Price” near the price.

Support

If you find any issues with our API or have any questions, please file an issue at Github

Authentication

The IEX API is currently open and does not require authentication to access its data.

Endpoints

SSL

We provide a valid, signed certificate for our API methods. Be sure your connection library supports HTTPS with the SNI extension.

HTTP methods

The IEX API only supports GET requests at this time.

Parameters

Filter results

All HTTP request endpoints support a filter parameter to return a subset of data. Pass a comma-delimited list of field names to filter. Field names are case-sensitive and are found in the Reference section of each endpoint.

Example: ?filter=symbol,volume,lastSalePrice will return only the three fields specified.

WebSockets

WebSockets example that shows a connection to the tops channel and a subscribtion to snap,fb,aig+ topics

// Import socket.io with a connection to a channel (i.e. tops)
const socket = require('socket.io-client')('https://ws-api.iextrading.com/1.0/tops')

// Listen to the channel's messages
socket.on('message', message => console.log(message))

// Connect to the channel
socket.on('connect', () => {

  // Subscribe to topics (i.e. appl,fb,aig+)
  socket.emit('subscribe', 'snap,fb,aig+')

  // Unsubscribe from topics (i.e. aig+)
  socket.emit('unsubscribe', 'aig+')
})

// Disconnect from the channel
socket.on('disconnect', () => console.log('Disconnected.'))

WebSocket support is limited at this time to Node.js server clients and socket.io browser clients. We use socket.io for our WebSocket server. The WebSocket examples in our documentation assume a socket.io browser client is being used. We’re planning to rewrite our WebSocket server for broader support.

Uptime

The IEX API cannot guarantee 100% uptime, but we strive to be highly available. If we do have downtime, we’ll tweet information from @IEXstatus.

Usage

To provide the best experience for all our users, we monitor for suspicious activity and overload. We reserve the right to revoke access to anyone who abuses the IEX API. We throttle endpoints by IP, but you should be able to achieve over 100 requests per second.

Roadmap

We are always working to improve the IEX API. Below is a list of planned enhancements for future releases. We may add or remove items at any time. If you have suggestions or if any listed items are critical for your project, please create an issue at Github.

Unofficial libraries and integrations

Below is a list of known unofficial IEX API libraries and integrations. If you’d like to have your library, integration, or app added, email us at api@iextrading.com

Language URL
C++ IEX_CPP_API
C# IEXTrading API
Excel Stock Connector by Michael Saunders
2Investing
Go go-iex
Haskell stocks
HTML Stocks!
Java IEXTrading4j
KDB iex_q
Perl Finance::Quote::IEX
Python iexfinance
iex-api-python
pyEX
iex_data
pandas-datareader
PyPI IEX
IEX with Bokeh
.NET IEXTradingApi
NodeJS iex-api
PHP iex-trading
R IEX API for R
React ticker-react
iex-api
Ruby iex-ruby-client
Rust iex-rs

Stocks

Stock data is now available on IEX Cloud.

IEX Cloud is a flexible financial data platform connecting a wide array of developers with curated financial data. On June 1, 2019, IEX Group removed all non-IEX data, and certain functionality, according to the schedule. IEX Cloud, a non-Exchange platform, will continue to provide access to third-party data sources.

Reference Data

For an example of an app that’s using ref data, see our eligible symbols reference.

Symbols

HTTP request example

GET /ref-data/symbols

The above example will return JSON with the following keys

[
  {
    "symbol": "A",
    "name": "AGILENT TECHNOLOGIES INC",
    "date": "2017-04-19",
    "isEnabled": true,
    "type": "cs",
  },
  {
    "symbol": "AA",
    "name": "ALCOA CORP",
    "date": "2017-04-19",
    "isEnabled": true,
    "type": "cs",
  }
]

This call returns an array of symbols IEX supports for trading. This list is updated daily as of 7:45 a.m. ET. Symbols may be added or removed by IEX after the list was produced.

HTTP request

/ref-data/symbols

Parameters

Parameter Details
format • Parameter is optional
• Value can only be csv
• When parameter is not present, format defaults to JSON

Response

Key Description
symbol refers to the symbol represented in Nasdaq Integrated symbology (INET).
name refers to the name of the company or security.
date refers to the date the symbol reference data was generated.
isEnabled will be true if the symbol is enabled for trading on IEX.
type refers to the common issue type (AD - ADR
RE - REIT
CE - Closed end fund
SI - Secondary Issue
LP - Limited Partnerships
CS - Common Stock
ET - ETF)

IEX Corporate Actions

HTTP request example

GET /ref-data/daily-list/symbol-directory

The above example will return JSON with the following keys

[
  {
    "RecordID": " CA20171108153808144",
    "DailyListTimestamp": "2017-11-08T17:00:00",
    "EffectiveDate": "2017-11-10",
    "IssueEvent": "AA",
    "CurrentSymbolinINETSymbology": "ZEXIT-",
    "CurrentSymbolinCQSSymbology": "ZEXITp",
    "CurrentSymbolinCMSSymbology": "ZEXIT PR",
    "NewSymbolinINETSymbology": "",
    "NewSymbolinCQSSymbology": "",
    "NewSymbolinCMSSymbology": "",
    "CurrentSecurityName": "ZEXIT Preffered Stock",
    "NewSecurityName": "",
    "CurrentCompanyName": "ZEXIT Test Company",
    "NewCompanyName": "",
    "CurrentListingCenter": "",
    "NewListingCenter": "V",
    "DelistingReason": "",
    "CurrentRoundLotSize": "100",
    "NewRoundLotSize": "",
    "CurrentLULDTierIndicator": "0",
    "NewLULDTierIndicator": "",
    "ExpirationDate": "0",
    "SeparationDate": "0",
    "SettlementDate": "0",
    "MaturityDate": "0",
    "RedemptionDate": "0",
    "CurrentFinancialStatus": "0",
    "NewFinancialStatus": "",
    "WhenIssuedFlag": "N",
    "WhenDistributedFlag": "N",
    "IPOFlag": "N",
    "NotesforEachEntry": "New preferred ZIEXT security",
    "RecordUpdateTime": "2017-11-08T16:34:43"
  },
  {...}
]

This call returns an array of new issues, symbol and name changes, and deleted issues, as well as new firms, name changes, and deleted firms for IEX-listed securities.

Records are added once known by the Exchange and will be removed when the Effective Date is in the past.

Updates are posted once per hour from 8:00 a.m. to 6:00 p.m. ET on each trading day

HTTP request

Options

Range Description Source
date Specific date Daily list data for a specified date in the format YYYYMMDD,if available, or sample. If sample, a sample file will be returned

Parameters

Parameter Details
format • Parameter is optional
• Value can be csv or psv
• When parameter is not present, format defaults to JSON
token • Parameter is optional
• Value is the API token from your IEX user account
• If you have been permissioned for CUSIP information you’ll receive a CUSIP field, othewise data defaults to exclude CUSIP.

Response

Refer to the Daily list specification for futher details.

IEX Dividends

HTTP request example

GET /ref-data/daily-list/dividends

The above example will return JSON with the following keys

[
  {
    "RecordID": " DV20171108154436478",
    "DailyListTimestamp": "2017-11-08T17:00:00",
    "EventType": "CHANGE",
    "SymbolinINETSymbology": "ZEXIT",
    "SymbolinCQSSymbology": "ZEXIT",
    "SymbolinCMSSymbology": "ZEXIT",
    "SecurityName": "ZEXIT Common Stock",
    "CompanyName": "ZEXIT Test Company",
    "DeclarationDate": "2017-11-01",
    "AmountDescription": "fnl",
    "PaymentFrequency": "O",
    "ExDate": "2017-11-09",
    "RecordDate": "2017-11-13",
    "PaymentDate": "2017-11-17",
    "DividendTypeID": "XS",
    "StockAdjustmentFactor": "1.1",
    "StockAmount": ".1",
    "CashAmount": "0",
    "PostSplitShares": "0",
    "PreSplitShares": "0",
    "QualifiedDividend": "Y",
    "ExercisePriceAmount": "0",
    "ElectionorExpirationDate": "0",
    "GrossAmount": "0",
    "NetAmount": "0",
    "BasisNotes": "",
    "NotesforEachEntry": "ZEXIT is paying a 10% stock dividend",
    "RecordUpdateTime": "2017-11-08T16:48:47"
  },
  {...}
]

This call details upcoming dividend information and other corporate actions, such as stock splits, for IEX-listed securities.

Records are added once known by the Exchange. A new record with the same Record ID as a previously communicated record will appear when an existing record is being modified or deleted by the Exchange. All records will be removed each evening.

Updates are posted once per hour from 8:00 a.m. to 6:00 p.m. ET on each trading day

HTTP request

Options

Range Description Source
date Specific date Daily list data for a specified date in the format YYYYMMDD,if available, or sample. If sample, a sample file will be returned

Parameters

Parameter Details
format • Parameter is optional
• Value can be csv or psv
• When parameter is not present, format defaults to JSON
token • Parameter is optional
• Value is the API token from your IEX user account
• If you have been permissioned for CUSIP information you’ll receive a CUSIP field, othewise data defaults to exclude CUSIP.

Response

Refer to the Daily list specification for futher details.

IEX Next Day Ex Date

HTTP request example

GET /ref-data/daily-list/next-day-ex-date

The above example will return JSON with the following keys

[
  {
    "RecordID": " DV20171108154436478",
    "DailyListTimestamp": "2017-11-08T17:00:00",
    "ExDate": "2017-11-09",
    "SymbolinINETSymbology": "ZEXIT",
    "SymbolinCQSSymbology": "ZEXIT",
    "SymbolinCMSSymbology": "ZEXIT",
    "SecurityName": "ZEXIT Common Stock",
    "CompanyName": "ZEXIT Test Company",
    "DividendTypeID": "XS",
    "AmountDescription": "fnl",
    "PaymentFrequency": "O",
    "StockAdjustmentFactor": "1.1",
    "StockAmount": ".1",
    "CashAmount": "0",
    "PostSplitShares": "0",
    "PreSplitShares": "0",
    "QualifiedDividend": "Y",
    "ExercisePriceAmount": "0",
    "ElectionorExpirationDate": "0",
    "GrossAmount": "0",
    "NetAmount": "0",
    "BasisNotes": "",
    "NotesforEachEntry": "ZEXIT is paying a 10% stock dividend",
    "RecordUpdateTime": "2017-11-08T16:48:47"
  },
  {...}
]

This call provides advance notification of dividend declarations impacting IEX-listed securities.

Records are added at 8:00 a.m. ET one trading day before the specified Ex-Date. Records would have been communicated in the IEX Dividends Daily List when they were added or modified by the Exchange. Records are removed when Ex-Date is equal to today or when the record is deleted by the Exchange (in this case, a new record will appear in the IEX Dividends Daily List with an Event Type=DELETE for the affected Record ID).

Updates are posted once per hour from 8:00 a.m. to 6:00 p.m. ET on each trading day

HTTP request

Options

Range Description Source
date Specific date Daily list data for a specified date in the format YYYYMMDD,if available, or sample. If sample, a sample file will be returned

Parameters

Parameter Details
format • Parameter is optional
• Value can be csv or psv
• When parameter is not present, format defaults to JSON
token • Parameter is optional
• Value is the API token from your IEX user account
• If you have been permissioned for CUSIP information you’ll receive a CUSIP field, othewise data defaults to exclude CUSIP.

Response

Refer to the Daily list specification for futher details.

IEX Listed Symbol Directory

HTTP request example

GET /ref-data/daily-list/symbol-directory

The above example will return JSON with the following keys

[
  {
    "RecordID": "SD20171020161150890",
    "DailyListTimestamp": "2017-12-18T09:00:00",
    "SymbolinINETSymbology": "ZEXIT",
    "SymbolinCQSSymbology": "ZEXIT",
    "SymbolinCMSSymbology": "ZEXIT",
    "SecurityName": "ZEXIT Common Stock",
    "CompanyName": "ZEXIT Test Company",
    "TestIssue": "Y",
    "IssueDescription": "Common Stock",
    "IssueType": "C",
    "IssueSubType": "C",
    "SICCode": "5678",
    "TransferAgent": "American Stock Transfer",
    "FinancialStatus": "0",
    "RoundLotSize": "100",
    "PreviousOfficialClosingPrice": "10.00",
    "AdjustedPreviousOfficialClosingPrice": "10.00",
    "WhenIssuedFlag": "N",
    "WhenDistributedFlag": "N",
    "IPOFlag": "N",
    "FirstDateListed": "2017-09-15",
    "LULDTierIndicator": "1",
    "CountryofIncorporation": "USA",
    "LeveragedETPFlag": "N",
    "LeveragedETPRatio": "0",
    "InverseETPFlag": "N",
    "RecordUpdateTime": "2017-11-10T16:28:56"
  },
  {...}
]

This call returns an array of all IEX-listed securities and their corresponding data fields. The IEX-Listed Symbol Directory Daily List is initially generated and posted to the IEX website at 8:30 p.m. Eastern Time (ET) before each trading day, and then once per hour from 9 p.m. until 6 p.m. ET the following day.

HTTP request

Options

Range Description Source
date Specific date Daily list data for a specified date in the format YYYYMMDD,if available, or sample. If sample, a sample file will be returned

Parameters

Parameter Details
format • Parameter is optional
• Value can be csv or psv
• When parameter is not present, format defaults to JSON
token • Parameter is optional
• Value is the API token from your IEX user account
• If you have been permissioned for CUSIP information you’ll receive a CUSIP field, othewise data defaults to exclude CUSIP.

Response

Refer to the Daily list specification for futher details.

IEX Market Data

TOPS

HTTP request example

GET /tops?symbols=snap

WebSockets example (using socket.io)

const url = 'https://ws-api.iextrading.com/1.0/tops'
const socket = require('socket.io-client')(url)

socket.on('connect', () => {
  socket.emit('subscribe', 'snap')
})

The above examples will return JSON with the following keys

[
  {
    "symbol": "SNAP",
    "marketPercent": 0.00901,
    "bidSize": 200,
    "bidPrice": 110.94,
    "askSize": 100,
    "askPrice": 111.82,
    "volume": 177265,
    "lastSalePrice": 111.76,
    "lastSaleSize": 5,
    "lastSaleTime": 1480446905681,
    "lastUpdated": 1480446910557,
    "sector": "softwareservices",
    "securityType": "commonstock"
  },
  {
    "symbol": "FB",
    "marketPercent": 0.01465,
    "bidSize": 200,
    "bidPrice": 120.8,
    "askSize": 100,
    "askPrice": 122.5,
    "volume": 205208,
    "lastSalePrice": 121.41,
    "lastSaleSize": 100,
    "lastSaleTime": 1480446908666,
    "lastUpdated": 1480446923942,
    "sector": "softwareservices",
    "securityType": "commonstock"
  },
  {
    "symbol": "AIG+",
    "marketPercent": 0.04618,
    "bidSize": 0,
    "bidPrice": 0,
    "askSize": 0,
    "askPrice": 0,
    "volume": 3400,
    "lastSalePrice": 21.52,
    "lastSaleSize": 100,
    "lastSaleTime": 1480446206461,
    "lastUpdated": -1,
    "sector": "insurance",
    "securityType": "commonstock"
  }
]

TOPS provides IEX’s aggregated best quoted bid and offer position in near real time for all securities on IEX’s displayed limit order book. TOPS is ideal for developers needing both quote and trade data.

For an example of an app that’s using TOPS, see our TOPS viewer app.

HTTP request

WebSockets

Firehose functionality has moved to IEX Cloud.

Parameters

Parameter Details
symbols • Parameter is optional
• Value needs to be a comma-separated list of symbols (i.e SNAP,fb)
• When parameter is not present, request returns all symbols
format • Parameter is optional
• Value can only be csv
• When parameter is not present, format defaults to JSON

Our eligible symbol reference is updated daily. Use these symbols as values in your symbols parameter.

Response

Key Description
symbol refers to the stock ticker.
marketPercent refers to IEX’s percentage of the market in the stock.
bidSize refers to amount of shares on the bid on IEX.
bidPrice refers to the best bid price on IEX.
askSize refers to amount of shares on the ask on IEX.
askPrice refers to the best ask price on IEX.
volume refers to shares traded in the stock on IEX.
lastSalePrice refers to last sale price of the stock on IEX. (Refer to the attribution section above.)
lastSaleSize refers to last sale size of the stock on IEX.
lastSaleTime refers to last sale time in epoch time of the stock on IEX.
lastUpdated refers to the last update time of the data in milliseconds since midnight Jan 1, 1970 or -1. If the value is -1, IEX has not quoted the symbol in the trading day.
sector refers to the sector the security belongs to.
securityType refers to the common issue type.

Last

HTTP request example

GET /last?symbols=snap

WebSockets example (using socket.io)

const url = 'https://ws-api.iextrading.com/1.0/last'
const socket = require('socket.io-client')(url)

socket.on('connect', () => {
  socket.emit('subscribe', 'snap')
})

The above examples will return JSON with the following keys

[
  {
    "symbol": "SNAP",
    "price": 111.76,
    "size": 5,
    "time": 1480446905681
  },
  {
    "symbol": "FB",
    "price": 121.41,
    "size": 100,
    "time": 1480446908666
  },
  {
    "symbol": "AIG+",
    "price": 21.52,
    "size": 100,
    "time": 1480446206461
  }
]

Last provides trade data for executions on IEX. It is a near real time, intraday API that provides IEX last sale price, size and time. Last is ideal for developers that need a lightweight stock quote.

HTTP request

WebSockets

Subscribe to firehose to return all symbols.

Parameters

Parameter Details
symbols • Parameter is optional
• Value needs to be a comma-separated list of symbols (i.e SNAP,fb)
• When parameter is not present, request returns all symbols
format • Parameter is optional
• Value can only be csv
• When parameter is not present, format defaults to JSON
• Our eligible symbol reference is updated daily. Use these symbols as values in your symbols parameter.

Response

Key Description
symbol refers to the stock ticker.
price refers to last sale price of the stock on IEX. (Refer to the attribution section above.)
size refers to last sale size of the stock on IEX.
time refers to last sale time in epoch time of the stock on IEX.

HIST

HTTP request example

GET /hist?date=20170515

HTTP request example message

[
  {
    "link": "https://www.googleapis.com/download/storage/v1/b/iex/o/data%2Ffeeds%2F20170515%2F20170515_IEXTP1_DEEP1.0.pcap.gz?generation=1494944895386822&alt=media",
    "date": "20170515",
    "feed": "DEEP",
    "version": "1.0",
    "protocol": "IEXTP1",
    "size": "640265166"
  },
  {
    "link": "https://www.googleapis.com/download/storage/v1/b/iex/o/data%2Ffeeds%2F20170515%2F20170515_IEXTP1_TOPS1.5.pcap.gz?generation=1494945323138905&alt=media",
    "date": "20170515",
    "feed": "TOPS",
    "version": "1.5",
    "protocol": "IEXTP1",
    "size": "503325585"
  }
]

HIST will provide the output of IEX data products for download on a T+1 basis. Data will remain available for the trailing twelve months.

HTTP request

Parameters

Parameter Details
date • Parameter is optional
• Value needs to be in four-digit year, two-digit month, two-digit day format (YYYYMMDD) (i.e May 15, 2017 would be written as 20170515)
• When parameter is not present, request returns all available dates

Response

Key Type
link string
date string
feed string
version string
protocol string
size string

DEEP

HTTP request example

GET /deep?symbols=snap

HTTP request example message

{
  "symbol": "SNAP",
  "marketPercent": 0.00837,
  "volume": 359425,
  "lastSalePrice": 22.975,
  "lastSaleSize": 100,
  "lastSaleTime": 1494446394043,
  "lastUpdated": 1494446715171,
  "bids": [
      {
        "price": 19.13,
        "size": 650,
        "timestamp": 1494446715171
      }
  ],
  "asks": [
      {
        "price": 19.15,
        "size": 891,
        "timestamp": 1494446717238
      }
  ],
  "systemEvent": {
    "systemEvent": "R",
    "timestamp": 1494627280251
  },
  "tradingStatus": {
    "status": "T",
    "reason": "NA",
    "timestamp": 1494588017687
  },
  "opHaltStatus": {
    "isHalted": false,
    "timestamp": 1494588017687
  },
  "ssrStatus": {
    "isSSR": true,
    "detail": "N",
    "timestamp": 1494588094067
  },
  "securityEvent": {
    "securityEvent": "MarketOpen",
    "timestamp": 1494595800005
  },
  "trades": [
    {
      "price": 19.145,
      "size": 400,
      "tradeId": 517365191,
      "isISO": false,
      "isOddLot": false,
      "isOutsideRegularHours": false,
      "isSinglePriceCross": false,
      "isTradeThroughExempt": false,
      "timestamp": 1494619192193
    }
  ],
  "tradeBreaks": [
    {
      "price": 19.145,
      "size": 400,
      "tradeId": 517365191,
      "isISO": false,
      "isOddLot": false,
      "isOutsideRegularHours": false,
      "isSinglePriceCross": false,
      "isTradeThroughExempt": false,
      "timestamp": 1494619192193
    }
  ],
  "auction": {
      "auctionType": "Open",
      "pairedShares": 3600,
      "imbalanceShares": 600,
      "referencePrice": 1.05,
      "indicativePrice": 1.05,
      "auctionBookPrice": 1.05,
      "collarReferencePrice": 1.05,
      "lowerCollarPrice": 0.5,
      "upperCollarPrice": 1.6,
      "extensionNumber": 0,
      "startTime": "09:30:00",
      "lastUpdate": 1506706199025
  }
}

WebSockets example (using socket.io)

const url = 'https://ws-api.iextrading.com/1.0/deep'
const socket = require('socket.io-client')(url)

socket.on('connect', () => {
  socket.emit('subscribe', JSON.stringify({
    symbols: ['snap'],
    channels: ['deep'],
  }))
})

WebSockets example message

{
  "symbol": "SNAP",
  "marketPercent": 0.00837,
  "volume": 359425,
  "lastSalePrice": 22.975,
  "lastSaleSize": 100,
  "lastSaleTime": 1494446394043,
  "lastUpdated": 1494446715171,
  "bids": [
      {
        "price": 19.13,
        "size": 650,
        "timestamp": 1494446715171
      }
  ],
  "asks": [
      {
        "price": 19.15,
        "size": 891,
        "timestamp": 1494446717238
      }
  ],
  "systemEvent": {
    "systemEvent": "R",
    "timestamp": 1494627280251
  },
  "tradingStatus": {
    "status": "T",
    "reason": "NA",
    "timestamp": 1494588017687
  },
  "opHaltStatus": {
    "isHalted": false,
    "timestamp": 1494588017687
  },
  "ssrStatus": {
    "isSSR": true,
    "detail": "N",
    "timestamp": 1494588094067
  },
  "securityEvent": {
    "securityEvent": "MarketOpen",
    "timestamp": 1494595800005
  },
  "trades": [
    {
      "price": 19.145,
      "size": 400,
      "tradeId": 517365191,
      "isISO": false,
      "isOddLot": false,
      "isOutsideRegularHours": false,
      "isSinglePriceCross": false,
      "isTradeThroughExempt": false,
      "timestamp": 1494619192193
    }
  ],
  "tradeBreaks": [
    {
      "price": 19.145,
      "size": 400,
      "tradeId": 517365191,
      "isISO": false,
      "isOddLot": false,
      "isOutsideRegularHours": false,
      "isSinglePriceCross": false,
      "isTradeThroughExempt": false,
      "timestamp": 1494619192193
    }
],
  "auction": {
      "auctionType": "Open",
      "pairedShares": 3600,
      "imbalanceShares": 600,
      "referencePrice": 1.05,
      "indicativePrice": 1.05,
      "auctionBookPrice": 1.05,
      "collarReferencePrice": 1.05,
      "lowerCollarPrice": 0.5,
      "upperCollarPrice": 1.6,
      "extensionNumber": 0,
      "startTime": "09:30:00",
      "lastUpdate": 1506706199025
  }
}

DEEP is used to receive real-time depth of book quotations direct from IEX. The depth of book quotations received via DEEP provide an aggregated size of resting displayed orders at a price and side, and do not indicate the size or number of individual orders at any price level. Non-displayed orders and non-displayed portions of reserve orders are not represented in DEEP.

DEEP also provides last trade price and size information. Trades resulting from either displayed or non-displayed orders matching on IEX will be reported. Routed executions will not be reported.

HTTP request

WebSockets

Emit a subscribe event with a JSON-encoded object that includes the following two keys:

{symbols: [], channels: []}

Note: book channel returns messageTypes pricelevelbuy and pricelevelsell.

Parameters

Parameter Details
symbols • Parameter is required
• Value needs to be a single symbol (i.e snap)

Response

Key Type
symbol string
marketPercent number
volume number
lastSalePrice number
lastSaleSize number
lastSaleTime number
lastUpdated number
bids array
asks array
systemEvent object
tradingStatus object
opHaltStatus object
ssrStatus object
securityEvent object
trades array
tradeBreaks array
auction object

Book

HTTP request example

GET /deep/book?symbols=yelp

HTTP request example response

{
    "YELP": {
        "bids": [
            {
                "price": 63.09,
                "size": 300,
                "timestamp": 1494538496261
            },
        ],
        "asks": [
            {
                "price": 63.92,
                "size": 300,
                "timestamp": 1494538381896
            },
            {
                "price": 63.97,
                "size": 300,
                "timestamp": 1494538381885
            }
        ]
    }
}

WebSockets example (using socket.io)

const url = 'https://ws-api.iextrading.com/1.0/deep'
const socket = require('socket.io-client')(url)

socket.on('connect', () => {
  socket.emit('subscribe', JSON.stringify({
    symbols: ['yelp'],
    channels: ['book'],
  }))
})

pricelevelsell WebSockets message

{
  "symbol": "aapl",
  "messageType": "pricelevelsell",
  "data": [
    {
      "price": 170,
      "size": 100,
      "timestamp": 1494601920999
    },
    {
      "price": 160,
      "size": 200,
      "timestamp": 1494596130847
    }
  ]
}

pricelevelbuy WebSockets message

{
  "symbol": "aapl",
  "messageType": "pricelevelbuy",
  "data": [
    {
      "price": 73.63,
      "size": 143,
      "timestamp": 1494595800085
    },
    {
      "price": 153,
      "size": 3000,
      "timestamp": 1494595904630
    },
    {
      "price": 145,
      "size": 500,
      "timestamp": 1494596980550
    }
  ]
}

Book shows IEX’s bids and asks for given symbols.

HTTP request

WebSockets

Subscribe to the book channel.

Parameters

Parameter Details
symbols • Parameter is required
• Value needs to be a comma-separated list of symbols (i.e SNAP,fb)
• Maximum of 10 symbols

Response

Key Type
bids array
asks array
price number
size number
timestamp number

Trades

Trade report messages are sent when an order on the IEX Order Book is executed in whole or in part. DEEP sends a Trade report message for every individual fill.

HTTP request example

GET /deep/trades?symbols=snap

HTTP request example message

{
  "SNAP": [
    {
      "price": 156.1,
      "size": 100,
      "tradeId": 517341294,
      "isISO": false,
      "isOddLot": false,
      "isOutsideRegularHours": false,
      "isSinglePriceCross": false,
      "isTradeThroughExempt": false,
      "timestamp": 1494619192003
    }
  ]
}

WebSockets example (using socket.io)

const url = 'https://ws-api.iextrading.com/1.0/deep'
const socket = require('socket.io-client')(url)

socket.on('connect', () => {
  socket.emit('subscribe', JSON.stringify({
    symbols: ['snap'],
    channels: ['trades'],
  }))
})

WebSockets example message

{
  "symbol": "SNAP",
  "messageType": "trades",
  "data": [
    {
      "price": 156.1,
      "size": 100,
      "tradeId": 517341294,
      "isISO": false,
      "isOddLot": false,
      "isOutsideRegularHours": false,
      "isSinglePriceCross": false,
      "isTradeThroughExempt": false,
      "timestamp": 1494619192003
    }
  ]
}

HTTP request

WebSockets

Subscribe to the trades channel.

Parameters

Parameter Details
symbols • Parameter is required
• Value needs to be a comma-separated list of symbols (i.e SNAP,fb)
• Maximum of 10 symbols
last • Parameter is optional
• Value needs to be a number (i.e 5)
• Default is 20
• Maximum of 500

Response

Key Type
price number
size number
tradeId number
isISO boolean
isOddLot boolean
isOutsideRegularHours boolean
isSinglePriceCross boolean
isTradeThroughExempt boolean
timestamp number

System Event

HTTP request example

GET /deep/system-event

HTTP request example message

{
  "systemEvent": "S",
  "timestamp": 1494595800005
}

WebSockets example (using socket.io)

const url = 'https://ws-api.iextrading.com/1.0/deep'
const socket = require('socket.io-client')(url)

socket.on('connect', () => {
  socket.emit('subscribe', JSON.stringify({
    channels: ['systemevent'],
  }))
})

WebSockets example message

{
  "messageType": "systemevent",
  "data": {
    "systemEvent": "S",
    "timestamp": 1494595800005
  }
}

The System event message is used to indicate events that apply to the market or the data feed.

There will be a single message disseminated per channel for each System Event type within a given trading session.

HTTP request

WebSockets

Subscribe to the systemevent channel.

Response

Key Type Values
systemEvent string 'O' (Start of messages)
'S' (Start of system hours)
'R' (Start of regular market hours)
'M' (End of regular market hours)
'E' (End of system hours)
'C' (End of messages)
timestamp number

Trading Status

HTTP request example

GET /deep/trading-status?symbols=snap

HTTP request example message

{
  "SNAP": {
    "status": "T",
    "reason": " ",
    "timestamp": 1494588017674
  }
}

WebSockets example (using socket.io)

const url = 'https://ws-api.iextrading.com/1.0/deep'
const socket = require('socket.io-client')(url)

socket.on('connect', () => {
  socket.emit('subscribe', JSON.stringify({
    symbols: ['snap'],
    channels: ['tradingstatus'],
  }))
})

WebSockets example message

{
  "symbol": "SNAP",
  "messageType": "tradingstatus",
  "data": {
    "status": "T",
    "reason": " ",
    "timestamp": 1494588017674
  }
}

The Trading status message is used to indicate the current trading status of a security. For IEX-listed securities, IEX acts as the primary market and has the authority to institute a trading halt or trading pause in a security due to news dissemination or regulatory reasons. For non-IEX-listed securities, IEX abides by any regulatory trading halts and trading pauses instituted by the primary or listing market, as applicable.

IEX disseminates a full pre-market spin of Trading status messages indicating the trading status of all securities. In the spin, IEX will send out a Trading status message with “T” (Trading) for all securities that are eligible for trading at the start of the Pre-Market Session. If a security is absent from the dissemination, firms should assume that the security is being treated as operationally halted in the IEX Trading System.

After the pre-market spin, IEX will use the Trading status message to relay changes in trading status for an individual security. Messages will be sent when a security is:

*The paused and released into an Order Acceptance Period status will be disseminated for IEX-listed securities only. Trading pauses on non-IEX-listed securities will be treated simply as a halt.

HTTP request

WebSockets

Subscribe to the tradingstatus channel.

Parameters

Parameter Details
symbols • Parameter is required
• Value needs to be a comma-separated list of symbols (i.e SNAP,fb)
• Maximum of 10 symbols

Response

Key Type Values
status string 'H' Trading halted across all US equity markets
'O' Trading halt released into an Order Acceptance Period (IEX-listed securities only)
'P' Trading paused and Order Acceptance Period on IEX (IEX-listed securities only)
'T' Trading on IEX
reason string Trading Halt Reasons
'T1' Halt News Pending
'IPO1' IPO/New Issue Not Yet Trading
'IPOD' IPO/New Issue Deferred
'MCB3' Market-Wide Circuit Breaker Level 3 – Breached
'NA' Reason Not Available

Order Acceptance Period Reasons
'T2' Halt News Dissemination
'IPO2' IPO/New Issue Order Acceptance Period
'IPO3' IPO Pre-Launch Period
'MCB1' Market-Wide Circuit Breaker Level 1 – Breached
'MCB2' Market-Wide Circuit Breaker Level 2 – Breached
timestamp number

Operational Halt Status

HTTP request example

GET /deep/op-halt-status?symbols=snap

HTTP request example response

{
  "SNAP": {
    "isHalted": false,
    "timestamp": 1494588017674
  }
}

WebSockets example (using socket.io)

const url = 'https://ws-api.iextrading.com/1.0/deep'
const socket = require('socket.io-client')(url)

socket.on('connect', () => {
  socket.emit('subscribe', JSON.stringify({
    symbols: ['snap'],
    channels: ['ophaltstatus'],
  }))
})

WebSockets example message

{
  "symbol": "SNAP",
  "messageType": "ophaltstatus",
  "data": {
    "isHalted": false,
    "timestamp": 1494588017674
  }
}

The Exchange may suspend trading of one or more securities on IEX for operational reasons and indicates such operational halt using the Operational halt status message.

IEX disseminates a full pre-market spin of Operational halt status messages indicating the operational halt status of all securities. In the spin, IEX will send out an Operational Halt Message with “N” (Not operationally halted on IEX) for all securities that are eligible for trading at the start of the Pre-Market Session. If a security is absent from the dissemination, firms should assume that the security is being treated as operationally halted in the IEX Trading System at the start of the Pre-Market Session.

After the pre-market spin, IEX will use the Operational halt status message to relay changes in operational halt status for an individual security.

HTTP request

WebSockets

Subscribe to the ophaltstatus channel.

Parameters

Parameter Details
symbols • Parameter is required
• Value needs to be a comma-separated list of symbols (i.e SNAP,fb)
• Maximum of 10 symbols

Response

Key Type
isHalted boolean
timestamp number

Short Sale Price Test Status

HTTP request example

GET /deep/ssr-status?symbols=snap

HTTP request example message

{
  "SNAP": {
    "isSSR": true,
    "detail": "N",
    "timestamp": 1494588094067
  }
}

WebSockets example (using socket.io)

const url = 'https://ws-api.iextrading.com/1.0/deep'
const socket = require('socket.io-client')(url)

socket.on('connect', () => {
  socket.emit('subscribe', JSON.stringify({
    symbols: ['snap'],
    channels: ['ssr'],
  }))
})

WebSockets example message

{
  "symbol": "SNAP",
  "messageType": "ssr",
  "data": {
    "isSSR": true,
    "detail": "N",
    "timestamp": 1494588094067
  }
}

In association with Rule 201 of Regulation SHO, the Short Sale Price Test Message is used to indicate when a short sale price test restriction is in effect for a security.

IEX disseminates a full pre-market spin of Short sale price test status messages indicating the Rule 201 status of all securities. After the pre-market spin, IEX will use the Short sale price test status message in the event of an intraday status change.

The IEX Trading System will process orders based on the latest short sale price test restriction status.

HTTP request

WebSockets

Subscribe to the ssr channel.

Parameters

Parameter Details
symbols • Parameter is required
• Value needs to be a comma-separated list of symbols (i.e SNAP,fb)
• Maximum of 10 symbols

Response

Key Type
isSSR boolean
detail string
timestamp number

Security Event

HTTP request example

GET /deep/security-event?symbols=snap

HTTP request example message

{
  "SNAP": {
    "securityEvent": "MarketOpen",
    "timestamp": 1494595800005
  }
}

WebSockets example (using socket.io)

const url = 'https://ws-api.iextrading.com/1.0/deep'
const socket = require('socket.io-client')(url)

socket.on('connect', () => {
  socket.emit('subscribe', JSON.stringify({
    symbols: ['snap'],
    channels: ['securityevent'],
  }))
})

WebSockets example message

{
  "symbol": "SNAP",
  "messageType": "securityevent",
  "data": {
    "securityEvent": "MarketOpen",
    "timestamp": 1494595800005
  }
}

The Security event message is used to indicate events that apply to a security. A Security event message will be sent whenever such event occurs

HTTP request

WebSockets

Subscribe to the securityevent channel.

Parameters

Parameter Details
symbols • Parameter is required
• Value needs to be a comma-separated list of symbols (i.e SNAP,fb)
• Maximum of 10 symbols

Response

Key Type Values
securityEvent string 'MarketOpen'
'MarketClose'
timestamp number

Trade Break

HTTP request example

GET /deep/trade-breaks?symbols=snap

HTTP request example message

{
  "SNAP": [
    {
      "price": 156.1,
      "size": 100,
      "tradeId": 517341294,
      "isISO": false,
      "isOddLot": false,
      "isOutsideRegularHours": false,
      "isSinglePriceCross": false,
      "isTradeThroughExempt": false,
      "timestamp": 1494619192003
    }
  ]
}

WebSockets example (using socket.io)

const url = 'https://ws-api.iextrading.com/1.0/deep'
const socket = require('socket.io-client')(url)

socket.on('connect', () => {
  socket.emit('subscribe', JSON.stringify({
    symbols: ['snap'],
    channels: ['tradebreaks'],
  }))
})

WebSockets example message

{
  "symbol": "SNAP",
  "messageType": "tradebreaks",
  "data": [
    {
      "price": 156.1,
      "size": 100,
      "tradeId": 517341294,
      "isISO": false,
      "isOddLot": false,
      "isOutsideRegularHours": false,
      "isSinglePriceCross": false,
      "isTradeThroughExempt": false,
      "timestamp": 1494619192003
    }
  ]
}

Trade break messages are sent when an execution on IEX is broken on that same trading day. Trade breaks are rare and only affect applications that rely upon IEX execution based data.

HTTP request

WebSockets

Subscribe to the tradebreaks channel.

Parameters

Parameter Details
symbols • Parameter is required
• Value needs to be a comma-separated list of symbols (i.e SNAP,fb)
• Maximum of 10 symbols
last • Parameter is optional
• Value needs to be a number (i.e 5)
• Default is 20
• Maximum of 500

Response

Key Type
price number
size number
tradeId number
isISO boolean
isOddLot boolean
isOutsideRegularHours boolean
isSinglePriceCross boolean
isTradeThroughExempt boolean
timestamp number

Auction

HTTP request example

GET /deep/auction?symbols=ziext

HTTP request example message

{
  "ZIEXT": {
    "auctionType": "Open",
    "pairedShares": 3600,
    "imbalanceShares": 600,
    "referencePrice": 1.05,
    "indicativePrice": 1.05,
    "auctionBookPrice": 1.05,
    "collarReferencePrice": 1.05,
    "lowerCollarPrice": 0.5,
    "upperCollarPrice": 1.6,
    "extensionNumber": 0,
    "startTime": "09:30:00",
    "lastUpdate": 1506706199025
  }
}

WebSockets example (using socket.io)

const url = 'https://ws-api.iextrading.com/1.0/deep'
const socket = require('socket.io-client')(url)

socket.on('connect', () => {
  socket.emit('subscribe', JSON.stringify({
    symbols: ['ziext'],
    channels: ['auction'],
  }))
})

WebSockets example message

{
  "symbol": "ZIEXT",
  "messageType": "auction",
  "data": {
    "auctionType": "Open",
    "pairedShares": 3600,
    "imbalanceShares": 600,
    "referencePrice": 1.05,
    "indicativePrice": 1.05,
    "auctionBookPrice": 1.05,
    "collarReferencePrice": 1.05,
    "lowerCollarPrice": 0.5,
    "upperCollarPrice": 1.6,
    "extensionNumber": 0,
    "startTime": "09:30:00",
    "lastUpdate": 1506706199025
  }
}

DEEP broadcasts an Auction Information Message every one second between the Lock-in Time and the auction match for Opening and Closing Auctions, and during the Display Only Period for IPO, Halt, and Volatility Auctions. Only IEX listed securities are eligible for IEX Auctions.

HTTP request

WebSockets

Subscribe to the auction channel.

Parameters

Parameter Details
symbols • Parameter is required
• Value needs to be a comma-separated list of symbols (i.e ziext,zexit)
• Maximum of 10 symbols

Response

Key Type Values
auctionType string refers to the auction type (Open, Close, Halt, Volatility, IPO)
pairedShares number refers to the number of shares paired at the referencePrice using orders on the auction book
imbalanceShares number refers to the number of unpaired shares at the referencePrice using orders on the auction book
referencePrice number refers to the clearing price at or within the reference price range using ordes on the auction book
indicativePrice number refers to the clearing price using eligible auction orders
auctionBookPrice number refers to the clearing price using orders on the auction book
collarReferencePrice number refers to the reference price used for the auction collar, if any
lowerCollarPrice number refers to the lower threshold price of the auction collar, if any
upperCollarPrice number refers to the upper threshold price of the auction collar, if any
extensionNumber number refers to the number of extensions an auction has received
startTime string refers to the projected time of the auction match. Formatted as HH:MM:SS
lastUpdate number refers to the timestamp of the auction information

Official Price

HTTP request example

GET /deep/official-price?symbols=snap

HTTP request example message

{
  "SNAP": {
    "priceType": "Open",
    "price": 1.05,
    "timestamp": 1494595800005
  }
}

WebSockets example (using socket.io)

const url = 'https://ws-api.iextrading.com/1.0/deep'
const socket = require('socket.io-client')(url)

socket.on('connect', () => {
  socket.emit('subscribe', JSON.stringify({
    symbols: ['snap'],
    channels: ['officialprice'],
  }))
})

WebSockets example message

{
  "symbol": "SNAP",
  "messageType": "officialprice",
  "data": {
    "priceType": "Open",
    "price": 1.05,
    "timestamp": 1494595800005
  }
}

The Official Price message is used to disseminate the IEX Official Opening and Closing Prices.

These messages will be provided only for IEX Listed Securities.

HTTP request

WebSockets

Subscribe to the officialprice channel.

Parameters

Parameter Details
symbols • Parameter is required
• Value needs to be a comma-separated list of symbols (i.e SNAP,fb)
• Maximum of 1 symbols

Response

Key Type Values
priceType string 'Open' (Official Open Price)
'Close' (Official Close Price)
price number
timestamp number

IEX Stats

For an example of an app that’s using stats, see our IEX mobile app.

Intraday

HTTP request example

GET /stats/intraday

The above example will return JSON with the following keys

{
  "volume": {
    "value": 26908038,
    "lastUpdated": 1480433817323
  },
  "symbolsTraded": {
    "value": 4089,
    "lastUpdated": 1480433817323
  },
  "routedVolume": {
    "value": 10879651,
    "lastUpdated": 1480433816891
  },
  "notional": {
    "value": 1090683735,
    "lastUpdated": 1480433817323
  },
  "marketShare": {
    "value": 0.01691,
    "lastUpdated": 1480433817336
  }
}

HTTP request

Response

Key Description
volume refers to single counted shares matched from executions on IEX.
symbolsTraded refers to number of symbols traded on IEX.
routedVolume refers to executions received from order routed to away trading centers.
notional refers to sum of matched volume times execution price of those trades.
marketShare refers to IEX’s percentage of total US Equity market volume.
lastUpdated refers to the last update time of the data in milliseconds since midnight Jan 1, 1970.

Recent

HTTP request example

GET /stats/recent

The above example will return JSON with the following keys

[
  {
    "date": "2017-01-11",
    "volume": 128048723,
    "routedVolume": 38314207,
    "marketShare": 0.01769,
    "isHalfday": false,
    "litVolume": 30520534
  },
  {
    "date": "2017-01-10",
    "volume": 135116521,
    "routedVolume": 39329019,
    "marketShare": 0.01999,
    "isHalfday": false,
    "litVolume": 29721789
  },
  {
    "date": "2017-01-09",
    "volume": 109850518,
    "routedVolume": 31283422,
    "marketShare": 0.01704,
    "isHalfday": false,
    "litVolume": 27699365
  },
  {
    "date": "2017-01-06",
    "volume": 116680433,
    "routedVolume": 29528471,
    "marketShare": 0.01805,
    "isHalfday": false,
    "litVolume": 29357729
  },
  {
    "date": "2017-01-05",
    "volume": 130389657,
    "routedVolume": 40977180,
    "marketShare": 0.01792,
    "isHalfday": false,
    "litVolume": 33169236
  },
  {
    "date": "2017-01-04",
    "volume": 124428433,
    "routedVolume": 38859989,
    "marketShare": 0.01741,
    "isHalfday": false,
    "litVolume": 31563256
  },
  {
    "date": "2017-01-03",
    "volume": 130195733,
    "routedVolume": 34990159,
    "marketShare": 0.01733,
    "isHalfday": false,
    "litVolume": 34150804
  }
]

This call will return a minimum of the last five trading days up to all trading days of the current month.

HTTP request

Response

Key Description
date refers to the trading day.
volume refers to executions received from order routed to away trading centers.
routedVolume refers to single counted shares matched from executions on IEX.
marketShare refers to IEX’s percentage of total US Equity market volume.
isHalfday will be true if the trading day is a half day.
litVolume refers to the number of lit shares traded on IEX (single-counted).

Records

HTTP request example

GET /stats/records

The above example will return JSON with the following keys

{
  "volume": {
    "recordValue": 233000477,
    "recordDate": "2016-01-20",
    "previousDayValue": 99594714,
    "avg30Value": 138634204.5
  },
  "symbolsTraded": {
    "recordValue": 6046,
    "recordDate": "2016-11-10",
    "previousDayValue": 5500,
    "avg30Value": 5617
  },
  "routedVolume": {
    "recordValue": 74855222,
    "recordDate": "2016-11-10",
    "previousDayValue": 29746476,
    "avg30Value": 44520084
  },
  "notional": {
    "recordValue": 9887832327.8355,
    "recordDate": "2016-11-10",
    "previousDayValue": 4175710684.3897,
    "avg30Value": 5771412969.2662
  }
}

HTTP request

Response

Key Description
volume refers to single counted shares matched from executions on IEX.
symbolsTraded refers to number of symbols traded on IEX.
routedVolume refers to executions received from order routed to away trading centers.
notional refers to sum of matched volume times execution price of those trades.

Historical Summary

HTTP request example

GET /stats/historical?date=201605

The above example will return JSON with the following keys

[
  {
    "averageDailyVolume": 112247378.5,
    "averageDailyRoutedVolume": 34282226.24,
    "averageMarketShare": 0,
    "averageOrderSize": 493,
    "averageFillSize": 287,
    "bin100Percent": 0.61559,
    "bin101Percent": 0.61559,
    "bin200Percent": 0.61559,
    "bin300Percent": 0.61559,
    "bin400Percent": 0.61559,
    "bin500Percent": 0.61559,
    "bin1000Percent": 0.61559,
    "bin5000Percent": 0.61559,
    "bin10000Percent": 0.61559,
    "bin10000Trades": 4666,
    "bin20000Trades": 1568,
    "bin50000Trades": 231,
    "uniqueSymbolsTraded": 7419,
    "blockPercent": 0.08159,
    "selfCrossPercent": 0.02993,
    "etfPercent": 0.12646,
    "largeCapPercent": 0.40685,
    "midCapPercent": 0.2806,
    "smallCapPercent": 0.18609,
    "venueARCXFirstWaveWeight": 0.22063,
    "venueBATSFirstWaveWeight": 0.06249,
    "venueBATYFirstWaveWeight": 0.07361,
    "venueEDGAFirstWaveWeight": 0.01083,
    "venueEDGXFirstWaveWeight": 0.0869,
    "venueOverallFirstWaveWeight": 1,
    "venueXASEFirstWaveWeight": 0.00321,
    "venueXBOSFirstWaveWeight": 0.02935,
    "venueXCHIFirstWaveWeight": 0.00108,
    "venueXCISFirstWaveWeight": 0.00008,
    "venueXNGSFirstWaveWeight": 0.20358,
    "venueXNYSFirstWaveWeight": 0.29313,
    "venueXPHLFirstWaveWeight": 0.01511,
    "venueARCXFirstWaveRate": 0.97737,
    "venueBATSFirstWaveRate": 0.99357,
    "venueBATYFirstWaveRate": 0.99189,
    "venueEDGAFirstWaveRate": 0.98314,
    "venueEDGXFirstWaveRate": 0.99334,
    "venueOverallFirstWaveRate": 0.98171,
    "venueXASEFirstWaveRate": 0.94479,
    "venueXBOSFirstWaveRate": 0.97829,
    "venueXCHIFirstWaveRate": 0.65811,
    "venueXCISFirstWaveRate": 0.9468,
    "venueXNGSFirstWaveRate": 0.98174,
    "venueXNYSFirstWaveRate": 0.98068,
    "venueXPHLFirstWaveRate": 0.93629
  }
]

HTTP request

The /stats/historical endpoint without any parameters will return the current month’s stats.

Parameters

Parameter Details
date • Parameter is optional
• Value needs to be in four-digit year, two-digit month format (YYYYMM) (i.e January 2017 would be written as 201701)
• Historical data is only available for prior months, starting with January 2014
• When parameter is not present, request returns prior month’s data
format • Parameter is optional
• Value can only be csv
• When parameter is not present, format defaults to JSON

Response

See our stats page for a reference of the keys.

Historical Daily

HTTP request example

GET /stats/historical/daily?last=5

The above example will return JSON with the following keys

[
  {
    "date": "2017-05-09",
    "volume": 152907569,
    "routedVolume": 46943802,
    "marketShare": 0.02246,
    "isHalfday": 0,
    "litVolume": 35426666
  },
  {
    "date": "2017-05-08",
    "volume": 142923030,
    "routedVolume": 39507295,
    "marketShare": 0.02254,
    "isHalfday": 0,
    "litVolume": 32404585
  },
  {
    "date": "2017-05-05",
    "volume": 155118117,
    "routedVolume": 39974788,
    "marketShare": 0.02358,
    "isHalfday": 0,
    "litVolume": 35124994
  },
  {
    "date": "2017-05-04",
    "volume": 185715463,
    "routedVolume": 56264408,
    "marketShare": 0.02352,
    "isHalfday": 0,
    "litVolume": 40634976
  },
  {
    "date": "2017-05-03",
    "volume": 183103198,
    "routedVolume": 50953175,
    "marketShare": 0.025009999999999998,
    "isHalfday": 0,
    "litVolume": 40296158
  }
]

This call will return daily stats for a given month or day.

HTTP request

The /stats/historical/daily endpoint without any parameters will return the last trading day.

Parameters

Parameter Details
date • Parameter is optional
• Option 1: Value needs to be in four-digit year, two-digit month format (YYYYMM) (i.e January 2017 would be written as 201701)
• Option 2: Value needs to be in four-digit year, two-digit month, two-digit day format (YYYYMMDD) (i.e January 21, 2017 would be written as 20170121)
• Historical data is only available for prior months, starting with January 2014
last • Parameter is optional
• Is used in place of date to retrieve last n number of trading days.
• Value can only be a number up to 90
format • Parameter is optional
• Value can only be csv
• When parameter is not present, format defaults to JSON

Response

Key Description
date refers to the trading day.
volume refers to executions received from order routed to away trading centers.
routedVolume refers to single counted shares matched from executions on IEX.
marketShare refers to IEX’s percentage of total US Equity market volume.
isHalfday will be true if the trading day is a half day.
litVolume refers to the number of lit shares traded on IEX (single-counted).

Markets

For an example of an app that’s using market, see our Market volume app.

Market

HTTP request example

GET /market

The above example will return JSON with the following keys

[
  {
    "mic": "TRF",
    "tapeId": "-",
    "venueName": "TRF Volume",
    "volume": 589171705,
    "tapeA": 305187928,
    "tapeB": 119650027,
    "tapeC": 164333750,
    "marketPercent": 0.37027,
    "lastUpdated": 1480433817317
  },
  {
    "mic": "XNGS",
    "tapeId": "Q",
    "venueName": "NASDAQ",
    "volume": 213908393,
    "tapeA": 90791123,
    "tapeB": 30731818,
    "tapeC": 92385452,
    "marketPercent": 0.13443,
    "lastUpdated": 1480433817311
  },
  {
    "mic": "XNYS",
    "tapeId": "N",
    "venueName": "NYSE",
    "volume": 204280163,
    "tapeA": 204280163,
    "tapeB": 0,
    "tapeC": 0,
    "marketPercent": 0.12838,
    "lastUpdated": 1480433817336
  },
  {
    "mic": "ARCX",
    "tapeId": "P",
    "venueName": "NYSE Arca",
    "volume": 180301371,
    "tapeA": 64642458,
    "tapeB": 78727208,
    "tapeC": 36931705,
    "marketPercent": 0.11331,
    "lastUpdated": 1480433817305
  },
  {
    "mic": "EDGX",
    "tapeId": "K",
    "venueName": "EDGX",
    "volume": 137022822,
    "tapeA": 58735505,
    "tapeB": 32753903,
    "tapeC": 45533414,
    "marketPercent": 0.08611,
    "lastUpdated": 1480433817310
  },
  {
    "mic": "BATS",
    "tapeId": "Z",
    "venueName": "BATS BZX",
    "volume": 100403461,
    "tapeA": 52509859,
    "tapeB": 25798360,
    "tapeC": 22095242,
    "marketPercent": 0.0631,
    "lastUpdated": 1480433817311
  },
  {
    "mic": "BATY",
    "tapeId": "Y",
    "venueName": "BATS BYX",
    "volume": 54413196,
    "tapeA": 28539960,
    "tapeB": 13638779,
    "tapeC": 12234457,
    "marketPercent": 0.03419,
    "lastUpdated": 1480433817310
  },
  {
    "mic": "XBOS",
    "tapeId": "B",
    "venueName": "NASDAQ BX",
    "volume": 31417461,
    "tapeA": 16673166,
    "tapeB": 5875538,
    "tapeC": 8868757,
    "marketPercent": 0.01974,
    "lastUpdated": 1480433817311
  },
  {
    "mic": "EDGA",
    "tapeId": "J",
    "venueName": "EDGA",
    "volume": 30670687,
    "tapeA": 15223428,
    "tapeB": 8276375,
    "tapeC": 7170884,
    "marketPercent": 0.01927,
    "lastUpdated": 1480433817311
  },
  {
    "mic": "IEXG",
    "tapeId": "V",
    "venueName": "IEX",
    "volume": 26907838,
    "tapeA": 16578501,
    "tapeB": 3889245,
    "tapeC": 6440092,
    "marketPercent": 0.01691,
    "lastUpdated": 1480433817235
  },
  {
    "mic": "XPHL",
    "tapeId": "X",
    "venueName": "NASDAQ PSX",
    "volume": 13334403,
    "tapeA": 5802294,
    "tapeB": 4239741,
    "tapeC": 3292368,
    "marketPercent": 0.00838,
    "lastUpdated": 1480433817071
  },
  {
    "mic": "XCHI",
    "tapeId": "M",
    "venueName": "CHX",
    "volume": 4719854,
    "tapeA": 834762,
    "tapeB": 3168434,
    "tapeC": 716658,
    "marketPercent": 0.00296,
    "lastUpdated": 1480433814711
  },
  {
    "mic": "XASE",
    "tapeId": "A",
    "venueName": "NYSE MKT",
    "volume": 4419196,
    "tapeA": 0,
    "tapeB": 4419196,
    "tapeC": 0,
    "marketPercent": 0.00277,
    "lastUpdated": 1480433816276
  },
  {
    "mic": "XCIS",
    "tapeId": "C",
    "venueName": "NSX",
    "volume": 187785,
    "tapeA": 39923,
    "tapeB": 62191,
    "tapeC": 85671,
    "marketPercent": 0.00011,
    "lastUpdated": 1480433816141
  }
]

HTTP request

/market

This endpoint returns near real time traded volume on the markets. Market data is captured by the IEX system from approximately 7:45 a.m. to 5:15 p.m. ET.

Parameters

Parameter Details
format • Parameter is optional
• Value can only be csv
• When parameter is not present, format defaults to JSON

Response

Key Description
mic refers to the Market Identifier Code (MIC).
tapeId refers to the tape id of the venue.
venueName refers to name of the venue defined by IEX.
volume refers to the amount of traded shares reported by the venue.
tapeA refers to the amount of Tape A traded shares reported by the venue.
tapeB refers to the amount of Tape B traded shares reported by the venue.
tapeC refers to the amount of Tape C traded shares reported by the venue.
marketPercent refers to the venue’s percentage of shares traded in the market.
lastUpdated refers to the last update time of the data in milliseconds since midnight Jan 1, 1970.

Changelog

The following is a list of running updates to the IEX API.

Version 2

Version 1.0

1.23 (August 8, 2018)

1.22 (May 23, 2018)

1.21 (February 8, 2018)

1.20 (January 30, 2018)

1.19 (September 29, 2017)

1.18 (September 20, 2017)

1.17 (July 5, 2017)

1.16 (June 30, 2017)

1.15 (June 14, 2017)

1.14 (May 16, 2017)

1.13 (May 15, 2017)

1.12 (May 12, 2017)

1.11 (April 19, 2017)

1.10 (February 28, 2017)

1.9 (February 23, 2017)

1.8 (February 17, 2017)

1.7 (February 8, 2017)

1.6 (February 2, 2017)

1.5 (January 27, 2017)

1.4 (January 25, 2017)

1.3 (January 20, 2017)

1.2 (January 19, 2017)

1.1 (January 18, 2017)

1.0 (January 17, 2017)