MENU Navbar
Logo

IEX API 1.0

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

Getting started

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

The IEX API is a set of services designed for developers and engineers. It can be used to build high-quality apps and services. We’re always working to improve the IEX API. Please check back for enhancements and improvements.

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

Attribution

If you redistribute our API data:

  1. Cite IEX using the following text and link: “Data provided for free by IEX.”
  2. Provide a link to https://iextrading.com/api-exhibit-a in your terms of service.

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 reach out to api@iextrading.com or, for community support, tag your question with the “iex-api” tag on Stack Overflow.

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.

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: five 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, email us at api@iextrading.com.

Stocks

We’re building an app using the stocks endpoints. Stocks will come out of Beta when our app launches. The data provided here is sourced from IEX and multiple third-party sources. IEX does not make any guarantees, representations or warranties as to the completeness or accuracy of the data provided.

Quote

HTTP request example

GET /stock/{symbol}/quote

The above example will return JSON with the followng keys

{
  "symbol": "AAPL",
  "companyName": "Apple Inc.",
  "primaryExchange": "Nasdaq Global Select",
  "calculationPrice": "tops",
  "iexRealtimePrice": 144.16,
  "iexRealtimeSize": 100,
  "iexLastUpdated": 1498748839398,
  "delayedPrice": 144.41,
  "delayedPriceTime": 1498748005359,
  "previousClose": 145.83,
  "change": -1.67,
  "changePercent": -0.01158,
  "iexMarketPercent": 0.00948,
  "iexVolume": 82451,
  "avgTotalVolume": 29623234,
  "iexBidPrice": 143.01,
  "iexBidSize": 100,
  "iexAskPrice": 148.66,
  "iexAskSize": 100,
  "marketCap": 751627174400,
  "peRatio": 16.86,
  "week52High": 156.65,
  "week52Low": 93.63
}

HTTP request

Response

Key Type Description
symbol string refers to the stock ticker.
companyName string refers to the company name.
primaryExchange string refers to the primary listings exchange.
calculationPrice string refers to the source of the latest price.
("tops", "sip", or "close")
iexRealtimePrice number refers to last sale price of the stock on IEX. (Refer to the attribution section above.)
iexRealtimeSize number refers to last sale size of the stock on IEX.
iexLastUpdated number refers to the last update time of the data in milliseconds since midnight Jan 1, 1970 UTC or -1 or 0. If the value is -1 or 0, IEX has not quoted the symbol in the trading day.
delayedPrice number refers to the 15 minute delayed market price.
delayedPriceTime number refers to the time of the delayed market price.
previousClose number refers to the adjusted close price of the last trading day of the stock.
change number is calculated using calculationPrice from previousClose.
changePercent number is calculated using calculationPrice from previousClose.
iexMarketPercent number refers to IEX’s percentage of the market in the stock.
iexVolume number refers to shares traded in the stock on IEX.
avgTotalVolume number refers to the 30 day average volume on all markets.
iexBidPrice number refers to the best bid price on IEX.
iexBidSize number refers to amount of shares on the bid on IEX.
iexAskPrice number refers to the best ask price on IEX.
iexAskSize number refers to amount of shares on the ask on IEX.
marketCap number is calculated in real time using calculationPrice.
peRatio number is calculated in real time using calculationPrice.
week52High number refers to the adjusted 52 week high.
week52Low number refers to the adjusted 52 week low.

Chart

HTTP request example

GET /stock/{symbol}/chart/{range}

The above example will return JSON with the followng keys

// .../1d

[
    {
        "minute": "09:30",
        "high": 143.98,
        "low": 143.775,
        "average": 143.889,
        "volume": 3070,
        "notional": 441740.275,
        "numberOfTrades": 20
    } // , { ... }
]


// .../3m

[
    {
        "date": "2017-04-03",
        "open": 143.1192,
        "high": 143.5275,
        "low": 142.4619,
        "close": 143.1092,
        "volume": 19985714,
        "unadjustedClose": 143.7,
        "unadjustedVolume": 19985714,
        "change": 0.039835,
        "changePercent": 0.028,
        "vwap": 143.0507
    } // , { ... }
]

HTTP request

Options

Range Description Source
5y Five years Historically adjusted market-wide data
2y Two years Historically adjusted market-wide data
1y One year Historically adjusted market-wide data
ytd Year-to-date Historically adjusted market-wide data
6m Six months Historically adjusted market-wide data
3m Three months Historically adjusted market-wide data
1m One month (default) Historically adjusted market-wide data
1d One day IEX-only data

Response

Key Type Availability
minute string is only available on 1d chart.
average number is only available on 1d chart.
notional number is only available on 1d chart.
numberOfTrades number is only available on 1d chart.
high number is available on all charts.
low number is available on all charts.
volume number is available on all charts.
date string is not available on 1d chart.
open number is not available on 1d chart.
close number is not available on 1d chart.
unadjustedClose number is not available on 1d chart.
unadjustedVolume number is not available on 1d chart.
change number is not available on 1d chart.
changePercent number is not available on 1d chart.
vwap number is not available on 1d chart.

Company

HTTP request example

GET /stock/{symbol}/company

The above example will return JSON with the followng keys

{
  "symbol": "AAPL",
  "companyName": "Apple Inc.",
  "exchange": "Nasdaq Global Select",
  "industry": "Computer Hardware",
  "website": "http://www.apple.com",
  "description": "Apple Inc is an American multinational technology company. It designs, manufactures, and markets mobile communication and media devices, personal computers, and portable digital music players.",
  "CEO": "Timothy D. Cook"
}

HTTP request

Response

Key Type
symbol string
companyName string
exchange string
industry string
website string
description string
CEO string

Key stats

HTTP request example

GET /stock/{symbol}/stats

The above example will return JSON with the followng keys

{
  "companyName": "Apple Inc.",
  "marketcap": 760334287200,
  "beta": 1.295227,
  "week52high": 156.65,
  "week52low": 93.63,
  "week52change": 58.801903,
  "shortInterest": 55544287,
  "shortDate": "2017-06-15",
  "dividendRate": 2.52,
  "dividendYield": 1.7280395,
  "exDividendDate": "2017-05-11 00:00:00.0",
  "latestEPS": 8.29,
  "latestEPSDate": "2016-09-30",
  "sharesOutstanding": 5213840000,
  "float": 5203997571,
  "returnOnEquity": 0.08772939519857577,
  "consensusEPS": 3.22,
  "numberOfEstimates": 15,
  "symbol": "AAPL",
  "EBITDA": 73828000000,
  "revenue": 220457000000,
  "grossProfit": 84686000000,
  "cash": 256464000000,
  "debt": 358038000000,
  "ttmEPS": 8.55,
  "revenuePerShare": 42.2830389885382,
  "revenuePerEmployee": 1900491.3793103448,
  "peRatioHigh": 25.5,
  "peRatioLow": 8.7
}

HTTP request

Response

Key Type Description
companyName string
marketcap number is not calculated in real time.
beta number
week52high number
week52low number
week52change number
shortInterest number
shortDate string
dividendRate number
dividendYield number
exDividendDate string
latestEPS number (Most recent quarter)
latestEPSDate string
sharesOutstanding number
float number
returnOnEquity number (Trailing twelve months)
consensusEPS number (Most recent quarter)
numberOfEstimates number (Most recent quarter)
symbol string
EBITDA number (Trailing twelve months)
revenue number (Trailing twelve months)
grossProfit number (Trailing twelve months)
cash number reers to total cash. (Trailing twelve months)
debt number refers to total debt. (Trailing twelve months)
ttmEPS number (Trailing twelve months)
revenuePerShare number (Trailing twelve months)
revenuePerEmployee number (Trailing twelve months)
peRatioHigh number
peRatioLow number

News

HTTP request example

GET /stock/{symbol}/news/last/{range}

The above example will return JSON with the followng keys

[
  {
    "datetime": "2017-06-29T13:14:22-04:00",
    "headline": "Voice Search Technology Creates A New Paradigm For Marketers",
    "source": "Benzinga via QuoteMedia",
    "url": "http://app.quotemedia.com/quotetools/newsItem.htm?webmasterId=102699&storyId=5197173394335668",
    "summary": "<p>Voice search is likely to grow by leap and bounds, with technological advancements leading to better adoption and fueling the growth cycle, according to Lindsay Boyajian, <a href=\"http://loupventures.com/how-the-future-of-voice-search-affects-marketers-today/\">a guest contributor at Loup Ventu...",
    "related": "AAPL,AMZN,GOOG,GOOGL,MSFT"
  }
]

Options

Option Description
symbol Use a market to get market-wide news (i.e. .../market/news/...)
range Number between 1 and 50. Default is 10. (i.e. .../news/last/1)

HTTP request

Response

Key Type
datetime string  
headline string  
source string  
url string  
summary string  
related string  

Financials

HTTP request example

GET /stock/{symbol}/financials

The above example will return JSON with the followng keys

{
  "symbol": "AAPL",
  "financials": [
    {
      "reportDate": "2017-03-31",
      "grossProfit": 20591000000,
      "costOfRevenue": 32305000000,
      "operatingRevenue": 52896000000,
      "totalRevenue": 52896000000,
      "operatingIncome": 14097000000,
      "netIncome": 11029000000,
      "researchAndDevelopment": 2776000000,
      "operatingExpense": 6494000000,
      "currentAssets": 101990000000,
      "totalAssets": 334532000000,
      "totalLiabilities": 200450000000,
      "currentCash": 15157000000,
      "currentDebt": 13991000000,
      "totalCash": 67101000000,
      "totalDebt": 98522000000,
      "shareholderEquity": 134082000000,
      "cashChange": -1214000000,
      "cashFlow": 12523000000,
      "operatingGainsLosses": "n/a"
    } // , { ... }
  ]
}

Pulls income statement, balance sheet, and cash flow data from the four most recent reported quarters.

HTTP request

Response

Key Type
reportDate string
grossProfit number
costOfRevenue number
operatingRevenue number
totalRevenue number
operatingIncome number
netIncome number
researchAndDevelopment number
operatingExpense number
currentAssets number
totalAssets number
totalLiabilities number
currentCash number
currentDebt number
totalCash number
totalDebt number
shareholderEquity number
cashChange number
cashFlow number
operatingGainsLosses string

Earnings

HTTP request example

GET /stock/{symbol}/earnings

The above example will return JSON with the followng keys

{
  "symbol": "AAPL",
  "earnings": [
    {
      "actualEPS": 2.1,
      "consensusEPS": 2.02,
      "estimatedEPS": 2.02,
      "announceTime": "AMC",
      "numberOfEstimates": 14,
      "EPSSurpriseDollar": 0.08,
      "EPSReportDate": "2017-05-02",
      "fiscalPeriod": "Q2 2017",
      "fiscalEndDate": "2017-03-31"
    },
    {
      "actualEPS": 3.36,
      "consensusEPS": 3.22,
      "estimatedEPS": 3.22,
      "announceTime": "AMC",
      "numberOfEstimates": 15,
      "EPSSurpriseDollar": 0.14,
      "EPSReportDate": "2017-01-31",
      "fiscalPeriod": "Q1 2017",
      "fiscalEndDate": "2016-12-31"
    },
    {
      "actualEPS": 1.67,
      "consensusEPS": 1.66,
      "estimatedEPS": 1.66,
      "announceTime": "AMC",
      "numberOfEstimates": 14,
      "EPSSurpriseDollar": 0.01,
      "EPSReportDate": "2016-10-25",
      "fiscalPeriod": "Q4 2016",
      "fiscalEndDate": "2016-09-30"
    },
    {
      "actualEPS": 1.42,
      "consensusEPS": 1.39,
      "estimatedEPS": 1.39,
      "announceTime": "AMC",
      "numberOfEstimates": 14,
      "EPSSurpriseDollar": 0.03,
      "EPSReportDate": "2016-07-26",
      "fiscalPeriod": "Q3 2016",
      "fiscalEndDate": "2016-06-30"
    }
  ]
}

Pulls data from the four most recent reported quarters.

HTTP request

Response

Key Type
actualEPS number
consensusEPS number
estimatedEPS number
announceTime string
numberOfEstimates number
EPSSurpriseDollar number
EPSReportDate string
fiscalPeriod string
fiscalEndDate string

HTTP request example

GET /stock/{symbol}/logo

The above example will return JSON with the followng keys

{
  "url": "https://storage.googleapis.com/iex/api/logos/AAPL.png"
}

This is a helper function, but the google APIs url is standardized.

HTTP request

Response

Key Type
url string

Price

HTTP request example

GET /stock/{symbol}/price

The above example will return a number

143.28

HTTP request

Response

A single number, being the IEX real time price, the 15 minute delayed market price, or the previous close price, is returned.

Delayed quote

HTTP request example

GET /stock/{symbol}/delayed-quote

The above example will return JSON with the followng keys

{
  "symbol": "AAPL",
  "delayedPrice": 143.08,
  "delayedSize": 200,
  "delayedPriceTime": 1498762739791,
  "processedTime": 1498763640156
}

This returns the 15 minute delayed market quote.

HTTP request

Response

Key Type Description
symbol string refers to the stock ticker.
delayedPrice number refers to the 15 minute delayed market price.
delayedSize number refers to the 15 minute delayed last trade size.
delayedPriceTime number refers to the time of the delayed market price.
processedTime number refers to when IEX processed the SIP price.

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 followng 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
  },
  {
    "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
  },
  {
    "symbol": "AIG+",
    "marketPercent": 0.04618,
    "bidSize": 0,
    "bidPrice": 0,
    "askSize": 0,
    "askPrice": 0,
    "volume": 3400,
    "lastSalePrice": 21.52,
    "lastSaleSize": 100,
    "lastSaleTime": 1480446206461,
    "lastUpdated": -1
  }
]

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

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.
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.

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 followng 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
    }
  ]
}

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
    }
  ]
}

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

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?symbols=snap

HTTP request example message

{
  "SNAP": {
    "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({
    symbols: ['snap'],
    channels: ['systemevent'],
  }))
})

WebSockets example message

{
  "symbol": "SNAP",
  "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.

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
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

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 followng 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.

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 followng 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 followng 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 followng 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 followng 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 followng 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).

IEX ref 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 followng keys

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

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.

Changelog

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

Version 1.0

1.0 (July 5, 2017)

1.0 (June 30, 2017)

1.0 (June 14, 2017)

1.0 (May 16, 2017)

1.0 (May 15, 2017)

1.0 (May 12, 2017)

1.0 (April 19, 2017)

1.0 (February 28, 2017)

1.0 (February 23, 2017)

1.0 (February 17, 2017)

1.0 (February 8, 2017)

1.0 (February 2, 2017)

1.0 (January 27, 2017)

1.0 (January 25, 2017)

1.0 (January 20, 2017)

1.0 (January 19, 2017)

1.0 (January 18, 2017)

1.0 (January 17, 2017)