NAV
ruby python java curl javascript http go

Introduction

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

TMX Analytics API offers access to trades, quotes, order book and FX datasets. These analytics-ready datasets span multiple geographical locations including Canada and US. These are RESTful APIs that return JSON-encoded responses and standard HTTP response codes.

API Versioning

APIs will be versioned on a single-digit versioning pattern, for example v1, v2, etc. When a new version for an API is available (say v2), the older version (say v1) will be supported for an year before it is phased out.

Example of changes that lead to version change

  • A change in the response type (i.e. changing an integer to a float)
  • Change in the name of the response attribute (or column name)
  • Removal of a response attribute (or column)

Example of changes that do not lead to version change

  • Fixing functional bugs
  • Security fixes
  • Addition of a new response attribute (or column)
  • Addition of new web-hook events
  • Changing the order of existing attributes

Current Version is v1

Attribution

Attribution is required for all users. It is as simple as putting “Data provided by TMX Analytics” somewhere on your site or app and linking that text to https://www.tmx.com/analytics. In case of limited screen space, or design constraints, the attribution link can be included in your terms of service using the following hyperlinked text: Data provided by TMX Analytics

Authentication

As part of the user registration process, TMX Analytics will provide user credentials consisting of:

  • an API Key - accessible from "API Usage" page on TMX Analytics website
  • a password - identifies a registered user

The Help Widget available at the bottom right of the page can be used to request for user credentials.

The password provided by TMX Analytics is temporary and has to be changed before accessing any API.

Steps to change User Password:

  • Change Password API is available under Access APIs --> Change Password
  • API Key needs to be passed in the header as parameter name: x-api-key
  • Request parameters to be passed along are mentioned within Change Password API details

A valid user will be able to generate an API Authorization token using the Authenticate API. This is a 'Bearer' token that must accompany each of the subsequent API requests.

Steps to generate API Authorization Token:

  • Authenticate API is available under Access APIs --> Authenticate
  • API Key needs to be passed in the header as parameter name: x-api-key
  • Request parameters to be passed along are mentioned within Authenticate API details

Format for using the Authorization Token: Authorization: Bearer

Protecting your API Authorization tokens and passwords:

  • The token has a validity of one hour.
  • The token should be kept confidential and stored safely. Using this token, an API call can be made, which will impact billing.
  • Usage of APIs should be monitored for anomalies. If any unauthorized or abnormal usage is observed, the API Authorization token should be rotated immediately.
  • Passwords should not be embedded directly in the code. Instead, they should be added as environment variables or included via files encrypted and stored separately from the bulk of the code - outside the source repository of the application. This will ensure that the passwords will not be inadvertently exposed to unauthorized users even when the code is shared.
  • Passwords should be changed periodically.

API Base

Base URL for the API is: https://analyticsapi.tmxanalytics.com

Header Request Parameters

Parameter Required Value
Content-Type true application/json

Data Schedule

EOD Data for the previous day will be available through the APIs by 6:30am EST the following day. For example, data for trading activity that occurred on January 15, 2020 will be available by 6:30am on January 16, 2020.

In case of MX Analytics API, data will be available by 9:00am EST the following day from Tuesday to Friday. Friday's data will be made available by 9:00am EST the following Monday.

Data Availability API available under Access APIs --> Data Availability can be used to check when the most recent data was loaded for each API.

Data Formats

TMX Analytics APIs return data in JSON format.

Data Sources

Multiple

Query Parameters

  • Parameter values are case sensitive. For example, "symbol" : "ABC" is correct and "symbol" : "abc" will not return the expected result
  • Parameter values must be comma-delimited within square brackets (array) when requesting multiple. For example, "symbols" : ["ABC","DEF"]
  • Parameters passed must be url-encoded. For example, ?symbols=ABC+DEF encoded is ?symbols=ABC%20DEF

Response Attributes

Error Response

{
  "message": "string"
}

API response is documented along with each API endpoint. Response attributes are case-sensitive.

TMX Analytics uses HTTP response codes to indicate the success or failure of an API request. Error response will be accompanied with a detailed message within the body. List of error codes along with the messages are explained in section Errors.

Subscription Plans & Limits

The limits are applicable per group per plan.

Group Name API Description API Name Plan Monthly Call Limit Symbol Coverage Lookback Days
Equity Intraday Trades One-minute Bars for Trades (Canada) Trades - 1min CA Free 100,000 50 Current-30
One-second Bars for Trades (Canada) Trades - 1sec CA
One-minute Bars for Trades (US) Trades - 1min US
One-second Bars for Trades (US) Trades - 1sec US
OHLC (Canada) OHLC CA
Equity Intraday Trades One-minute Bars for Trades (Canada) Trades - 1min CA Starter 500,000 100 Current-30
One-second Bars for Trades (Canada) Trades - 1sec CA
One-minute Bars for Trades (US) Trades - 1min US
One-second Bars for Trades (US) Trades - 1sec US
OHLC (Canada) OHLC CA
Equity Intraday Trades One-minute Bars for Trades (Canada) Trades - 1min CA Premium 2,000,000 ALL Previous 3 year History
One-second Bars for Trades (Canada) Trades - 1sec CA
One-minute Bars for Trades (US) Trades - 1min US
One-second Bars for Trades (US) Trades - 1sec US
OHLC (Canada) OHLC CA
Equity Intraday Quotes One-minute Bars for Quotes (Canada) Quotes - 1min CA Starter 500,000 100 Current-30
One-second Bars for Quotes (Canada) Quotes - 1min US
One-minute Bars for Quotes (US) Quotes - 1sec US
One-second Bars for Quotes (US) Quotes - 1sec US
Equity Intraday Quotes One-minute Bars for Quotes (Canada) Quotes - 1min CA Premium 2,000,000 ALL Previous 3 year History
One-second Bars for Quotes (Canada) Quotes - 1sec CA
One-minute Bars for Quotes (US) Quotes - 1sec US
One-second Bars for Quotes (US) Quotes - 1sec CA
Trades & Quotes Tick Data Premium Trades and Quotes CBBO (Canada) TAQ NBBO CA Premium 5,000 ALL Current-30
Premium Trades and Quotes CBBO (US) TAQ NBBO US
Essential Analytics for Options & Futures MX Daily Stats MX Daily Stats CA Premium 100,000 ALL Previous 3 year History
Corporate Actions & Reference Data Issuers CA Issuers CA Premium 100,000 ALL Previous 3 year History
Global Symbols Global Symbols
Global Symbols Delta Global Symbols Delta
Essential Analytics for Equities Advanced Daily Stats (Canada) Advanced Daily Stats CA Premium 100,000 ALL Previous 3 year History
Liquidity Analytics (Canada) Liquidity Analytics (CA)
Basic Daily Stats (Canada) Basic Daily Stats CA
Daily Stats (Canada) Daily Stats CA
TSX Daily Stats (Canada) TSX Daily Stats CA
Advanced Daily Stats (US) Advanced Daily Stats US
Daily Stats (US) Daily Stats US
Basic Daily Stats (US) Basic Daily Stats US
Broker Analytics Broker Liquidity(Canada) Broker Liquidity CA Premium 100,000 ALL Previous 3 year History
Broker Daily Stats(Canada) Broker Daily Stats CA
Broker Summary(Canada) Broker Summary CA
Investor Analytics Investor Flows (Canada) Investor Flows CA Premium 100,000 ALL Previous 3 year History

Overage charge will be attributable once monthly call limits per plan are exhausted. Notification will be sent on exhaustion of 50%, 75% and 100% monthly call limit. API does not throw any error in such a scenario.

Symbol List

Some of the subscription plans provide a limited number of symbols that can be accessed by the APIs. The list underneath details the symbols included in the Free as well as Starter Plans for Canada and US.

Canada

Ticker Free Plan Starter Plan
ABX
AC
ACB
AEM
ALA
APHA
AQN
ARX
ATD.B
BAM.A
BBD.B
BCE
BHC
BIP.UN
BMO
BNS
BPY.UN
BTO
CAE
CAR.UN
CCL.B
CCO
CM
CNQ
CNR
CP
CPG
CRON
CSU
CTC.A
CVE
DGC
DOL
ECA
EMA
EMP.A
ENB
FFH
FM
FNV
FTS
G
GIB.A
GIL
GOOS
GWO
H
HEXO
HOD
HOU
HSE
HXT
IFC
IMO
IPL
K
KEY
KL
L
LUN
MEG
MFC
MG
MRU
NA
NTR
OTEX
PKI
POW
PPL
PSA
PWF
QBR.B
QSR
RCI.B
REI.UN
RY
SAP
SHOP
SJR.B
SLF
SNC
SU
T
TD
TECK.B
TRI
TRP
VET
WCN
WEED
WFT
WJA
WN
WPM
XIC
XIU
XSP
ZEB
ZSP

US

Ticker Free Plan Starter Plan
AAPL
ABBV
ADBE
AGG
AGN
AMD
AMGN
AMZN
AVGO
BA
BABA
BAC
BKNG
BMY
BRK/B
C
CAT
CELG
CMCSA
CRM
CSCO
CVS
CVX
DHR
DIA
DIS
EEM
EFA
EWZ
FB
FXI
GDX
GDXJ
GE
GLD
GOOG
GOOGL
GS
HD
HYG
IBM
IEMG
INTC
IVV
IWM
IYR
JNJ
JNK
JPM
KO
LLY
LQD
MA
MCD
MDT
MMM
MRK
MSFT
MU
NFLX
NKE
NOW
NVDA
ORCL
PEP
PFE
PG
PYPL
QCOM
QQQ
ROKU
SBUX
SHOP
SMH
SPY
SQ
T
TLT
TQQQ
TSLA
TWTR
TXN
UNH
UNP
V
VOO
VWO
VXX
VZ
WFC
WMT
XLE
XLF
XLI
XLK
XLP
XLU
XLV
XOM
XOP

Billing

Clients will receive a monthly bill and invoice statement at the end of the month. For example, Invoice for API usage in September will be made available on November 1.

Google Sheets Add-on

Subscribe to API

Sign up at hub.tmxanalytics.com/signup and subscribe to TMX Grapevine API

Install API to Sheets

Select Extensions tab > Add-ons > Get add-ons

Search “API to Sheets”

Click “Install”

Setup API from Google Sheets

Once installed, select the Extensions tab > API to Sheets > Create New API Request

Add in the following details to configure your API request:

Select POST method

Enter our API URL Path https://analyticsapi.tmxanalytics.com/v1/ followed by the geography (/ca for Canada, /us for US), and specific table name you would like to access.

In the body section, enter any optional parameters to define your request. Note that our API allows for a start date, end date, specific symbols or ALL_SYMBOLS

In the Request Headers section, enter “bearer” followed by your Authentication Token. This is found when you login to hub.tmxanalytics.com > API Usage tab > Authentication Token > enter the same password you used to login to refresh your token > submit this token expires after 1 hour and must be refreshed each time you use the API

Your x-api-key can also be found on the same location. this key remains fixed for each client

Select offset for Pagination Type and pageafter name

Select the sheet you would like to display the output in, or select Set Current

Select Save. Your API Request will be saved and can be accessed at a later date

Help and More Information

Note at any time you can refer to our TMX Grapevine API documentation website at https://docs.tmxanalytics.com for further details on the API design, sample code snippets, and Error Codes.

If you experience any issues, please contact TMX Support for assistance. You can also use the help icon in the bottom right corner to email our support team directly from hub.tmxanalytics.com.

Default

options__v1_apiautomation

Code samples

require 'rest-client'
require 'json'

result = RestClient.options 'https://analyticsapi.tmxanalytics.com/v1/apiautomation',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.options('https://analyticsapi.tmxanalytics.com/v1/apiautomation')

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/apiautomation");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("OPTIONS");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X OPTIONS https://analyticsapi.tmxanalytics.com/v1/apiautomation


fetch('https://analyticsapi.tmxanalytics.com/v1/apiautomation',
{
  method: 'OPTIONS'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

OPTIONS https://analyticsapi.tmxanalytics.com/v1/apiautomation HTTP/1.1
Host: analyticsapi.tmxanalytics.com

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("OPTIONS", "https://analyticsapi.tmxanalytics.com/v1/apiautomation", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

OPTIONS /v1/apiautomation

Example responses

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response None

post__v1_apiautomation

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/apiautomation',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/apiautomation', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/apiautomation");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/apiautomation \
  -H 'Content-Type: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "billingTag": "string",
  "columnDesc": {},
  "countryCode": "us",
  "docDescription": "string",
  "endPoint": "string",
  "formatFields": {},
  "fromBranch": "string",
  "licensedFields": [
    "string"
  ],
  "orderByFields": {
    "asc": [
      "string"
    ],
    "desc": [
      "string"
    ]
  },
  "pageLimit": 0,
  "productName": "string",
  "requestParams": {
    "column": "string",
    "condition": "gt",
    "description": "string",
    "pattern": "string",
    "required": true,
    "type": "string"
  },
  "requestResponseDescription": "string",
  "requestResponsePrefix": "string",
  "requestResponseTitle": "string",
  "sfConfig": {
    "database": "string",
    "schema": "string",
    "warehouse": "string"
  },
  "subProductName": "string",
  "tableName": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/apiautomation',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/apiautomation HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/apiautomation", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/apiautomation

Body parameter

{
  "billingTag": "string",
  "columnDesc": {},
  "countryCode": "us",
  "docDescription": "string",
  "endPoint": "string",
  "formatFields": {},
  "fromBranch": "string",
  "licensedFields": [
    "string"
  ],
  "orderByFields": {
    "asc": [
      "string"
    ],
    "desc": [
      "string"
    ]
  },
  "pageLimit": 0,
  "productName": "string",
  "requestParams": {
    "column": "string",
    "condition": "gt",
    "description": "string",
    "pattern": "string",
    "required": true,
    "type": "string"
  },
  "requestResponseDescription": "string",
  "requestResponsePrefix": "string",
  "requestResponseTitle": "string",
  "sfConfig": {
    "database": "string",
    "schema": "string",
    "warehouse": "string"
  },
  "subProductName": "string",
  "tableName": "string"
}

Parameters

Name In Type Required Description
body body apiAutomationRequestModel true none
billingTag body string false Specifies the billing tag to be mapped for the data API
columnDesc body object false Specifies the description for each attribute in the response model, It will be displayed in the response schema for each field. Its an object with one or more key value pair
countryCode body string false Country code
docDescription body string true Specifies the description for the data api, This will be displayed in the documentation website
endPoint body string true Data API will be exposed with this end point for the given table name
formatFields body object false Specifies the format to be applied on the column while fetching from the snowflake database. Its an object, It can have one or more key value pair
fromBranch body string true Specifies the branch to be used to cut the new branch, Default is prod branch
licensedFields body [string] false Specifies which column in the table to be allowed only for the licensed users, Its array of values
orderByFields body object false Specifies the columns to be used to sort the response
» asc body [string] false none
» desc body [string] false none
pageLimit body integer false Specifies the number of results returned in the data api response(Default 1000)
productName body string true This is used in the billing authorizer to validate the subscription of the user while accessing the data api, Also Folders will be created with this name, all the sub products services will be placed under this folder. Folder name might not be same as product name if space or any special characters provided.
requestParams body object false Specifies the attribute/request parameter to be used in the request models, These attributes actually define the request params for the data api we are creating with automation script. It's an Object.
» column body string false Specifies which column in the table to be used to filter the record.This will be used to write the query condition in the lambda file.User input for this “Key” on the data api will be filtered with this column while querying the table
» condition body string false Specifies which operators to be used in the query filter on the table column with the user input.
» description body string false Specifies the be used in the request model for the property
» pattern body string false Specifies the regex pattern to be used in the request model to validate the user input by the API gateway
» required body boolean false Specifies fields to be marked as mandatory or optional in the request model.
» type body string false Specifies data type for the user input
requestResponseDescription body string true Provides the descriptions for the request and response model
requestResponsePrefix body string false Request and Response model file will created with this name, if not provided it will use the “subProduct Name+Country Code” for the file name
requestResponseTitle body string true Provides the value for the title attribute for the request and response model.
sfConfig body object false Specifies the schema, warehouse and database details
» database body string false none
» schema body string false none
» warehouse body string false none
subProductName body string true This name will be used with combination of country code to create the lambda function and cloudformation stack and service folder
tableName body string true Specifies the table name, Data API will fetch the record from this table and return the response

Enumerated Values

Parameter Value
countryCode us
countryCode ca
» condition gt
» condition gte
» condition lt
» condition lte
» condition eq
» type string
» type integer
» type boolean
» type array

Example responses

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response None
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
422 Unprocessable Entity 422 response None
500 Internal Server Error 500 response None

options__v1_ca_investorflows

Code samples

require 'rest-client'
require 'json'

result = RestClient.options 'https://analyticsapi.tmxanalytics.com/v1/ca/investorflows',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.options('https://analyticsapi.tmxanalytics.com/v1/ca/investorflows')

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/investorflows");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("OPTIONS");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X OPTIONS https://analyticsapi.tmxanalytics.com/v1/ca/investorflows


fetch('https://analyticsapi.tmxanalytics.com/v1/ca/investorflows',
{
  method: 'OPTIONS'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

OPTIONS https://analyticsapi.tmxanalytics.com/v1/ca/investorflows HTTP/1.1
Host: analyticsapi.tmxanalytics.com

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("OPTIONS", "https://analyticsapi.tmxanalytics.com/v1/ca/investorflows", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

OPTIONS /v1/ca/investorflows

Example responses

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response None

post__v1_ca_investorflows

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/investorflows',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/investorflows', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/investorflows");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/investorflows \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/investorflows',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/investorflows HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/investorflows", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/investorflows

Body parameter

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body investorFlowsCaRequestv1 true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns symbol
columns cusip
columns sedol
columns isin
columns total_trade_count
columns active_buy_trade_count_retail
columns active_sell_trade_count_retail
columns passive_buy_trade_count_retail
columns passive_sell_trade_count_retail
columns active_buy_trade_count_nonretail
columns active_sell_trade_count_nonretail
columns passive_buy_trade_count_nonretail
columns passive_sell_trade_count_nonretail
columns total_participant_count
columns active_buy_participant_count_retail
columns active_sell_participant_count_retail
columns passive_buy_participant_count_retail
columns passive_sell_participant_count_retail
columns active_buy_participant_count_nonretail
columns active_sell_participant_count_nonretail
columns passive_buy_participant_count_nonretail
columns passive_sell_participant_count_nonretail
columns total_shr_volume
columns active_buy_shr_volume_retail
columns active_sell_shr_volume_retail
columns passive_buy_shr_volume_retail
columns passive_sell_shr_volume_retail
columns net_shr_volume_retail
columns active_buy_shr_volume_nonretail
columns active_sell_shr_volume_nonretail
columns passive_buy_shr_volume_nonretail
columns passive_sell_shr_volume_nonretail
columns net_shr_volume_nonretail
columns total_value_volume
columns active_buy_value_volume_retail
columns active_sell_value_volume_retail
columns passive_buy_value_volume_retail
columns passive_sell_value_volume_retail
columns net_value_volume_retail
columns active_buy_value_volume_nonretail
columns active_sell_value_volume_nonretail
columns passive_buy_value_volume_nonretail
columns passive_sell_value_volume_nonretail
columns net_value_volume_nonretail
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "active_buy_participant_count_nonretail": 0,
      "active_buy_participant_count_retail": 0,
      "active_buy_shr_volume_nonretail": 0,
      "active_buy_shr_volume_retail": 0,
      "active_buy_trade_count_nonretail": 0,
      "active_buy_trade_count_retail": 0,
      "active_buy_value_volume_nonretail": 0,
      "active_buy_value_volume_retail": 0,
      "active_sell_participant_count_nonretail": 0,
      "active_sell_participant_count_retail": 0,
      "active_sell_shr_volume_nonretail": 0,
      "active_sell_shr_volume_retail": 0,
      "active_sell_trade_count_nonretail": 0,
      "active_sell_trade_count_retail": 0,
      "active_sell_value_volume_nonretail": 0,
      "active_sell_value_volume_retail": 0,
      "cusip": "string",
      "date_string": "string",
      "isin": "string",
      "net_shr_volume_nonretail": 0,
      "net_shr_volume_retail": 0,
      "net_value_volume_nonretail": 0,
      "net_value_volume_retail": 0,
      "passive_buy_participant_count_nonretail": 0,
      "passive_buy_participant_count_retail": 0,
      "passive_buy_shr_volume_nonretail": 0,
      "passive_buy_shr_volume_retail": 0,
      "passive_buy_trade_count_nonretail": 0,
      "passive_buy_trade_count_retail": 0,
      "passive_buy_value_volume_nonretail": 0,
      "passive_buy_value_volume_retail": 0,
      "passive_sell_participant_count_nonretail": 0,
      "passive_sell_participant_count_retail": 0,
      "passive_sell_shr_volume_nonretail": 0,
      "passive_sell_shr_volume_retail": 0,
      "passive_sell_trade_count_nonretail": 0,
      "passive_sell_trade_count_retail": 0,
      "passive_sell_value_volume_nonretail": 0,
      "passive_sell_value_volume_retail": 0,
      "sedol": "string",
      "symbol": "string",
      "total_participant_count": 0,
      "total_shr_volume": 0,
      "total_trade_count": 0,
      "total_value_volume": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response investorFlowsCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

options__v1_userscleanup

Code samples

require 'rest-client'
require 'json'

result = RestClient.options 'https://analyticsapi.tmxanalytics.com/v1/userscleanup',
  params: {
  }

p JSON.parse(result)

import requests

r = requests.options('https://analyticsapi.tmxanalytics.com/v1/userscleanup')

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/userscleanup");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("OPTIONS");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X OPTIONS https://analyticsapi.tmxanalytics.com/v1/userscleanup


fetch('https://analyticsapi.tmxanalytics.com/v1/userscleanup',
{
  method: 'OPTIONS'

})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

OPTIONS https://analyticsapi.tmxanalytics.com/v1/userscleanup HTTP/1.1
Host: analyticsapi.tmxanalytics.com

package main

import (
       "bytes"
       "net/http"
)

func main() {

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("OPTIONS", "https://analyticsapi.tmxanalytics.com/v1/userscleanup", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

OPTIONS /v1/userscleanup

Example responses

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response None

post__v1_userscleanup

Code samples

require 'rest-client'
require 'json'

headers = {
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/userscleanup',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/userscleanup', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/userscleanup");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/userscleanup \
  -H 'Authorization: API_KEY'


const headers = {
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/userscleanup',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/userscleanup HTTP/1.1
Host: analyticsapi.tmxanalytics.com

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/userscleanup", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/userscleanup

Example responses

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response None
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
409 Conflict 409 response None
500 Internal Server Error 500 response None

Access APIs

Authenticate

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'x-api-key' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/authn',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'x-api-key': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/authn', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/authn");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/authn \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: API_KEY'

const inputBody = '{
  "email": "string",
  "password": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'x-api-key':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/authn',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/authn HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "x-api-key": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/authn", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/authn

Allows users to generate the API Authorization token by passing valid user credentials

Body parameter

{
  "email": "string",
  "password": "string"
}

Parameters

Name In Type Required Description
body body authenticateRequestv1 true none
email body string true User email as registered with TMX Analytics
password body string true User password

Example responses

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response None
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
424 Failed Dependency 424 response None
500 Internal Server Error 500 response None

Change Password

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'x-api-key' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/changepassword',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'x-api-key': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/changepassword', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/changepassword");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/changepassword \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: API_KEY'

const inputBody = '{
  "confirmPassword": "string",
  "email": "string",
  "newPassword": "string",
  "oldPassword": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'x-api-key':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/changepassword',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/changepassword HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "x-api-key": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/changepassword", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/changepassword

Allows users to change the password

Body parameter

{
  "confirmPassword": "string",
  "email": "string",
  "newPassword": "string",
  "oldPassword": "string"
}

Parameters

Name In Type Required Description
body body changePasswordRequestv1 true none
confirmPassword body string true Re-enter new password
email body string true User Email Id
newPassword body string true New password must be at least 8 characters in length or longer and must contain 1 lowercase alphabetical character, 1 uppercase alphabetical character, 1 numeric character, one special character
oldPassword body string true Old password

Example responses

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response None
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
424 Failed Dependency 424 response None
500 Internal Server Error 500 response None

Data Availability

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'x-api-key' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/dataavailability',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'x-api-key': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/dataavailability', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/dataavailability");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/dataavailability \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'x-api-key: API_KEY'

const inputBody = '{
  "apiName": [
    "OHLC CA"
  ],
  "pageafter": 0
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'x-api-key':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/dataavailability',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/dataavailability HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "x-api-key": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/dataavailability", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/dataavailability

Provides the most recent business date for which data is available within each API

Body parameter

{
  "apiName": [
    "OHLC CA"
  ],
  "pageafter": 0
}

Parameters

Name In Type Required Description
body body dataavailabilityCaRequestv1 true none
apiName body [string] true Name of specific API or "all"
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record

Enumerated Values

Parameter Value
apiName OHLC CA
apiName Broker Liquidity CA
apiName Trades - 1min CA
apiName Trades - 1sec CA
apiName Trades - 1min US
apiName Investor Flows CA
apiName Quotes - 1min CA
apiName Quotes - 1sec CA
apiName Quotes - 1min US
apiName Quotes - 1sec US
apiName TAQ NBBO CA
apiName TAQ NBBO US
apiName Advanced Daily Stats CA
apiName Advanced Daily Stats US
apiName Basic Daily Stats CA
apiName Basic Daily Stats US
apiName Daily Stats CA
apiName Daily Stats US
apiName Global Symbols
apiName Global Symbols Delta
apiName Issuers
apiName MX Daily Stats
apiName Liquidity Analytics CA
apiName TSX/V Daily Stats
apiName Broker Summary CA
apiName all

Example responses

200 Response

{
  "data": [
    {
      "apiName": "string",
      "lastLoadDate": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response dataavailabilityCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Forgot Password

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'x-api-key' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/forgotpassword',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'x-api-key': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/forgotpassword', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/forgotpassword");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/forgotpassword \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: API_KEY'

const inputBody = '{
  "email": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'x-api-key':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/forgotpassword',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/forgotpassword HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "x-api-key": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/forgotpassword", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/forgotpassword

Sends a reset password email to the user

Body parameter

{
  "email": "string"
}

Parameters

Name In Type Required Description
body body forgotPasswordRequestv1 true none
email body string true Email for forgot password

Example responses

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response None
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Revoke Token

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'x-api-key' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/revoke',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'x-api-key': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/revoke', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/revoke");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/revoke \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: API_KEY'

const inputBody = '{
  "token": "string",
  "type": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'x-api-key':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/revoke',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/revoke HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "x-api-key": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/revoke", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/revoke

Revokes the token for the user

Body parameter

{
  "token": "string",
  "type": "string"
}

Parameters

Name In Type Required Description
body body revokeRequestv1 true none
token body string true access_token or refresh_token value that needs to be revoked
type body string true access_token or refresh_token

Example responses

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response None
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Essential Analytics for Equities

Advanced Daily Stats CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/advanceddailystats',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/advanceddailystats', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/advanceddailystats");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/advanceddailystats \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/advanceddailystats',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/advanceddailystats HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/advanceddailystats", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/advanceddailystats

Contains advanced daily statistics such as seconday close price, avgerage top of the book bid/ask volume, quoted spreads, effective spreads and trading volumes/count/value metrics across Canadian and US venues. Metrics pertaining to Canada - Covers trading activity across all Canadian marketplaces. Symbol coverage extends to all Canadian symbols as well.

Body parameter

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body advanceddailystatsCaRequestv1 true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns symbol
columns us_symbol
columns secondaryclose
columns avgbidvol
columns avgaskvol
columns avg_sprd_cent
columns avg_sprd_bps
columns effective_sprd_cent
columns effective_sprd_bps
columns trade_count_ca
columns daily_volume_ca
columns daily_trading_value_ca
columns trade_count_us
columns daily_volume_us
columns daily_trading_value_us
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "avg_sprd_bps": 0,
      "avg_sprd_cent": 0,
      "avgaskvol": 0,
      "avgbidvol": 0,
      "daily_trading_value_ca": 0,
      "daily_trading_value_us": 0,
      "daily_volume_ca": 0,
      "daily_volume_us": 0,
      "date_string": "string",
      "effective_sprd_bps": 0,
      "effective_sprd_cent": 0,
      "secondaryclose": 0,
      "symbol": "string",
      "trade_count_ca": 0,
      "trade_count_us": 0,
      "us_symbol": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response advanceddailystatsCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Basic Daily Stats CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/basicdailystatsall',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/basicdailystatsall', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/basicdailystatsall");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/basicdailystatsall \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/basicdailystatsall',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/basicdailystatsall HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/basicdailystatsall", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/basicdailystatsall

Contains essential daily statistics such as open, high, low, close, trade count aggregations, trade volume aggregations, trade value aggregations, vwap, volatility metrics, shares outstanding and market capitalization. Covers trading activity across all Canadian marketplaces. Symbol coverage extends to all Canadian symbols as well.

Body parameter

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body basicdailystatsallCaRequestv1 true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns symbol
columns first_observed_price
columns intraday_high
columns intraday_low
columns last_observed_price
columns london_4pm_price
columns total_trade_count
columns total_daily_volume
columns total_daily_value
columns total_primary_exchange_volume
columns avg_30day_trade_count
columns avg_30day_daily_volume
columns avg_30day_daily_value
columns twap_30day
columns twap_60day
columns volatility30_pct
columns volatility60_pct
columns shares_outstanding
columns mkt_cap
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "avg_30day_daily_value": 0,
      "avg_30day_daily_volume": 0,
      "avg_30day_trade_count": 0,
      "date_string": "string",
      "first_observed_price": 0,
      "intraday_high": 0,
      "intraday_low": 0,
      "last_observed_price": 0,
      "london_4pm_price": 0,
      "mkt_cap": 0,
      "shares_outstanding": 0,
      "symbol": "string",
      "total_daily_value": 0,
      "total_daily_volume": 0,
      "total_primary_exchange_volume": 0,
      "total_trade_count": 0,
      "twap_30day": 0,
      "twap_60day": 0,
      "volatility30_pct": 0,
      "volatility60_pct": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response basicdailystatsallCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Daily Stats CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/dailystats',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/dailystats', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/dailystats");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/dailystats \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/dailystats',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/dailystats HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/dailystats", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/dailystats

Contains daily statistics such as open, high, low, close, total volume, volume_moo, volume_moc, volume_dark, vwap, volatility30_pct, volatility60_pct.Covers trading activity across all Canadian marketplaces. Symbol coverage extends to all Canadian symbols as well.

Body parameter

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body dailystatsCaRequestv1 true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns symbol
columns volume_block
columns volume_moo
columns volume_moc
columns volume_odd_lot
columns volume_dark
columns total_adjvolume
columns total_adjvalue
columns total_adjcount
columns intraday_high
columns intraday_low
columns first_observed_price
columns fop_venue
columns fop_time_eastern
columns last_observed_price
columns lop_venue
columns lop_time_eastern
columns avg_advolume30
columns vwap30
columns vwap60
columns intraday_volatility_pct
columns volume_cross
columns volume_pre_market
columns volume_post_market
columns total_trade_count
columns total_daily_volume
columns total_daily_value
columns total_primary_exchange_volume
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "avg_advolume30": 0,
      "date_string": "string",
      "first_observed_price": 0,
      "fop_time_eastern": "string",
      "fop_venue": "string",
      "intraday_high": 0,
      "intraday_low": 0,
      "intraday_volatility_pct": 0,
      "last_observed_price": 0,
      "lop_time_eastern": "string",
      "lop_venue": "string",
      "symbol": "string",
      "total_adjcount": 0,
      "total_adjvalue": 0,
      "total_adjvolume": 0,
      "total_daily_value": 0,
      "total_daily_volume": 0,
      "total_primary_exchange_volume": 0,
      "total_trade_count": 0,
      "volume_block": 0,
      "volume_cross": 0,
      "volume_dark": 0,
      "volume_moc": 0,
      "volume_moo": 0,
      "volume_odd_lot": 0,
      "volume_post_market": 0,
      "volume_pre_market": 0,
      "vwap30": 0,
      "vwap60": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response dailystatsCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Liquidity Analytics CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/liquidityanalytics',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/liquidityanalytics', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/liquidityanalytics");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/liquidityanalytics \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/liquidityanalytics',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/liquidityanalytics HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/liquidityanalytics", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/liquidityanalytics

Provides a market-wide view of the total displayed (onbook) liquidity available by symbol each day at multiple price levels beyond the top of book. The dataset aggregates the consolidated market-wide orderbook to build these calculations and is meant to provide a robust input into assessing market-wide quoted liquidity and determining an appropriate order/trade execution strategy. It can also be used to help detect when material changes occurr to a symbol's liquidity profile

Body parameter

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body liquidityanalyticsCaRequestv1 true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns symbol
columns venue
columns pct_time_bid_10b_deep
columns bidsize10b_impact
columns bidvalue10b_impact
columns pct_time_bid_25b_deep
columns bidsize25b_impact
columns bidvalue25b_impact
columns pct_time_ask_10b_deep
columns asksize10b_impact
columns askvalue10b_impact
columns pct_time_ask_25b_deep
columns asksize25b_impact
columns askvalue25b_impact
columns pct_time_bidask_25k_deep
columns sprd_25k_bps
columns pct_time_bidask_50k_deep
columns sprd_50k_bps
columns pct_time_bidask_100k_deep
columns sprd_100k_bps
columns pct_time_bidask_200k_deep
columns sprd_200k_bps
columns pct_time_bidask_500k_deep
columns sprd_500k_bps
columns pct_time_bidask_1m_deep
columns sprd_1m_bps
columns time_wgt_bidvalue10b_impact_component_score
columns time_wgt_bidvalue25b_impact_component_score
columns time_wgt_askvalue10b_impact_component_score
columns time_wgt_askvalue25b_impact_component_score
columns time_wgt_sprd_25k_bps_component_score
columns time_wgt_sprd_50k_bps_component_score
columns time_wgt_sprd_100k_bps_component_score
columns time_wgt_sprd_200k_bps_component_score
columns time_wgt_sprd_500k_bps_component_score
columns time_wgt_sprd_1m_bps_component_score
columns liquidity_score
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "asksize10b_impact": 0,
      "asksize25b_impact": 0,
      "askvalue10b_impact": 0,
      "askvalue25b_impact": 0,
      "bidsize10b_impact": 0,
      "bidsize25b_impact": 0,
      "bidvalue10b_impact": 0,
      "bidvalue25b_impact": 0,
      "date_string": "string",
      "liquidity_score": 0,
      "pct_time_ask_10b_deep": 0,
      "pct_time_ask_25b_deep": 0,
      "pct_time_bid_10b_deep": 0,
      "pct_time_bid_25b_deep": 0,
      "pct_time_bidask_100k_deep": 0,
      "pct_time_bidask_1m_deep": 0,
      "pct_time_bidask_200k_deep": 0,
      "pct_time_bidask_25k_deep": 0,
      "pct_time_bidask_500k_deep": 0,
      "pct_time_bidask_50k_deep": 0,
      "sprd_100k_bps": 0,
      "sprd_1m_bps": 0,
      "sprd_200k_bps": 0,
      "sprd_25k_bps": 0,
      "sprd_500k_bps": 0,
      "sprd_50k_bps": 0,
      "symbol": "string",
      "time_wgt_askvalue10b_impact_component_score": 0,
      "time_wgt_askvalue25b_impact_component_score": 0,
      "time_wgt_bidvalue10b_impact_component_score": 0,
      "time_wgt_bidvalue25b_impact_component_score": 0,
      "time_wgt_sprd_100k_bps_component_score": 0,
      "time_wgt_sprd_1m_bps_component_score": 0,
      "time_wgt_sprd_200k_bps_component_score": 0,
      "time_wgt_sprd_25k_bps_component_score": 0,
      "time_wgt_sprd_500k_bps_component_score": 0,
      "time_wgt_sprd_50k_bps_component_score": 0,
      "venue": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response liquidityanalyticsCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Liquidity Summary CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/liquiditysummary',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/liquiditysummary', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/liquiditysummary");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/liquiditysummary \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "date_string"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/liquiditysummary',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/liquiditysummary HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/liquiditysummary", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/liquiditysummary

Contains pre-calculated spread with the following specifications: 1) Metrics are calculated using the consolidated order book from all Canadian venues 2) The bid/ask is calculated as the volume weighted average price that would be realized assuming the execution of a $50,000 marketable sell/buy order 3) The effective spread is calculated at each one-second interval between 9:45 - 15:45 ET 4) The reported average bid-ask spread is computed by taking the time-weighted average of all one second effective spreads for each day. Covers trading activity across all Canadian marketplaces. Symbol coverage extends to all Canadian symbols as well.

Body parameter

{
  "columns": [
    "date_string"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body liquiditySummaryCaRequest true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns date_string
columns symbol
columns spread

Example responses

200 Response

{
  "data": [
    {
      "date_string": "string",
      "spread": 0,
      "symbol": "string"
    }
  ]
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response liquiditySummaryCaResponse
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

TSX Daily Stats CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/tsxdailystats',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/tsxdailystats', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/tsxdailystats");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/tsxdailystats \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "exchange"
  ],
  "enddate": "string",
  "exchange": "string",
  "pageafter": 0,
  "startdate": "string",
  "stat": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/tsxdailystats',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/tsxdailystats HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/tsxdailystats", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/tsxdailystats

Contains premium TSX/V specific daily statistics such as close price, open price, time of price movement extension, time of market state change and time of market imbalance message. Covers trading activity across TSX/TSXV and Alpha. Symbol coverage extends to all TSX/V listed symbols.

Body parameter

{
  "columns": [
    "exchange"
  ],
  "enddate": "string",
  "exchange": "string",
  "pageafter": 0,
  "startdate": "string",
  "stat": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body tsxdailystatsCaRequestv1 true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
exchange body string false Identifies the venue for the applicable statistics
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Starting date in EST from when the data is required. For eg. start date of 2020-09-01 will include data from 2020-09-01 to enddate
stat body string true Identifies the various statistics that can be obtained. Possible values are available in Reference Guide for stat for TSX Daily Stats CA
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Reference Guide for stat for TSX Daily Stats CA

stat keyvalue value time value2 value3
ccp <symbol> Close price for symbol on associated exchange Market close time for symbol on associated exchange N/A N/A
cop <symbol> Open price for symbol on associated exchange Market open time for symbol on associated exchange Boardlot size of symbol N/A
pme <symbol> N/A Time of price movement extension on associated exchange N/A N/A
msc <symbol> Market state on associated exchange Time of market state change on associated exchange N/A N/A
moc <symbol> Imbalance volume on associated exchange Time of market imbalance message on associated exchange Imbalance side on associated exchange Imbalance price on associated exchange

Enumerated Values

Parameter Value
columns exchange
columns year
columns stat
columns key_value
columns time
columns time_nanos
columns value
columns value2
columns value3
columns value4_to_n
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "date_string": "string",
      "exchange": "string",
      "key_value": "string",
      "stat": "string",
      "time": "string",
      "time_nanos": 0,
      "value": "string",
      "value2": "string",
      "value3": "string",
      "value4_to_n": [
        "string"
      ],
      "year": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response tsxdailystatsCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Advanced Daily Stats US

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/us/advanceddailystats',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/us/advanceddailystats', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/us/advanceddailystats");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/us/advanceddailystats \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/us/advanceddailystats',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/us/advanceddailystats HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/us/advanceddailystats", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/us/advanceddailystats

Contains advanced daily statistics such as seconday close price, avgerage top of the book bid/ask volume, quoted spreads, effective spreads and trading volumes/count/value metrics across Canadian and US venues. Metrics pertaining to Canada - Covers trading activity across all Canadian marketplaces. Symbol coverage extends to all Canadian symbols as well.

Body parameter

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body advanceddailystatsUsRequestv1 true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns symbol
columns ca_symbol
columns secondaryclose
columns avgbidvol
columns avgaskvol
columns avg_sprd_cent
columns avg_sprd_bps
columns effective_sprd_cent
columns effective_sprd_bps
columns trade_count_ca
columns daily_volume_ca
columns daily_trading_value_ca
columns trade_count_us
columns daily_volume_us
columns daily_trading_value_us
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "avg_sprd_bps": 0,
      "avg_sprd_cent": 0,
      "avgaskvol": 0,
      "avgbidvol": 0,
      "ca_symbol": "string",
      "daily_trading_value_ca": 0,
      "daily_trading_value_us": 0,
      "daily_volume_ca": 0,
      "daily_volume_us": 0,
      "date_string": "string",
      "effective_sprd_bps": 0,
      "effective_sprd_cent": 0,
      "secondaryclose": 0,
      "symbol": "string",
      "trade_count_ca": 0,
      "trade_count_us": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response advanceddailystatsUsResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Basic Daily Stats US

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/us/basicdailystatsall',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/us/basicdailystatsall', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/us/basicdailystatsall");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/us/basicdailystatsall \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/us/basicdailystatsall',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/us/basicdailystatsall HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/us/basicdailystatsall", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/us/basicdailystatsall

Contains essential daily statistics such as open, high, low, close, trade count aggregations, trade volume aggregations, trade value aggregations, vwap, volatility metrics, shares outstanding and market capitalization. Covers trading activity across all US marketplaces. Symbol coverage extends to all US symbols as well.

Body parameter

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body basicdailystatsallUsRequestv1 true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns symbol
columns first_observed_price
columns intraday_high
columns intraday_low
columns last_observed_price
columns london_4pm_price
columns total_trade_count
columns total_daily_volume
columns total_daily_value
columns avg_30day_trade_count
columns avg_30day_daily_volume
columns avg_30day_daily_value
columns TWAP_30day
columns TWAP_60day
columns volatility30_pct
columns volatility60_pct
columns shares_outstanding
columns mkt_cap
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "avg_30day_daily_value": 0,
      "avg_30day_daily_volume": 0,
      "avg_30day_trade_count": 0,
      "date_string": "string",
      "first_observed_price": "string",
      "intraday_high": "string",
      "intraday_low": "string",
      "last_observed_price": "string",
      "london_4pm_price": "string",
      "mkt_cap": 0,
      "shares_outstanding": 0,
      "symbol": "string",
      "total_daily_value": 0,
      "total_daily_volume": 0,
      "total_trade_count": 0,
      "twap_30day": "string",
      "twap_60day": "string",
      "volatility30_pct": "string",
      "volatility60_pct": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response basicdailystatsallUsResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Daily Stats US

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/us/dailystats',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/us/dailystats', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/us/dailystats");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/us/dailystats \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/us/dailystats',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/us/dailystats HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/us/dailystats", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/us/dailystats

Contains daily statistics such as open, high, low, close, total volume, volume_moo, volume_moc, vwap, volatility30_pct, volatility60_pct. Covers trading activity across all US marketplaces. Symbol coverage extends to all US symbols as well

Body parameter

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body dailystatsUsRequestv1 true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns symbol
columns volume_block
columns volume_moo
columns volume_moc
columns volume_odd_lot
columns total_adjvolume
columns total_adjvalue
columns total_adjcount
columns intraday_high
columns intraday_low
columns first_observed_price
columns FOP_venue
columns FOP_time_eastern
columns last_observed_price
columns LOP_venue
columns LOP_time_eastern
columns avg_ADVolume30
columns vwap30
columns vwap60
columns intraday_volatility_pct
columns volume_cross
columns volume_pre_market
columns volume_post_market
columns total_trade_count
columns total_daily_volume
columns total_daily_value
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "avg_advolume30": 0,
      "date_string": "string",
      "first_observed_price": 0,
      "fop_time_eastern": "string",
      "fop_venue": "string",
      "intraday_high": 0,
      "intraday_low": 0,
      "intraday_volatility_pct": 0,
      "last_observed_price": 0,
      "lop_time_eastern": "string",
      "lop_venue": "string",
      "symbol": "string",
      "total_adjcount": 0,
      "total_adjvalue": 0,
      "total_adjvolume": 0,
      "total_daily_value": 0,
      "total_daily_volume": 0,
      "total_trade_count": 0,
      "volume_block": 0,
      "volume_cross": 0,
      "volume_moc": 0,
      "volume_moo": 0,
      "volume_odd_lot": 0,
      "volume_post_market": 0,
      "volume_pre_market": 0,
      "vwap30": 0,
      "vwap60": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response dailystatsUsResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Equity Intraday Trades

OHLC CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/basicdailystats',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/basicdailystats', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/basicdailystats");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/basicdailystats \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "first_observed_price"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/basicdailystats',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/basicdailystats HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/basicdailystats", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/basicdailystats

Essential daily statistics such as open, high, low, close. Covers trading activity across all Canadian marketplaces. Symbol coverage extends to all Canadian symbols as well

Body parameter

{
  "columns": [
    "first_observed_price"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body basicdailystatsCaRequestv1 true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns first_observed_price
columns last_observed_price
columns intraday_high
columns intraday_low
columns symbol
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "date_string": "string",
      "first_observed_price": 0,
      "intraday_high": 0,
      "intraday_low": 0,
      "last_observed_price": 0,
      "symbol": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response basicdailystatsCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
404 Not Found 404 response None
409 Conflict 409 response None
500 Internal Server Error 500 response None

Trades - 1min CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/tradebar1min',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/tradebar1min', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/tradebar1min");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/tradebar1min \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/tradebar1min',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/tradebar1min HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/tradebar1min", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/tradebar1min

Canadian trades data from all marketplaces aggregated in one minute bars with metrics such as open, high, low, close, vwap, number of trades excluding blocks etc.

Body parameter

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body tradebar1minCaRequestv1 true none
adjusted body boolean false Boolean value to check if the response should include adjusted value
adjustedForDate body string false Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns body [string] false Select columns from the enumerated list below can be provided as an array
datestring body string true Date in EST for when the data is required. For eg. '2020-09-01'
endtime body string false Timestamp in EST till when the data is required. The minute bars format is HHMM. Example: 11:05
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
starttime body string false Starting timestamp in EST from when the data is required. The minute bars format is HHMM. Example: 11:04
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns barstarttime
columns symbol
columns firsttradeprice
columns hightradeprice
columns lowtradeprice
columns lasttradeprice
columns vwap
columns vwapexint
columns vwapexblock
columns volume
columns volumeexint
columns volumeexblock
columns value
columns valueexint
columns valueexblock
columns numtrades
columns numtradesexint
columns numtradesexblock
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "barstarttime": "string",
      "date_string": "string",
      "firsttradeprice": 0,
      "highbidprice": 0,
      "lasttradeprice": "string",
      "lowtradeprice": 0,
      "numtrades": 0,
      "numtradesexblock": 0,
      "numtradesexint": 0,
      "symbol": "string",
      "value": 0,
      "valueexblock": 0,
      "valueexint": 0,
      "volume": 0,
      "volumeexblock": 0,
      "volumeexint": 0,
      "vwap": 0,
      "vwapexblock": 0,
      "vwapexint": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response tradebar1minCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
404 Not Found 404 response None
409 Conflict 409 response None
500 Internal Server Error 500 response None

Trades - 1sec CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/tradebar1sec',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/tradebar1sec', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/tradebar1sec");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/tradebar1sec \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbol": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/tradebar1sec',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/tradebar1sec HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/tradebar1sec", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/tradebar1sec

Canadian trades data from all marketplaces aggregated in one second bars with metrics such as open, high, low, close, vwap, number of trades excluding blocks etc.

Body parameter

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbol": "string"
}

Parameters

Name In Type Required Description
body body tradebar1secCaRequestv1 true none
adjusted body boolean false Boolean value to check if the response should include adjusted value
adjustedForDate body string false Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns body [string] false Select columns from the enumerated list below can be provided as an array
datestring body string true Date in EST for when the data is required. For eg. '2020-09-01'
endtime body string false Timestamp in EST till when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:03:02 and 13:03 are acceptable.
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
starttime body string false Starting timestamp in EST from when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:04:02 and 13:04 are acceptable.
symbol body string true Ticker symbol of the security. For eg. "AC" for Air Canada or "ALL_SYMBOLS" for fetching all the symbols

Enumerated Values

Parameter Value
columns barstarttime
columns symbol
columns firsttradeprice
columns hightradeprice
columns lowtradeprice
columns lasttradeprice
columns vwap
columns vwapexint
columns vwapexblock
columns volume
columns volumeexint
columns volumeexblock
columns value
columns valueexint
columns valueexblock
columns numtrades
columns numtradesexint
columns numtradesexblock
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "barstarttime": "string",
      "date_string": "string",
      "firsttradeprice": 0,
      "hightradeprice": 0,
      "lasttradeprice": 0,
      "lowtradeprice": 0,
      "numtrades": 0,
      "numtradesexblock": 0,
      "numtradesexint": 0,
      "symbol": "string",
      "value": 0,
      "valueexblock": 0,
      "valueexint": 0,
      "volume": 0,
      "volumeexblock": 0,
      "volumeexint": 0,
      "vwap": 0,
      "vwapexblock": 0,
      "vwapexint": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response tradebar1secCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
404 Not Found 404 response None
409 Conflict 409 response None
500 Internal Server Error 500 response None

Trades - 1min US

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/us/tradebar1min',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/us/tradebar1min', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/us/tradebar1min");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/us/tradebar1min \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "symbol"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/us/tradebar1min',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/us/tradebar1min HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/us/tradebar1min", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/us/tradebar1min

US trades data aggregated in one minute bars with metrics such as open, high, low, close, vwap, number of trades excluding blocks etc.

Body parameter

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "symbol"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body tradebar1minUsRequestv1 true none
adjusted body boolean false Boolean value to check if the response should include adjusted value
adjustedForDate body string false Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns body [string] false Select columns from the enumerated list below can be provided as an array
datestring body string true Date in EST for when the data is required. For eg. '2020-09-01'
endtime body string false Timestamp in EST till when the data is required. The minute bars format is HHMM. Example: 11:05
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
starttime body string false Starting timestamp in EST from when the data is required. The minute bars format is HHMM. Example: 11:04
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns symbol
columns bin_start
columns bin_end
columns open
columns high
columns low
columns close
columns volume
columns volume_ex_block
columns vwap
columns vwap_ex_block
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "bin_end": "string",
      "bin_start": "string",
      "close": 0,
      "date_string": "string",
      "high": "string",
      "low": 0,
      "open": 0,
      "symbol": "string",
      "volume": 0,
      "volume_ex_block": 0,
      "vwap": 0,
      "vwap_ex_block": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response tradebar1minUsResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
404 Not Found 404 response None
409 Conflict 409 response None
500 Internal Server Error 500 response None

Trades - 1sec US

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/us/tradebar1sec',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/us/tradebar1sec', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/us/tradebar1sec");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/us/tradebar1sec \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "symbol"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/us/tradebar1sec',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/us/tradebar1sec HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/us/tradebar1sec", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/us/tradebar1sec

US trades data from all marketplaces aggregated in one second bars with metrics such as open, high, low, close, vwap, number of trades excluding blocks etc.

Body parameter

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "symbol"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body tradebar1secUsRequestv1 true none
adjusted body boolean false Boolean value to check if the response should include adjusted value
adjustedForDate body string false Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns body [string] false Select columns from the enumerated list below can be provided as an array
datestring body string true Date in EST for when the data is required. For eg. '2020-09-01'
endtime body string false Timestamp in EST till when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:03:02 and 13:03 are acceptable.
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
starttime body string false Starting timestamp in EST from when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:04:02 and 13:04 are acceptable.
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns symbol
columns bin_start
columns bin_end
columns open
columns high
columns low
columns close
columns volume
columns volume_ex_block
columns vwap
columns vwap_ex_block
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "bin_end": "string",
      "bin_start": "string",
      "close": 0,
      "date_string": "string",
      "high": "string",
      "low": 0,
      "open": 0,
      "symbol": "string",
      "volume": 0,
      "volume_ex_block": 0,
      "vwap": 0,
      "vwap_ex_block": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response tradebar1secUsResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
404 Not Found 404 response None
409 Conflict 409 response None
500 Internal Server Error 500 response None

Broker Analytics

Broker Daily Stats CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/brokerdailystats',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/brokerdailystats', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/brokerdailystats");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/brokerdailystats \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "brokers": [
    "string"
  ],
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/brokerdailystats',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/brokerdailystats HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/brokerdailystats", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/brokerdailystats

Provides insights into market share by broker through a more detailed view into trade volume by broker for various trading sessions and order types, subject to broker attribution

Body parameter

{
  "brokers": [
    "string"
  ],
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body brokerDailyStatsCaRequestv1 true none
brokers body [string] false Identifies the broker ID. For eg. [90, 80] or ["ALL_BROKERS"] for fetching all the brokers. Optional field, by default its ["ALL_BROKERS"]
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns symbol
columns broker
columns volume_buy
columns volume_sell
columns value_buy
columns value_sell
columns count_buy
columns count_sell
columns volume_block_buy
columns volume_block_sell
columns volume_moc_buy
columns volume_moc_sell
columns volume_moo_buy
columns volume_moo_sell
columns volume_odd_lot_buy
columns volume_odd_lot_sell
columns volume_dark_buy
columns volume_dark_sell
columns volume_cross_buy
columns volume_cross_sell
columns volume_premarket_buy
columns volume_premarket_sell
columns volume_postmarket_buy
columns volume_postmarket_sell
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "broker": "string",
      "count_buy": 0,
      "count_sell": 0,
      "date_string": "string",
      "symbol": "string",
      "value_buy": 0,
      "value_sell": 0,
      "volume_block_buy": 0,
      "volume_block_sell": 0,
      "volume_buy": 0,
      "volume_cross_buy": 0,
      "volume_cross_sell": 0,
      "volume_dark_buy": 0,
      "volume_dark_sell": 0,
      "volume_moc_buy": 0,
      "volume_moc_sell": 0,
      "volume_moo_buy": 0,
      "volume_moo_sell": 0,
      "volume_odd_lot_buy": 0,
      "volume_odd_lot_sell": 0,
      "volume_postmarket_buy": 0,
      "volume_postmarket_sell": 0,
      "volume_premarket_buy": 0,
      "volume_premarket_sell": 0,
      "volume_sell": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response brokerDailyStatsCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Broker Liquidity CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/brokerliquidity',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/brokerliquidity', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/brokerliquidity");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/brokerliquidity \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "brokers": [
    "string"
  ],
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/brokerliquidity',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/brokerliquidity HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/brokerliquidity", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/brokerliquidity

Contains broker-specific quoting analytics at multiple orderbook levels beyond the top of book. This unique dataset provides an enhanced view into displayed liquidity by broker to help understand liquidity dynamics and market share contributed by each broker, subject to broker attribution. One-minute orderbook snapshots are taken throughout the trading day (9:45 AM - 15:45 PM ET/EST) and then the time-weighted average is used to represent an end of day value

Body parameter

{
  "brokers": [
    "string"
  ],
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body brokerLiquidityCaRequestv1 true none
brokers body [string] false Identifies the broker ID. For eg. [90, 80] or ["ALL_BROKERS"] for fetching all the brokers. Optional field, by default its ["ALL_BROKERS"]
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns symbol
columns broker
columns pct_time_2sides_avail
columns sprd_TOB_bps
columns pct_time_atNBB
columns avgNBB_volume
columns avgNBB_value
columns pct_time_atNBO
columns avgNBO_volume
columns avgNBO_value
columns pct_time_bid_10b_deep
columns bidsize10b_impact
columns bidvalue10b_impact
columns pct_time_bid_25b_deep
columns bidsize25b_impact
columns bidvalue25b_impact
columns pct_time_ask_10b_deep
columns asksize10b_impact
columns askvalue10b_impact
columns pct_time_ask_25b_deep
columns asksize25b_impact
columns askvalue25b_impact
columns pct_time_bidask_25k_deep
columns sprd_25k_bps
columns pct_time_bidask_50k_deep
columns sprd_50k_bps
columns pct_time_bidask_100k_deep
columns sprd_100k_bps
columns pct_time_bidask_200k_deep
columns sprd_200k_bps
columns pct_time_bidask_500k_deep
columns sprd_500k_bps
columns pct_time_bidask_1m_deep
columns sprd_1m_bps
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "asksize10b_impact": 0,
      "asksize25b_impact": 0,
      "askvalue10b_impact": 0,
      "askvalue25b_impact": 0,
      "avgnbb_value": 0,
      "avgnbb_volume": 0,
      "avgnbo_value": 0,
      "avgnbo_volume": 0,
      "bidsize10b_impact": 0,
      "bidsize25b_impact": 0,
      "bidvalue10b_impact": 0,
      "bidvalue25b_impact": 0,
      "broker": "string",
      "date_string": "string",
      "pct_time_2sides_avail": 0,
      "pct_time_ask_10b_deep": 0,
      "pct_time_ask_25b_deep": 0,
      "pct_time_atnbb": 0,
      "pct_time_atnbo": 0,
      "pct_time_bid_10b_deep": 0,
      "pct_time_bid_25b_deep": 0,
      "pct_time_bidask_100k_deep": 0,
      "pct_time_bidask_1m_deep": 0,
      "pct_time_bidask_200k_deep": 0,
      "pct_time_bidask_25k_deep": 0,
      "pct_time_bidask_500k_deep": 0,
      "pct_time_bidask_50k_deep": 0,
      "sprd_100k_bps": 0,
      "sprd_1m_bps": 0,
      "sprd_200k_bps": 0,
      "sprd_25k_bps": 0,
      "sprd_500k_bps": 0,
      "sprd_50k_bps": 0,
      "sprd_tob_bps": 0,
      "symbol": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response brokerLiquidityCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Broker Summary CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/brokersummary',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/brokersummary', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/brokersummary");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/brokersummary \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "brokers": [
    "string"
  ],
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/brokersummary',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/brokersummary HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/brokersummary", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/brokersummary

Contains spread and volume metrics broker down by broker.

Body parameter

{
  "brokers": [
    "string"
  ],
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body brokerSummaryCaRequestv1 true none
brokers body [string] false Identifies the broker ID. For eg. [90, 80] or ["ALL_BROKERS"] for fetching all the brokers. Optional field, by default its ["ALL_BROKERS"]
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns symbol
columns broker
columns time_period
columns notional
columns bid_ratio
columns bid_volume
columns bid_value
columns ask_ratio
columns ask_volume
columns ask_value
columns spread
columns spread_bps
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "ask_ratio": 0,
      "ask_value": 0,
      "ask_volume": 0,
      "bid_ratio": 0,
      "bid_value": 0,
      "bid_volume": 0,
      "broker": 0,
      "date_string": "string",
      "notional": 0,
      "spread": 0,
      "spread_bps": 0,
      "symbol": "string",
      "time_period": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response brokerSummaryCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Corporate Actions & Reference Data

Issuers CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/issuers',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/issuers', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/issuers");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/issuers \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "timeseries_id"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/issuers',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/issuers HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/issuers", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/issuers

Contains reference data for securities listed on TSX and TSXV

Body parameter

{
  "columns": [
    "timeseries_id"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body issuersCaRequestv1 true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Starting date in EST from when the data is required. For eg. start date of 2020-09-01 will include data from 2020-09-01 to enddate
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns timeseries_id
columns symbol
columns is_etf
columns issue_long_name
columns cusip
columns segment
columns listing_exchange
columns issue_short_name
columns company_name
columns issue_list_date
columns security_type
columns fund_family
columns is_fund_of_funds
columns interlisted_exchange
columns us_symbol
columns date_string
columns year

Example responses

200 Response

{
  "data": [
    {
      "company_name": "string",
      "cusip": "string",
      "date_string": "string",
      "fund_family": "string",
      "interlisted_exchange": "string",
      "is_etf": 0,
      "is_fund_of_funds": "string",
      "issue_list_date": "string",
      "issue_long_name": "string",
      "issue_short_name": "string",
      "listing_exchange": "string",
      "security_type": "string",
      "segment": "string",
      "symbol": "string",
      "timeseries_id": "string",
      "us_symbol": "string",
      "year": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response issuersCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Global Symbols

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/globalsymbols',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/globalsymbols', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/globalsymbols");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/globalsymbols \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "timeseries_id"
  ],
  "countrycode": "string",
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/globalsymbols',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/globalsymbols HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/globalsymbols", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/globalsymbols

Contains security reference and corporate actions data such as dividends and splits.

Body parameter

{
  "columns": [
    "timeseries_id"
  ],
  "countrycode": "string",
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body globalsymbolsRequestv1 true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
countrycode body string true Identifies the country the security trades in
enddate body string true Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns timeseries_id
columns exchange
columns symbol
columns cusip
columns sedol
columns isin
columns primary_exchange
columns security_type
columns price_ratio
columns rev_price_ratio
columns price_offset
columns shares_outstanding
columns country_code
columns currency
columns date_string
columns year

Example responses

200 Response

{
  "data": [
    {
      "country_code": "string",
      "currency": "string",
      "cusip": "string",
      "date_string": "string",
      "exchange": "string",
      "isin": "string",
      "price_offset": 0,
      "price_ratio": 0,
      "primary_exchange": "string",
      "rev_price_ratio": 0,
      "security_type": "string",
      "sedol": "string",
      "shares_outstanding": 0,
      "symbol": "string",
      "timeseries_id": "string",
      "year": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response globalsymbolsResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Global Symbols Delta

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/globalsymbolsdelta',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/globalsymbolsdelta', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/globalsymbolsdelta");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/globalsymbolsdelta \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "timeseries_id"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/globalsymbolsdelta',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/globalsymbolsdelta HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/globalsymbolsdelta", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/globalsymbolsdelta

Description for Global Symbols Delta

Body parameter

{
  "columns": [
    "timeseries_id"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body globalsymbolsdeltaRequestv1 true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns timeseries_id
columns exchange
columns symbol
columns new_symbol
columns new_cusip
columns new_sedol
columns new_isin
columns new_primary_exchange
columns new_price_ratio
columns new_rev_price_ratio
columns price_offset
columns new_shares_outstanding
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "date_string": "string",
      "exchange": "string",
      "new_cusip": "string",
      "new_isin": "string",
      "new_price_ratio": 0,
      "new_primary_exchange": "string",
      "new_rev_price_ratio": 0,
      "new_sedol": "string",
      "new_shares_outstanding": 0,
      "new_symbol": "string",
      "price_offset": 0,
      "symbol": "string",
      "timeseries_id": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response globalsymbolsdeltaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

New MOC Imbalance Analytics

MOCI CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/moci',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/moci', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/moci");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/moci \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "date_string"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/moci',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/moci HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/moci", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/moci

New MOCI provides information from the new MOC Facility for eligible stocks.

Body parameter

{
  "columns": [
    "date_string"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body mociRequest true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns date_string
columns venue
columns symbol
columns time
columns time_nanos
columns imbalancereferenceprice
columns imbalanceside
columns imbalancevolume
columns pairedvolume
columns marketorderimbalancevolume
columns marketorderimbalanceside
columns nearindicativeclosingprice
columns farindicativeclosingprice
columns pricevariation
columns seq

Example responses

200 Response

{
  "data": [
    {
      "date_string": "string",
      "farindicativeclosingprice": 0,
      "imbalancereferenceprice": 0,
      "imbalanceside": "string",
      "imbalancevolume": 0,
      "marketorderimbalanceside": "string",
      "marketorderimbalancevolume": 0,
      "nearindicativeclosingprice": 0,
      "pairedvolume": 0,
      "pricevariation": 0,
      "seq": 0,
      "symbol": "string",
      "time": "string",
      "time_nanos": 0,
      "venue": "string"
    }
  ]
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response mociResponse
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Essential Analytics for Options & Futures

MX Daily Stats CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/mxdailystats',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/mxdailystats', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/mxdailystats");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/mxdailystats \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "callputcode": "string",
  "columns": [
    "underlying_symbol"
  ],
  "deltalowerlimit": 0,
  "deltaupperlimit": 0,
  "enddate": "string",
  "expirationenddate": "string",
  "expirationstartdate": "string",
  "gammalowerlimit": 0,
  "gammaupperlimit": 0,
  "instrumentgroup": "string",
  "instrumenttype": "string",
  "pageafter": 0,
  "startdate": "string",
  "strikepricelowerlimit": 0,
  "strikepriceupperlimit": 0,
  "symbol": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/mxdailystats',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/mxdailystats HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/mxdailystats", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/mxdailystats

Contains daily statistics on MX data such as Roll Volume, Put Call Ratio, Implied Volalitity, Delta, Gamma, Rho, Vega, Theta, Reference Price, Last Price, Last Bid, Last Ask, Open Interest, Trade Count, Trade Volume, Trade Value.

Body parameter

{
  "callputcode": "string",
  "columns": [
    "underlying_symbol"
  ],
  "deltalowerlimit": 0,
  "deltaupperlimit": 0,
  "enddate": "string",
  "expirationenddate": "string",
  "expirationstartdate": "string",
  "gammalowerlimit": 0,
  "gammaupperlimit": 0,
  "instrumentgroup": "string",
  "instrumenttype": "string",
  "pageafter": 0,
  "startdate": "string",
  "strikepricelowerlimit": 0,
  "strikepriceupperlimit": 0,
  "symbol": "string"
}

Parameters

Name In Type Required Description
body body mxdailystatsCaRequestv1 true none
callputcode body string false Identifies between Call Options and Put Options
columns body [string] false Select columns from the enumerated list below can be provided as an array
deltalowerlimit body number false Lower limit for Delta
deltaupperlimit body number false Upper limit for Delta
enddate body string true Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
expirationenddate body string false Ending expiration date in YYYY-MM-DD
expirationstartdate body string false Starting expiration date in YYYY-MM-DD
gammalowerlimit body number false Lower limit for Gamma
gammaupperlimit body number false Upper limit for Gamma
instrumentgroup body string false Instrument Key
instrumenttype body string true Identifies the type of instrument. Possible values are Future,EquityOption, Strategy, FutureOption
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Starting date in EST from when the data is required. For eg. start date of 2020-09-01 will include data from 2020-09-01 to enddate
strikepricelowerlimit body number false Lower limit of Strike Price of Option
strikepriceupperlimit body number false Upper limit of Strike Price of Option
symbol body string true Ticker symbol of the security. For eg. "AC" for Air Canada. Please note that "ALL_SYMBOLS" cannot be used with this API

Enumerated Values

Parameter Value
columns underlying_symbol
columns external_symbol
columns instrumenttype
columns instrumentgroup
columns call_put_code
columns option_type
columns strike_price
columns last_observed_price_underlying
columns last_price_extsymbol
columns last_bid_extsymbol
columns last_ask_extsymbol
columns london_4pm_bid
columns london_4pm_ask
columns london_4pm_price
columns referenceprice
columns settlement_price
columns expiration_date
columns open_interest
columns trade_count
columns trade_volume
columns trade_value
columns option_input_price
columns roll_volume
columns putcallratio_byoi
columns putcallratio_byvolume
columns implied_vol_extsymbol
columns implied_vol_by_expiration
columns delta
columns gamma
columns rho
columns vega
columns theta
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "call_put_code": "string",
      "date_string": "string",
      "delta": 0,
      "expiration_date": "string",
      "external_symbol": "string",
      "gamma": 0,
      "implied_vol_by_expiration": 0,
      "implied_vol_extsymbol": 0,
      "instrumentgroup": "string",
      "instrumenttype": "string",
      "last_ask_extsymbol": 0,
      "last_bid_extsymbol": 0,
      "last_observed_price_underlying": 0,
      "last_price_extsymbol": 0,
      "london_4pm_ask": 0,
      "london_4pm_bid": 0,
      "london_4pm_price": 0,
      "open_interest": 0,
      "option_input_price": 0,
      "option_type": "string",
      "putcallratio_byoi": 0,
      "putcallratio_byvolume": 0,
      "referenceprice": "string",
      "rho": 0,
      "roll_volume": 0,
      "settlement_price": 0,
      "strike_price": 0,
      "theta": 0,
      "trade_count": 0,
      "trade_value": 0,
      "trade_volume": 0,
      "underlying_symbol": "string",
      "vega": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response mxdailystatsCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Equity Intraday Quotes

Quotes - 1min CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/quotesbar1min',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/quotesbar1min', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/quotesbar1min");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/quotesbar1min \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/quotesbar1min',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/quotesbar1min HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/quotesbar1min", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/quotesbar1min

Canadian quotes data from all marketplaces aggregated in one minute bars with metrics such as open, high, low, close, number of quotes etc.

Body parameter

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body quotesbar1minCaRequestv1 true none
adjusted body boolean false Boolean value to check if the response should include adjusted value
adjustedForDate body string false Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns body [string] false Select columns from the enumerated list below can be provided as an array
datestring body string true Date in EST for when the data is required. For eg. '2020-09-01'
endtime body string false Timestamp in EST till when the data is required. The minute bars format is HHMM. Example: 11:05
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
starttime body string false Starting timestamp in EST from when the data is required. The minute bars format is HHMM. Example: 11:04
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns barstarttime
columns symbol
columns highbidprice
columns lowaskprice
columns openbartime
columns openbidprice
columns openbidsize
columns openaskprice
columns openasksize
columns closebartime
columns closebidprice
columns closebidsize
columns closeaskprice
columns closeasksize
columns numquotes
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "barstarttime": "string",
      "closeaskprice": 0,
      "closeasksize": 0,
      "closebartime": "string",
      "closebidprice": 0,
      "closebidsize": 0,
      "date_string": "string",
      "highbidprice": 0,
      "lowaskprice": 0,
      "numquotes": 0,
      "openaskprice": 0,
      "openasksize": 0,
      "openbartime": "string",
      "openbidprice": 0,
      "openbidsize": 0,
      "symbol": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response quotesbar1minCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Quotes - 1sec CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/quotesbar1sec',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/quotesbar1sec', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/quotesbar1sec");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/quotesbar1sec \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbol": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/quotesbar1sec',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/quotesbar1sec HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/quotesbar1sec", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/quotesbar1sec

Canadian quotes data from all marketplaces aggregated in one second bars with metrics such as open, high, low, close, number of quotes etc.

Body parameter

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbol": "string"
}

Parameters

Name In Type Required Description
body body quotesbar1secCaRequestv1 true none
adjusted body boolean false Boolean value to check if the response should include adjusted value
adjustedForDate body string false Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns body [string] false Select columns from the enumerated list below can be provided as an array
datestring body string true Date in EST for when the data is required. For eg. '2020-09-01'
endtime body string false Timestamp in EST till when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:03:02 and 13:03 are acceptable.
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
starttime body string false Starting timestamp in EST from when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:04:02 and 13:04 are acceptable.
symbol body string true Ticker symbol of the security. For eg. "AC" for Air Canada or "ALL_SYMBOLS" for fetching all the symbols

Enumerated Values

Parameter Value
columns barstarttime
columns symbol
columns highbidprice
columns lowaskprice
columns openbartime
columns openbidprice
columns openbidsize
columns openaskprice
columns openasksize
columns closebartime
columns closebidprice
columns closebidsize
columns closeaskprice
columns closeasksize
columns numquotes
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "barstarttime": "string",
      "closeaskprice": 0,
      "closeasksize": 0,
      "closebartime": "string",
      "closebidprice": 0,
      "closebidsize": 0,
      "date_string": "string",
      "highbidprice": 0,
      "lowaskprice": 0,
      "numquotes": 0,
      "openaskprice": 0,
      "openasksize": 0,
      "openbartime": "string",
      "openbidprice": 0,
      "openbidsize": 0,
      "symbol": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response quotesbar1secCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Quotes - 1min US

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/us/quotesbar1min',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/us/quotesbar1min', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/us/quotesbar1min");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/us/quotesbar1min \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/us/quotesbar1min',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/us/quotesbar1min HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/us/quotesbar1min", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/us/quotesbar1min

US quotes data from all marketplaces aggregated in one minute bars with metrics such as open, high, low, close, number of quotes etc.

Body parameter

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body quotesbar1minUsRequestv1 true none
adjusted body boolean false Boolean value to check if the response should include adjusted value
adjustedForDate body string false Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns body [string] false Select columns from the enumerated list below can be provided as an array
datestring body string true Date in EST for when the data is required. For eg. '2020-09-01'
endtime body string false Timestamp in EST till when the data is required. The minute bars format is HHMM. Example: 11:05
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
starttime body string false Starting timestamp in EST from when the data is required. The minute bars format is HHMM. Example: 11:04
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns barstarttime
columns symbol
columns highbidprice
columns lowaskprice
columns openbartime
columns openbidprice
columns openaskprice
columns closebartime
columns closebidprice
columns closeaskprice
columns numquotes
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "barstarttime": "string",
      "closeaskprice": 0,
      "closebartime": "string",
      "closebidprice": 0,
      "date_string": "string",
      "highbidprice": 0,
      "lowaskprice": 0,
      "numquotes": 0,
      "openaskprice": 0,
      "openbartime": "string",
      "openbidprice": 0,
      "symbol": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response quotesbar1minUsResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Quotes - 1sec US

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/us/quotesbar1sec',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/us/quotesbar1sec', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/us/quotesbar1sec");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/us/quotesbar1sec \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/us/quotesbar1sec',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/us/quotesbar1sec HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/us/quotesbar1sec", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/us/quotesbar1sec

US quotes data from all marketplaces aggregated in one second bars with metrics such as open, high, low, close, number of quotes etc.

Body parameter

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body quotesbar1secUsRequestv1 true none
adjusted body boolean false Boolean value to check if the response should include adjusted value
adjustedForDate body string false Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns body [string] false Select columns from the enumerated list below can be provided as an array
datestring body string true Date in EST for when the data is required. For eg. '2020-09-01'
endtime body string false Timestamp in EST till when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:03:02 and 13:03 are acceptable.
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
starttime body string false Starting timestamp in EST from when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:04:02 and 13:04 are acceptable.
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns barstarttime
columns symbol
columns highbidprice
columns lowaskprice
columns openbartime
columns openbidprice
columns openaskprice
columns closebartime
columns closebidprice
columns closeaskprice
columns numquotes
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "barstarttime": "string",
      "closeaskprice": 0,
      "closebartime": "string",
      "closebidprice": 0,
      "date_string": "string",
      "highbidprice": 0,
      "lowaskprice": 0,
      "numquotes": 0,
      "openaskprice": 0,
      "openbartime": "string",
      "openbidprice": 0,
      "symbol": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response quotesbar1secUsResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Trades & Quotes Tick Data

TAQ NBBO CA

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/ca/taqnbbo',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/ca/taqnbbo', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/ca/taqnbbo");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/ca/taqnbbo \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "symbol"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbol": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/ca/taqnbbo',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/ca/taqnbbo HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/ca/taqnbbo", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/ca/taqnbbo

Canadian trades and National Best Bid and Offer pricing prevailing at the time of the trade in one data set. Covers all Canadian marketplaces.

Body parameter

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "symbol"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbol": "string"
}

Parameters

Name In Type Required Description
body body taqnbboCaRequestv1 true none
adjusted body boolean false Boolean value to check if the response should include adjusted value
adjustedForDate body string false Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns body [string] false Select columns from the enumerated list below can be provided as an array
datestring body string true Date in EST for when the data is required. For eg. '2020-09-01'
endtime body string false Timestamp in EST till when the data is required. Format includes hours, minutes, seconds and milliseconds in the following format: ‘HH:MI:SS.Milliseconds'. For eg. 15:31:10.423
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
starttime body string false Starting timestamp in EST from when the data is required. Format includes hours, minutes, seconds and milliseconds in the following format: ‘HH:MI:SS.Milliseconds'. For eg. 15:30:10.423
symbol body string true Ticker symbol of the security. For eg. "AC" for Air Canada or "ALL_SYMBOLS" for fetching all the symbols

Enumerated Values

Parameter Value
columns symbol
columns trade_time
columns trade_localseq
columns trade_venue
columns record_type
columns totalbidsize
columns bestbid
columns totalasksize
columns bestask
columns listing_exchange
columns trade_size
columns trade_price
columns buy_broker
columns sell_broker
columns trade_id
columns trade_condition
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "bestask": 0,
      "bestbid": 0,
      "buy_broker": 0,
      "date_string": "string",
      "listing_exchange": "string",
      "record_type": 0,
      "sell_broker": 0,
      "symbol": "string",
      "totalasksize": 0,
      "totalbidsize": 0,
      "trade_condition": "string",
      "trade_id": "string",
      "trade_localseq": 0,
      "trade_price": "string",
      "trade_size": 0,
      "trade_time": "string",
      "trade_venue": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response taqnbboCaResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response taqnbboUsResponsev1
500 Internal Server Error 500 response None

TAQ NBBO US

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/us/taqnbbo',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/us/taqnbbo', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/us/taqnbbo");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/us/taqnbbo \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "symbol"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/us/taqnbbo',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/us/taqnbbo HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/us/taqnbbo", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/us/taqnbbo

US trades and National Best Bid and Offer pricing prevailing at the time of the trade in one data set. Covers all US marketplaces.

Body parameter

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "symbol"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}

Parameters

Name In Type Required Description
body body taqnbboUsRequestv1 true none
adjusted body boolean false Boolean value to check if the response should include adjusted value
adjustedForDate body string false Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns body [string] false Select columns from the enumerated list below can be provided as an array
datestring body string true Date in EST for when the data is required. For eg. '2020-09-01'
endtime body string false Timestamp in EST till when the data is required. Format includes hours, minutes, seconds and milliseconds in the following format: ‘HH:MI:SS.Milliseconds'. For eg. 15:31:10.423
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
starttime body string false Starting timestamp in EST from when the data is required. Format includes hours, minutes, seconds and milliseconds in the following format: ‘HH:MI:SS.Milliseconds'. For eg. 15:30:10.423
symbols body [string] true Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Enumerated Values

Parameter Value
columns symbol
columns trade_time
columns trade_localseq
columns trade_venue
columns record_type
columns total_bid_size
columns best_bid
columns total_ask_size
columns best_ask
columns trade_size
columns trade_price
columns trade_count
columns trade_id
columns trade_condition
columns time_nanos
columns tradeunix
columns date_string

Example responses

200 Response

{
  "data": [
    {
      "best_ask": 0,
      "best_bid": 0,
      "date_string": "string",
      "record_type": 0,
      "symbol": "string",
      "time_nanos": 0,
      "total_ask_size": 0,
      "total_bid_size": 0,
      "trade_condition": "string",
      "trade_id": "string",
      "trade_localseq": 0,
      "trade_price": "string",
      "trade_size": 0,
      "trade_time": "string",
      "trade_venue": "string",
      "tradeunix": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response taqnbboUsResponsev1
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response taqnbboUsResponsev1
500 Internal Server Error 500 response None

Short Interest Analytics

Days To Cover

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/daystocover',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/daystocover', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/daystocover");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/daystocover \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "business_date"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/daystocover',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/daystocover HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/daystocover", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/daystocover

It is a liquidity measure = 15 day average Short Interest / 15 day average ADTV

Body parameter

{
  "columns": [
    "business_date"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string"
}

Parameters

Name In Type Required Description
body body daystocoverRequest true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Effective date for the data
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Effective date for the data

Enumerated Values

Parameter Value
columns business_date
columns isin
columns symbol
columns name
columns days_to_cover_current
columns days_to_cover_15
columns days_to_cover_current_vs_90

Example responses

200 Response

{
  "data": [
    {
      "business_date": "string",
      "days_to_cover_15": 0,
      "days_to_cover_current": 0,
      "days_to_cover_current_vs_90": 0,
      "isin": "string",
      "name": "string",
      "symbol": "string"
    }
  ]
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response daystocoverResponse
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Short Interest Original

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/original',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/original', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/original");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/original \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "business_date"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/original',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/original HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/original", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/original

This table contains S3 Partners borrow rates and Original Short Interest Projection data

Body parameter

{
  "columns": [
    "business_date"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string"
}

Parameters

Name In Type Required Description
body body originalRequest true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Effective date for the data
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Effective date for the data

Enumerated Values

Parameter Value
columns business_date
columns sedol
columns isin
columns figi
columns ticker
columns bbgid
columns name
columns offer_rate
columns bid_rate
columns last_rate
columns short_momentum
columns short_interest
columns shortinterestnotional
columns shortinterestpct
columns s3float
columns s3sipctfloat
columns indicativeavailability
columns s3utilization
columns daystocover10day
columns daystocover30day
columns daystocover90day
columns crowded_score
columns squeeze_risk
columns dailymtmpl
columns dailynetmtmpl
columns volume

Example responses

200 Response

{
  "data": [
    {
      "bbgid": "string",
      "bid_rate": 0,
      "business_date": "string",
      "crowded_score": 0,
      "dailymtmpl": 0,
      "dailynetmtmpl": 0,
      "daystocover10day": 0,
      "daystocover30day": 0,
      "daystocover90day": 0,
      "figi": "string",
      "indicativeavailability": 0,
      "isin": "string",
      "last_rate": 0,
      "name": "string",
      "offer_rate": 0,
      "s3float": 0,
      "s3sipctfloat": 0,
      "s3utilization": 0,
      "sedol": "string",
      "short_interest": 0,
      "short_momentum": 0,
      "shortinterestnotional": 0,
      "shortinterestpct": 0,
      "squeeze_risk": 0,
      "ticker": "string",
      "volume": 0
    }
  ]
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response originalResponse
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Percent Float

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/percentfloat',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/percentfloat', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/percentfloat");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/percentfloat \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "business_date"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/percentfloat',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/percentfloat HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/percentfloat", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/percentfloat

TMX EDMA provides high resolution analytics-ready data sets and leverages Amazon Web Services (AWS) cloud technology to deliver…

Body parameter

{
  "columns": [
    "business_date"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string"
}

Parameters

Name In Type Required Description
body body percentfloatRequest true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Effective date for the data
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Effective date for the data

Enumerated Values

Parameter Value
columns business_date
columns isin
columns symbol
columns name
columns pct_float_current
columns pct_float_15
columns pct_float_current_vs_90

Example responses

200 Response

{
  "data": [
    {
      "business_date": "string",
      "isin": "string",
      "name": "string",
      "pct_float_15": 0,
      "pct_float_current": 0,
      "pct_float_current_vs_90": 0,
      "symbol": "string"
    }
  ]
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response percentfloatResponse
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Short Interest Smoothened

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/smoothened',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/smoothened', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/smoothened");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/smoothened \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "business_date"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/smoothened',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/smoothened HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/smoothened", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/smoothened

This table contains S3 Partners borrow rates and revised Short Interest data

Body parameter

{
  "columns": [
    "business_date"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string"
}

Parameters

Name In Type Required Description
body body smoothenedRequest true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Effective date for the data
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Effective date for the data

Enumerated Values

Parameter Value
columns business_date
columns sedol
columns isin
columns figi
columns ticker
columns bbgid
columns name
columns offer_rate
columns bid_rate
columns last_rate
columns short_momentum
columns short_interest
columns shortinterestnotional
columns shortinterestpct
columns s3float
columns s3sipctfloat
columns indicativeavailability
columns s3utilization
columns daystocover10day
columns daystocover30day
columns daystocover90day
columns crowded_score
columns squeeze_risk
columns dailymtmpl
columns dailynetmtmpl
columns volume

Example responses

200 Response

{
  "data": [
    {
      "bbgid": "string",
      "bid_rate": 0,
      "business_date": "string",
      "crowded_score": 0,
      "dailymtmpl": 0,
      "dailynetmtmpl": 0,
      "daystocover10day": 0,
      "daystocover30day": 0,
      "daystocover90day": 0,
      "figi": "string",
      "indicativeavailability": 0,
      "isin": "string",
      "last_rate": 0,
      "name": "string",
      "offer_rate": 0,
      "s3float": 0,
      "s3sipctfloat": 0,
      "s3utilization": 0,
      "sedol": "string",
      "short_interest": 0,
      "short_momentum": 0,
      "shortinterestnotional": 0,
      "shortinterestpct": 0,
      "squeeze_risk": 0,
      "ticker": "string",
      "volume": 0
    }
  ]
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response smoothenedResponse
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Buybacks

North American Buybacks

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/northamericanbuybacks',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/northamericanbuybacks', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/northamericanbuybacks");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/northamericanbuybacks \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "announce_date_end": "string",
  "announce_date_start": "string",
  "columns": [
    "transaction_id"
  ],
  "cusip": [
    "string"
  ],
  "effective_date_end": "string",
  "effective_date_start": "string",
  "expiry_date_end": "string",
  "expiry_date_start": "string",
  "isin": [
    "string"
  ],
  "last_updated_date_end": "string",
  "last_updated_date_start": "string",
  "pageafter": 0,
  "symbol": [
    "string"
  ],
  "time_processed_end": "string",
  "time_processed_start": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/northamericanbuybacks',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/northamericanbuybacks HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/northamericanbuybacks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/northamericanbuybacks

North American Buybacks provides information on corporate share buyback announcement details as well as tracking of buyback purchases as they are reported. Also offers historical analysis of company buyback behavior and insight into deviations from historical norms

Body parameter

{
  "announce_date_end": "string",
  "announce_date_start": "string",
  "columns": [
    "transaction_id"
  ],
  "cusip": [
    "string"
  ],
  "effective_date_end": "string",
  "effective_date_start": "string",
  "expiry_date_end": "string",
  "expiry_date_start": "string",
  "isin": [
    "string"
  ],
  "last_updated_date_end": "string",
  "last_updated_date_start": "string",
  "pageafter": 0,
  "symbol": [
    "string"
  ],
  "time_processed_end": "string",
  "time_processed_start": "string"
}

Parameters

Name In Type Required Description
body body northamericanbuybacksRequest true none
announce_date_end body string false End Date to filter by Announce Date of Buyback. For eg. announce_date_end of 2024-08-31 will include data from specified date_start to 2024-08-31. NOTE: This filter will not include Transaction records, use time_processed filters to include this record type
announce_date_start body string false Start Date to filter by Announce Date of Buyback. For eg.announce_date_start of 2024-08-31 will include data from 2024-08-31 to specified date_end. NOTE: This filter will not include Transaction records, use time_processed filters to include this record type
columns body [string] false Select columns from the enumerated list below can be provided as an array
cusip body [string] false CUSIP of Security,multiple can be provided as an array. Not including an ID will return ALL IDs
effective_date_end body string false End date to filter results based on the Buyback Effective Date. For eg.effective_date_end of 2024-08-31 will include data from specified date_start to 2024-08-31. NOTE: This filter will not include Transaction records, use time_processed filters to include this record type
effective_date_start body string false Start date to filter results based on the Buyback Effective Date. For eg. effective_date_start of 2024-08-31 will include data from 2024-08-31 to specified date_end. NOTE: This filter will not include Transaction records, use time_processed filters to include this record type
expiry_date_end body string false End Date to Filter by Expiry Date of Buyback. For eg. expiry_date_end of 2024-08-31 will include data from specified date_start to 2024-08-31. NOTE: This filter will not include Transaction records, use time_processed filters to include this record type
expiry_date_start body string false Start Date to Filter by Expiry Date of Buyback. For eg. expiry_date_start of 2024-08-31 will include data from 2024-08-31 to specified date_end. NOTE: This filter will not include Transaction records, use time_processed filters to include this record type
isin body [string] false ISIN of Security, multiple can be provided as an array. Not including an ID will return ALL IDs
last_updated_date_end body string false End date to filter results based on the last date a record is updated. For eg. last_updated_date_end of 2024-08-31 will include data from specified date_start to 2024-08-31
last_updated_date_start body string false Start date to filter results based on the last date a record is updated. For eg. last_updated_date_start of 2024-08-31 will include data from 2024-08-31 to specified date_end
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
symbol body [string] false Symbol of Security, multiple symbols can be provided as an array. Not including an ID will return ALL IDs
time_processed_end body string true Enddate to filter results based on the time the information was entered into internal systems. Time is UTC standard. For eg. time_processed_end of 2024-08-31 will include data from specified date_start to 2024-08-31
time_processed_start body string true Start date to filter results based on the time the information was entered into internal systems. Time is UTC standard. For eg. time_processed_start of 2024-08-31 will include data from 2024-08-31 to specified date_end

Enumerated Values

Parameter Value
columns transaction_id
columns last_update_date
columns monthly_report_period
columns type
columns announce_date
columns start_date
columns effective_date
columns end_date
columns expiry_date
columns name
columns symbol
columns cusip
columns isin
columns current_primary_country
columns latest_shares_in_issue
columns last_shares_in_issue_before_effective
columns percent_differance_in_outstanding_shares
columns last_initial_subject_shares
columns last_initial_subject_value
columns last_subject_end_date
columns initial_subject_shares
columns initial_subject_value
columns subject_shares_percent_announced
columns historical_5yr_subject_percent_announced
columns intention_revisions
columns split_adjustment_factor
columns shares_purchased_in_mon
columns value_purchased_in_mon
columns eom_total_shares
columns eom_value
columns current_percent_completed
columns current_prorated_completed
columns historical_5yr_percent_completed
columns reported_transaction_min_date
columns reported_transaction_max_date
columns amount
columns reported_price
columns currency
columns usd_value
columns transaction_note
columns time_released_utc
columns time_processed_utc
columns ingest_day

Example responses

200 Response

{
  "data": [
    {
      "amount": 0,
      "announce_date": "string",
      "currency": "string",
      "current_percent_completed": 0,
      "current_primary_country": "string",
      "current_prorated_completed": "string",
      "cusip": "string",
      "effective_date": "string",
      "end_date": "string",
      "eom_total_shares": 0,
      "eom_value": 0,
      "expiry_date": "string",
      "historical_5yr_percent_completed": 0,
      "historical_5yr_subject_percent_announced": 0,
      "ingest_day": "string",
      "initial_subject_shares": 0,
      "initial_subject_value": 0,
      "intention_revisions": "string",
      "isin": "string",
      "last_initial_subject_shares": 0,
      "last_initial_subject_value": 0,
      "last_shares_in_issue_before_effective": 0,
      "last_subject_end_date": "string",
      "last_update_date": "string",
      "latest_shares_in_issue": 0,
      "monthly_report_period": "string",
      "name": "string",
      "percent_differance_in_outstanding_shares": 0,
      "reported_price": 0,
      "reported_transaction_max_date": "string",
      "reported_transaction_min_date": "string",
      "shares_purchased_in_mon": 0,
      "split_adjustment_factor": 0,
      "start_date": "string",
      "subject_shares_percent_announced": 0,
      "symbol": "string",
      "time_processed_utc": "string",
      "time_released_utc": "string",
      "transaction_id": "string",
      "transaction_note": "string",
      "type": "string",
      "usd_value": 0,
      "value_purchased_in_mon": 0
    }
  ]
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response northamericanbuybacksResponse
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Price Adjustment Curve

Pac

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/pac',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/pac', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/pac");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/pac \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "date_string"
  ],
  "enddate": "string",
  "id": [
    "string"
  ],
  "pageafter": 0,
  "startdate": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/pac',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/pac HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/pac", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/pac

Price adjustment Curve provides information on corporate action adjustment factors, including cash dividends and splits. Could be applied to the most granular prices and quotes to have a adjusted price for trade analysis, or adjusted quotes for order book Analysis.

Body parameter

{
  "columns": [
    "date_string"
  ],
  "enddate": "string",
  "id": [
    "string"
  ],
  "pageafter": 0,
  "startdate": "string"
}

Parameters

Name In Type Required Description
body body pacRequest true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
id body [string] true Unique company ID or ["ALL_IDS"] for fetching all the companies.
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate

Enumerated Values

Parameter Value
columns date_string
columns id
columns symbol
columns cusip
columns listing_exchange
columns currency
columns cash_div_ratio
columns split_ratio
columns forward_div_ratio
columns backward_div_ratio
columns forward_split_ratio
columns backward_split_ratio

Example responses

200 Response

{
  "data": [
    {
      "backward_div_ratio": 0,
      "backward_split_ratio": 0,
      "cash_div_ratio": 0,
      "currency": "string",
      "cusip": "string",
      "date_string": "string",
      "forward_div_ratio": 0,
      "forward_split_ratio": 0,
      "id": "string",
      "listing_exchange": "string",
      "split_ratio": 0,
      "symbol": "string"
    }
  ]
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response pacResponse
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Pacexplain

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

result = RestClient.post 'https://analyticsapi.tmxanalytics.com/v1/pacexplain',
  params: {
  }, headers: headers

p JSON.parse(result)

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

r = requests.post('https://analyticsapi.tmxanalytics.com/v1/pacexplain', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/pacexplain");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

# You can also use wget
curl -X POST https://analyticsapi.tmxanalytics.com/v1/pacexplain \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = '{
  "columns": [
    "date_string"
  ],
  "enddate": "string",
  "id": [
    "string"
  ],
  "pageafter": 0,
  "startdate": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://analyticsapi.tmxanalytics.com/v1/pacexplain',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST https://analyticsapi.tmxanalytics.com/v1/pacexplain HTTP/1.1
Host: analyticsapi.tmxanalytics.com
Content-Type: application/json
Accept: application/json

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://analyticsapi.tmxanalytics.com/v1/pacexplain", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /v1/pacexplain

Providing the adjustment factors and explaining the sources behind the adjustment factor calculation

Body parameter

{
  "columns": [
    "date_string"
  ],
  "enddate": "string",
  "id": [
    "string"
  ],
  "pageafter": 0,
  "startdate": "string"
}

Parameters

Name In Type Required Description
body body pacexplainRequest true none
columns body [string] false Select columns from the enumerated list below can be provided as an array
enddate body string true Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
id body [string] true Unique company ID or ["ALL_IDS"] for fetching all the companies.
pageafter body integer false Resultset is paginated - mention record offset if data is needed after a specific record
startdate body string true Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate

Enumerated Values

Parameter Value
columns date_string
columns id
columns symbol
columns currency
columns factor
columns type
columns sources

Example responses

200 Response

{
  "data": [
    {
      "currency": "string",
      "date_string": "string",
      "factor": 0,
      "id": "string",
      "sources": "string",
      "symbol": "string",
      "type": "string"
    }
  ]
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response pacexplainResponse
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

Schemas

Advanced Daily Stats CA Request

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Advanced Daily Stats CA Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Advanced Daily Stats CA Response

{
  "data": [
    {
      "avg_sprd_bps": 0,
      "avg_sprd_cent": 0,
      "avgaskvol": 0,
      "avgbidvol": 0,
      "daily_trading_value_ca": 0,
      "daily_trading_value_us": 0,
      "daily_volume_ca": 0,
      "daily_volume_us": 0,
      "date_string": "string",
      "effective_sprd_bps": 0,
      "effective_sprd_cent": 0,
      "secondaryclose": 0,
      "symbol": "string",
      "trade_count_ca": 0,
      "trade_count_us": 0,
      "us_symbol": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Advanced Daily Stats CA Response

Properties

Name Type Required Restrictions Description
data [object] false none Advanced Daily Stats CA responses object
» avg_sprd_bps number false none Average daily quoted spread. Spread bps = (ask price-bid price) / midpoint *10000 based on 1 second buckets when there are valid quotes for both bid & ask
» avg_sprd_cent number false none Average daily quoted spread (spread = ask price-bid price) based on 1 second buckets when there are valid quotes for both bid & ask
» avgaskvol number false none Total average offer volume (NBO) across all Canadian marketplaces on a symbol at any given time, average taken over previous 30 days using 1 second snapshots
» avgbidvol number false none Total average bid volume at top price level (NBB) across all Canadian marketplaces on a symbol at any given time, average taken over previous 30 days using 1 second snapshots
» daily_trading_value_ca number false none For each trading day, total traded value across all Canadian venues excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» daily_trading_value_us number false none For each trading day, total traded value across all US venues excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» daily_volume_ca number false none For each trading day, total traded volume across all Canadian venues excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» daily_volume_us number false none For each trading day, total traded volume across all US venues excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» date_string string false none Identifies the local date
» effective_sprd_bps number false none Effective Spread (bps) = Effective spread/midpoint *10000. For example, if NBBO is 1.00 - 1.05 and a trade occurs at 1.03 --> Eff spread (bps) = 2 X (1.03-1.025)/1.025 x10000 = 1bps
» effective_sprd_cent number false none Effective Spread = 2 X (Trade Price - Nbbo Midpoint)/NBBO midpoint x 100. For example: if NBBO is 1.00 - 1.05 and a trade occurs at 1.03 --> Eff spread = 2 X (1.03-1.025) = $0.01
» secondaryclose number false none Secondary close price identified as midpoint of the NBBO at 3:59.00.0000 PM EST
» symbol string false none Ticker symbol of the security
» trade_count_ca number false none For each trading day, number of trades across all Canadian venues excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» trade_count_us number false none For each trading day, number of trades across all US venues excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» us_symbol string false none Identifies the ticker of the security on the US exchange
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Advanced Daily Stats US Request

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Advanced Daily Stats US Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Advanced Daily Stats US Response

{
  "data": [
    {
      "avg_sprd_bps": 0,
      "avg_sprd_cent": 0,
      "avgaskvol": 0,
      "avgbidvol": 0,
      "ca_symbol": "string",
      "daily_trading_value_ca": 0,
      "daily_trading_value_us": 0,
      "daily_volume_ca": 0,
      "daily_volume_us": 0,
      "date_string": "string",
      "effective_sprd_bps": 0,
      "effective_sprd_cent": 0,
      "secondaryclose": 0,
      "symbol": "string",
      "trade_count_ca": 0,
      "trade_count_us": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Advanced Daily Stats US Response

Properties

Name Type Required Restrictions Description
data [object] false none Advanced Daily Stats US responses object
» avg_sprd_bps number false none Average daily quoted spread. Spread bps = (ask price-bid price) / midpoint *10000 based on 1 second buckets when there are valid quotes for both bid & ask
» avg_sprd_cent number false none Average daily quoted spread (spread = ask price-bid price) based on 1 second buckets when there are valid quotes for both bid & ask
» avgaskvol number false none Total average offer volume (NBO) across all US marketplaces on a symbol at any given time, average taken over previous 30 days using 1 second snapshots
» avgbidvol number false none Total average bid volume at top price level (NBB) across all US marketplaces on a symbol at any given time, average taken over previous 30 days using 1 second snapshots
» ca_symbol string false none Identifies the ticker symbol of the security on the Canadian exchange
» daily_trading_value_ca number false none For each trading day, total traded value across all Canadian venues account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» daily_trading_value_us number false none For each trading day, total traded value across all US venues account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» daily_volume_ca number false none For each trading day, total traded volume across all Canadian venues account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» daily_volume_us number false none For each trading day, total traded volume across all US venues account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» date_string string false none Identifies the local date
» effective_sprd_bps number false none Effective Spread (bps) = Effective spread/midpoint *10000. Using same example as above: if NBBO is 1.00 - 1.05 and a trade occurs at 1.03 --> Eff spread (bps) = 2 X (1.03-1.025)/1.025 x10000 = 1bps
» effective_sprd_cent number false none Effective Spread = 2 X
» secondaryclose number false none Secondary close price identified as midpoint of the NBBO at 3:59.00.0000 PM EST
» symbol string false none Identifies the Ticker symbol of the security
» trade_count_ca number false none For each trading day, number of trades across all Canadian venues account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» trade_count_us number false none For each trading day, number of trades across all US venues account for cancelled trades during regular market session (9:30 am to 4:00 pm)
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

data api Automation

{
  "billingTag": "string",
  "columnDesc": {},
  "countryCode": "us",
  "docDescription": "string",
  "endPoint": "string",
  "formatFields": {},
  "fromBranch": "string",
  "licensedFields": [
    "string"
  ],
  "orderByFields": {
    "asc": [
      "string"
    ],
    "desc": [
      "string"
    ]
  },
  "pageLimit": 0,
  "productName": "string",
  "requestParams": {
    "column": "string",
    "condition": "gt",
    "description": "string",
    "pattern": "string",
    "required": true,
    "type": "string"
  },
  "requestResponseDescription": "string",
  "requestResponsePrefix": "string",
  "requestResponseTitle": "string",
  "sfConfig": {
    "database": "string",
    "schema": "string",
    "warehouse": "string"
  },
  "subProductName": "string",
  "tableName": "string"
}

data api Automation

Properties

Name Type Required Restrictions Description
billingTag string false none Specifies the billing tag to be mapped for the data API
columnDesc object false none Specifies the description for each attribute in the response model, It will be displayed in the response schema for each field. Its an object with one or more key value pair
countryCode string false none Country code
docDescription string true none Specifies the description for the data api, This will be displayed in the documentation website
endPoint string true none Data API will be exposed with this end point for the given table name
formatFields object false none Specifies the format to be applied on the column while fetching from the snowflake database. Its an object, It can have one or more key value pair
fromBranch string true none Specifies the branch to be used to cut the new branch, Default is prod branch
licensedFields [string] false none Specifies which column in the table to be allowed only for the licensed users, Its array of values
orderByFields object false none Specifies the columns to be used to sort the response
» asc [string] false none none
» desc [string] false none none
pageLimit integer false none Specifies the number of results returned in the data api response(Default 1000)
productName string true none This is used in the billing authorizer to validate the subscription of the user while accessing the data api, Also Folders will be created with this name, all the sub products services will be placed under this folder. Folder name might not be same as product name if space or any special characters provided.
requestParams object false none Specifies the attribute/request parameter to be used in the request models, These attributes actually define the request params for the data api we are creating with automation script. It's an Object.
» column string false none Specifies which column in the table to be used to filter the record.This will be used to write the query condition in the lambda file.User input for this “Key” on the data api will be filtered with this column while querying the table
» condition string false none Specifies which operators to be used in the query filter on the table column with the user input.
» description string false none Specifies the be used in the request model for the property
» pattern string false none Specifies the regex pattern to be used in the request model to validate the user input by the API gateway
» required boolean false none Specifies fields to be marked as mandatory or optional in the request model.
» type string false none Specifies data type for the user input
requestResponseDescription string true none Provides the descriptions for the request and response model
requestResponsePrefix string false none Request and Response model file will created with this name, if not provided it will use the “subProduct Name+Country Code” for the file name
requestResponseTitle string true none Provides the value for the title attribute for the request and response model.
sfConfig object false none Specifies the schema, warehouse and database details
» database string false none none
» schema string false none none
» warehouse string false none none
subProductName string true none This name will be used with combination of country code to create the lambda function and cloudformation stack and service folder
tableName string true none Specifies the table name, Data API will fetch the record from this table and return the response

Enumerated Values

Property Value
countryCode us
countryCode ca
condition gt
condition gte
condition lt
condition lte
condition eq
type string
type integer
type boolean
type array

Authenticate Request

{
  "email": "string",
  "password": "string"
}

Authenticate Request

Properties

Name Type Required Restrictions Description
email string true none User email as registered with TMX Analytics
password string true none User password

OHLC CA Request

{
  "columns": [
    "first_observed_price"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

OHLC CA Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

OHLC CA Response

{
  "data": [
    {
      "date_string": "string",
      "first_observed_price": 0,
      "intraday_high": 0,
      "intraday_low": 0,
      "last_observed_price": 0,
      "symbol": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

OHLC CA Response

Properties

Name Type Required Restrictions Description
data [object] false none OHLC CA responses object
» date_string string false none Local Date
» first_observed_price number false none The first trade as of standard open time (9:30 am) using logic: 1) Open auction price, 2) if no auction price occurrs, then take the first observed trade price on all marketplaces/ATS's, ignoring any pre-market trades (e.g. 8:00-9:30) which are often mis-priced
» intraday_high number false none Intra-day high price across all venues between 9:30 am and 4:00 pm excluding oddlots including crosses
» intraday_low number false none Intra-day low price across all venues between 9:30 am and 4:00 pm excluding oddlots inlcuding crosses
» last_observed_price number false none The last trade as of standard close time (4:00 pm) using logic: 1) closing auction price, (MOC) 2) if no auction price occurrs, then take the last observed trade price on all marketplaces/ATS's, ignoring any after-market/extended trading session trades (e.g. 4-5pm in Cda, 4-8pm in the US) which are often mis-priced
» symbol string false none Ticker symbol of the security
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Basic Daily Stats CA Request

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Basic Daily Stats CA Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Basic Daily Stats CA Response

{
  "data": [
    {
      "avg_30day_daily_value": 0,
      "avg_30day_daily_volume": 0,
      "avg_30day_trade_count": 0,
      "date_string": "string",
      "first_observed_price": 0,
      "intraday_high": 0,
      "intraday_low": 0,
      "last_observed_price": 0,
      "london_4pm_price": 0,
      "mkt_cap": 0,
      "shares_outstanding": 0,
      "symbol": "string",
      "total_daily_value": 0,
      "total_daily_volume": 0,
      "total_primary_exchange_volume": 0,
      "total_trade_count": 0,
      "twap_30day": 0,
      "twap_60day": 0,
      "volatility30_pct": 0,
      "volatility60_pct": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Basic Daily Stats CA Response

Properties

Name Type Required Restrictions Description
data [object] false none Basic Daily Stats CA responses object
» avg_30day_daily_value number false none Average daily value traded ie excl odd lots, include blocks auctions, account for cancelled trades over the previous 30 calendar days
» avg_30day_daily_volume number false none Average per day traded volume ie excl odd, include blocks, auctions, account for cancelled trades over the previous 30 calendar days
» avg_30day_trade_count number false none Average daily number of trades per day, over previous 30 days ie excl odd lots, include blocks, auctions, account for cancelled trades over the previous 30 calendar days
» date_string string false none Local Date
» first_observed_price number false none The first trade as of standard open time (9:30 am) using logic: 1) Open auction price, 2) if no auction price occurrs, then take the first observed trade price on all marketplaces/ATS's, ignoring any pre-market trades (e.g. 8:00-9:30) which are often mis-priced
» intraday_high number false none Intra-day high price across all venues between 9:30 am and 4:00 pm excluding oddlots including crosses
» intraday_low number false none Intra-day low price across all venues between 9:30 am and 4:00 pm excluding oddlots inlcuding crosses
» last_observed_price number false none The last trade as of standard close time (4:00 pm) using logic: 1) closing auction price, (MOC) 2) if no auction price occurrs, then take the last observed trade price on all marketplaces/ATS's, ignoring any after-market/extended trading session trades (e.g. 4-5pm in Cda, 4-8pm in the US) which are often mis-priced
» london_4pm_price number false none The observed market-wide trade price as at 4:00PM London time to be used by European firms who are marking-to-market
» mkt_cap number false none Show Shares Outstanding * Most recent Official Closing Price
» shares_outstanding number false none Shares outstanding refer to a company's stock currently held by all its shareholders, including share blocks held by institutional investors and restricted shares owned by the company’s officers and insiders.
» symbol string false none Ticker symbol of the security
» total_daily_value number false none For each trading day, total traded value excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» total_daily_volume number false none For each trading day, total traded volume excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» total_primary_exchange_volume number false none For each trading day, total traded volume at primary exchange excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» total_trade_count number false none For each trading day, no. of trades excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» twap_30day number false none Average of the adjusted OHLC price over previous 21 trading days.
» twap_60day number false none Average of the adjusted OHLC price over previous 42 trading days.
» volatility30_pct number false none 1 standard deviation, calculated across all observations across all marketplaces over previous 21 trading days
» volatility60_pct number false none 1 standard deviation, calculated across all observations across all marketplaces over previous 42 trading days
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Basic Daily Stats US Request

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Basic Daily Stats US Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Basic Daily Stats US Response

{
  "data": [
    {
      "avg_30day_daily_value": 0,
      "avg_30day_daily_volume": 0,
      "avg_30day_trade_count": 0,
      "date_string": "string",
      "first_observed_price": "string",
      "intraday_high": "string",
      "intraday_low": "string",
      "last_observed_price": "string",
      "london_4pm_price": "string",
      "mkt_cap": 0,
      "shares_outstanding": 0,
      "symbol": "string",
      "total_daily_value": 0,
      "total_daily_volume": 0,
      "total_trade_count": 0,
      "twap_30day": "string",
      "twap_60day": "string",
      "volatility30_pct": "string",
      "volatility60_pct": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Basic Daily Stats US Response

Properties

Name Type Required Restrictions Description
data [object] false none Basic Daily Stats US responses object
» avg_30day_daily_value number false none Average daily value traded ie including odd lots, include blocks, auctions, account for cancelled trades over the previous 30 calendar days. Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» avg_30day_daily_volume number false none Average per day traded volume ie including odd, include blocks, auctions, account for cancelled trades over the previous 30 calendar days. Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» avg_30day_trade_count number false none Average daily number of trades per day, over previous 30 days ie including odd lots, include blocks, auctions, account for cancelled trades over the previous 30 calendar days. Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» date_string string false none Local Date
» first_observed_price string false none The first trade as of standard open time (9:30 am) using logic: 1) Trade with trade_condition 'O' 2) if no trade with trade condition 'O' found, then take the first observed trade price on all marketplaces/ATS's, ignoring any pre-market trades (e.g. 8:00-9:30)
» intraday_high string false none Intra-day high price across all venues between 9:30 am and 4:00 pm excluding oddlots including crosses
» intraday_low string false none Intra-day low price across all venues between 9:30 am and 4:00 pm excluding oddlots including crosses
» last_observed_price string false none The last trade as of standard close time (4:00 pm) using logic: 1) closing Print (trade condition = 6) 2) if no closing print available, then take the last observed trade price on all marketplaces/ATS's, ignoring any after-market/extended trading session trades (e.g. 4-5pm in Cda, 4-8pm in the US) which are often mis-priced
» london_4pm_price string false none The observed market-wide trade price as at 4:00PM London time to be used by European firms who are marking-to-market
» mkt_cap number false none Show Shares Outstanding * Most recent Official Closing Price
» shares_outstanding number false none Shares outstanding refer to a company's stock currently held by all its shareholders, including share blocks held by institutional investors and restricted shares owned by the company’s officers and insiders.
» symbol string false none Identifies the Ticker symbol of the security
» total_daily_value number false none For each trading day, total traded value including oddlots, account for cancelled trades during regular market session (6:30 am to 8:00 pm). Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» total_daily_volume number false none For each trading day, total traded volume including oddlots, account for cancelled trades during regular market session (6:30 am to 8:00 pm). Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» total_trade_count number false none For each trading day, no. of trades including oddlots, account for cancelled trades during regular market session (6:30 am to 8:00 pm). Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» twap_30day string false none Average of the adjusted OHLC price over previous 21 trading days.
» twap_60day string false none Average of the adjusted OHLC price over previous 42 trading days.
» volatility30_pct string false none 1 standard deviation, calculate across all observations across all marketplaces - commonly used industry view of short term volatility
» volatility60_pct string false none 1 standard deviation, calculate across all observations across all marketplaces - most commonly industry accepted view of long term volatility
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Broker Daily Stats CA Request

{
  "brokers": [
    "string"
  ],
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Broker Daily Stats CA Request

Properties

Name Type Required Restrictions Description
brokers [string] false none Identifies the broker ID. For eg. [90, 80] or ["ALL_BROKERS"] for fetching all the brokers. Optional field, by default its ["ALL_BROKERS"]
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Broker Daily Stats CA Response

{
  "data": [
    {
      "broker": "string",
      "count_buy": 0,
      "count_sell": 0,
      "date_string": "string",
      "symbol": "string",
      "value_buy": 0,
      "value_sell": 0,
      "volume_block_buy": 0,
      "volume_block_sell": 0,
      "volume_buy": 0,
      "volume_cross_buy": 0,
      "volume_cross_sell": 0,
      "volume_dark_buy": 0,
      "volume_dark_sell": 0,
      "volume_moc_buy": 0,
      "volume_moc_sell": 0,
      "volume_moo_buy": 0,
      "volume_moo_sell": 0,
      "volume_odd_lot_buy": 0,
      "volume_odd_lot_sell": 0,
      "volume_postmarket_buy": 0,
      "volume_postmarket_sell": 0,
      "volume_premarket_buy": 0,
      "volume_premarket_sell": 0,
      "volume_sell": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Broker Daily Stats CA Response

Properties

Name Type Required Restrictions Description
data [object] false none Broker Daily Stats CA responses object
» broker string false none Identifier of the broker
» count_buy number false none For each trading day, total buy count attributable to each broker
» count_sell number false none For each trading day, total sell count attributable to each broker
» date_string string false none Identifies the local date
» symbol string false none Ticker symbol of the security
» value_buy number false none For each trading day, total buy value attributable to each broker
» value_sell number false none For each trading day, total sell value attributable to each broker
» volume_block_buy number false none Total number of shares traded in blocks attributable to each broker on buy side, Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000, If symbol contains NT, NO, NS, DB, WA, WR, WS or WT then abs(volume)/10 >= 10000 and abs (value)/100 >= 100000
» volume_block_sell number false none Total number of shares traded in blocks attributable to each broker on sell side, Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000, If symbol contains NT, NO, NS, DB, WA, WR, WS or WT then abs(volume)/10 >= 10000 and abs (value)/100 >= 100000
» volume_buy number false none For each trading day, total buy volume attributable to each broker
» volume_cross_buy number false none Volume for trades with trade conditon flag - P, S, X, C, O, G V, I attributable to each broker on buy side
» volume_cross_sell number false none Volume for trades with trade conditon flag - P, S, X, C, O, G V, I attributable to each broker on sell side
» volume_dark_buy number false none Dark Volume by symbol each day attributable to each broker on buy side - based on trade condition flag
» volume_dark_sell number false none Dark Volume by symbol each day attributable to each broker on sell side - based on trade condition flag
» volume_moc_buy number false none For each trading day, total closing auction volume inferred as trades flagged as MOC trades attributable to each broker on buy side. Excludes all crosses
» volume_moc_sell number false none For each trading day, total closing auction volume inferred as trades flagged as MOC trades attributable to each broker on sell side. Excludes all crosses
» volume_moo_buy number false none For each trading day, total opening auction volume attributable to each broker on buy side. MOO volume is inferred as the volume in the first 10 milliseconds after 9:30 am EST excluding all crosses
» volume_moo_sell number false none For each trading day, total opening auction volume attributable to each broker on sell side. MOO volume is inferred as the volume in the first 10 milliseconds after 9:30 am EST excluding all crosses
» volume_odd_lot_buy number false none For each trading day, total odd lot volume across all venues attributable to each broker on buy side
» volume_odd_lot_sell number false none For each trading day, total odd lot volume across all venues attributable to each broker on sell side
» volume_postmarket_buy number false none For each trading day, total buy volume attributable to each buy broker between 4:00 pm and 5:00 pm EST
» volume_postmarket_sell number false none For each trading day, total sell volume attributable to each buy broker between 4:00 pm and 5:00 pm EST}
» volume_premarket_buy number false none For each trading day, total buy volume attributable to each buy broker between 8:00 am and 9:30 am EST
» volume_premarket_sell number false none For each trading day, total sell volume attributable to each buy broker between 8:00 am and 9:30 am EST
» volume_sell number false none For each trading day, total sell volume attributable to each broker
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Broker Liquidity CA Request

{
  "brokers": [
    "string"
  ],
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Broker Liquidity CA Request

Properties

Name Type Required Restrictions Description
brokers [string] false none Identifies the broker ID. For eg. [90, 80] or ["ALL_BROKERS"] for fetching all the brokers. Optional field, by default its ["ALL_BROKERS"]
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Broker Liquidity CA Response

{
  "data": [
    {
      "asksize10b_impact": 0,
      "asksize25b_impact": 0,
      "askvalue10b_impact": 0,
      "askvalue25b_impact": 0,
      "avgnbb_value": 0,
      "avgnbb_volume": 0,
      "avgnbo_value": 0,
      "avgnbo_volume": 0,
      "bidsize10b_impact": 0,
      "bidsize25b_impact": 0,
      "bidvalue10b_impact": 0,
      "bidvalue25b_impact": 0,
      "broker": "string",
      "date_string": "string",
      "pct_time_2sides_avail": 0,
      "pct_time_ask_10b_deep": 0,
      "pct_time_ask_25b_deep": 0,
      "pct_time_atnbb": 0,
      "pct_time_atnbo": 0,
      "pct_time_bid_10b_deep": 0,
      "pct_time_bid_25b_deep": 0,
      "pct_time_bidask_100k_deep": 0,
      "pct_time_bidask_1m_deep": 0,
      "pct_time_bidask_200k_deep": 0,
      "pct_time_bidask_25k_deep": 0,
      "pct_time_bidask_500k_deep": 0,
      "pct_time_bidask_50k_deep": 0,
      "sprd_100k_bps": 0,
      "sprd_1m_bps": 0,
      "sprd_200k_bps": 0,
      "sprd_25k_bps": 0,
      "sprd_500k_bps": 0,
      "sprd_50k_bps": 0,
      "sprd_tob_bps": 0,
      "symbol": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Broker Liquidity CA Response

Properties

Name Type Required Restrictions Description
data [object] false none Broker Liquidity - CA responses object
» asksize10b_impact number false none Total number of shares of visible liquidity at midpoint up until 10 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until 10 bps.
» asksize25b_impact number false none Total number of shares of visible liquidity at midpoint up until 25 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until 25 bps.
» askvalue10b_impact number false none Total value of visible liquidity at midpoint up until at least 10 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until at least 10 bps.
» askvalue25b_impact number false none Total value of visible liquidity at midpoint up until at least 25 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until at least 25 bps.
» avgnbb_value number false none Time-weighted value at Market NBB
» avgnbb_volume number false none Time-weighted volume at Market NBB
» avgnbo_value number false none Time-weighted volume at Market NBO
» avgnbo_volume number false none Time-weighted value at Market NBO
» bidsize10b_impact number false none Total number of shares of visible liquidity at midpoint up until 10 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until 10 bps.
» bidsize25b_impact number false none Total number of shares of visible liquidity at midpoint up until 25 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until 25 bps.
» bidvalue10b_impact number false none Total value of visible liquidity at midpoint up until at least 10 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until at least 10 bps.
» bidvalue25b_impact number false none Total value of visible liquidity at midpoint up until at least 25 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until at least 25 bps.
» broker string false none Identifier of the broker
» date_string string false none Identifies the local date
» pct_time_2sides_avail number false none Percent time there was a valid two sided quote available on both the bid and the ask side.
» pct_time_ask_10b_deep number false none Percent time valid ask was available at midpoint and up until 10 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
» pct_time_ask_25b_deep number false none Percent time valid ask was available at midpoint and up until 25 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
» pct_time_atnbb number false none % of time (time-weighted) that broker had a quote at the NBB
» pct_time_atnbo number false none % of time (time-weighted) that broker had a quote at the NBO
» pct_time_bid_10b_deep number false none Percent time valid bid was available at midpoint and up until 10 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
» pct_time_bid_25b_deep number false none Percent time valid bid was available at midpoint and up until 25 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
» pct_time_bidask_100k_deep number false none Percent time there was a valid two sided quote satisfying the notional amount ($100,000) available on both the bid and the ask side.
» pct_time_bidask_1m_deep number false none Percent time there was a valid two sided quote satisfying the notional amount ($1,000,000) available on both the bid and the ask side.
» pct_time_bidask_200k_deep number false none Percent time there was a valid two sided quote satisfying the notional amount ($200,000) available on both the bid and the ask side.
» pct_time_bidask_25k_deep number false none Percent time there was a valid two sided quote satisfying the notional amount ($25,000) available on both the bid and the ask side.
» pct_time_bidask_500k_deep number false none Percent time there was a valid two sided quote satisfying the notional amount ($500,000) available on both the bid and the ask side.
» pct_time_bidask_50k_deep number false none Percent time there was a valid two sided quote satisfying the notional amount ($50,000) available on both the bid and the ask side.
» sprd_100k_bps number false none Volume weighted average spread (in bps) to execute at least a $100,000 order across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($100,000) was available on both the bid and ask side.
» sprd_1m_bps number false none Volume weighted average spread (in bps) to execute at least a $1,000,000 order across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($1,000,000) was available on both the bid and ask side.
» sprd_200k_bps number false none Volume weighted average spread (in bps) to execute at least a $200,000 order across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($200,000) was available on both the bid and ask side.
» sprd_25k_bps number false none Volume weighted average spread (in bps) to execute at least a $25,000 order across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($25,000) was available on both the bid and ask side.
» sprd_500k_bps number false none Volume weighted average spread (in bps) to execute at least a $500,000 order across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($500,000) was available on both the bid and ask side.
» sprd_50k_bps number false none Volume weighted average spread (in bps) to execute at least a $50,000 order across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($50,000) was available on both the bid and ask side.
» sprd_tob_bps number false none Volume weighted average spread (in bps) at dealer's top of book across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote was available on both the bid and ask side.
» symbol string false none Ticker symbol of the security
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Broker Summary CA Request

{
  "brokers": [
    "string"
  ],
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Broker Summary CA Request

Properties

Name Type Required Restrictions Description
brokers [string] false none Identifies the broker ID. For eg. [90, 80] or ["ALL_BROKERS"] for fetching all the brokers. Optional field, by default its ["ALL_BROKERS"]
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Broker Summary CA Response

{
  "data": [
    {
      "ask_ratio": 0,
      "ask_value": 0,
      "ask_volume": 0,
      "bid_ratio": 0,
      "bid_value": 0,
      "bid_volume": 0,
      "broker": 0,
      "date_string": "string",
      "notional": 0,
      "spread": 0,
      "spread_bps": 0,
      "symbol": "string",
      "time_period": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Broker Summary CA Response

Properties

Name Type Required Restrictions Description
data [object] false none Broker Summary CA responses object
» ask_ratio number false none Calculates the % of time where the broker had an ask in the book satisfying the level drilled.
» ask_value number false none Time-weighted average of value quoted by the broker at or to the price level that satisfies the drilled depth level.
» ask_volume number false none Time-weighted average of shares quoted by the broker at or to the price level that satisfies the drilled depth level.
» bid_ratio number false none Calculates the % of time where the broker had a bid in the book satisfying the level drilled.
» bid_value number false none Time-weighted average of value quoted by the broker at or to the price level that satisfies the drilled depth level.
» bid_volume number false none Time-weighted average of shares quoted by the broker at or to the price level that satisfies the drilled depth level.
» broker integer false none Identifies the broker ID
» date_string string false none Identifies the local date
» notional integer false none Identifies the notional amount the metrics are associated with.
» spread number false none Difference in dollars of the bid and ask weighted by the value quoted at the price level(s) in the broker’s book where the drilled notional depth was achieved for each side.
» spread_bps number false none Spread measured in basis points relative to the midpoint of the broker’s identified bid/ask for the brokers’ book snapshot, and subject to the drilled depth level.
» symbol string false none Identifies the Ticker symbol of the security
» time_period string false none Identifies the time period of the associated metrics.
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Change Password Request

{
  "confirmPassword": "string",
  "email": "string",
  "newPassword": "string",
  "oldPassword": "string"
}

Change Password Request

Properties

Name Type Required Restrictions Description
confirmPassword string true none Re-enter new password
email string true none User Email Id
newPassword string true none New password must be at least 8 characters in length or longer and must contain 1 lowercase alphabetical character, 1 uppercase alphabetical character, 1 numeric character, one special character
oldPassword string true none Old password

Daily Stats CA Request

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Daily Stats CA Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Daily Stats CA Response

{
  "data": [
    {
      "avg_advolume30": 0,
      "date_string": "string",
      "first_observed_price": 0,
      "fop_time_eastern": "string",
      "fop_venue": "string",
      "intraday_high": 0,
      "intraday_low": 0,
      "intraday_volatility_pct": 0,
      "last_observed_price": 0,
      "lop_time_eastern": "string",
      "lop_venue": "string",
      "symbol": "string",
      "total_adjcount": 0,
      "total_adjvalue": 0,
      "total_adjvolume": 0,
      "total_daily_value": 0,
      "total_daily_volume": 0,
      "total_primary_exchange_volume": 0,
      "total_trade_count": 0,
      "volume_block": 0,
      "volume_cross": 0,
      "volume_dark": 0,
      "volume_moc": 0,
      "volume_moo": 0,
      "volume_odd_lot": 0,
      "volume_post_market": 0,
      "volume_pre_market": 0,
      "vwap30": 0,
      "vwap60": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Daily Stats CA Response

Properties

Name Type Required Restrictions Description
data [object] false none Daily Stats CA responses object
» avg_advolume30 integer false none Average per day traded volume excluding blocks, odd lots, crosses(i.e. , accounting for cancelled trades over the previous 30 calendar days
» date_string string false none Identifies the local date
» first_observed_price number false none The first board-lot trade as of standard open time (9:30 am) using logic: 1) Open auction price based on auction flag , 2) if no auction price occurrs, then take the first observed trade price on all marketplaces/ATS's, ignoring any pre-market trades (e.g. 8:00-9:30)
» fop_time_eastern string false none The exchange-published timestamp (milliseconds or nanoseconds) from the FOP
» fop_venue string false none The venue for which is supplying the FOP for that day
» intraday_high number false none Intra-day high price across all venues between 9:30 am and 4:00 pm excluding oddlots excluding crosses
» intraday_low number false none Intra-day low price across all venues between 9:30 am and 4:00 pm excluding oddlots excluding crosses
» intraday_volatility_pct number false none 1 standard deviation, calculate across all observations across all marketplaces . For illiquid securities that trade infrequently, we will use mid-point for this calculation to circumvent the illquid issue, taking 1- minute snapshot to estimate 1-day volatility in percent
» last_observed_price number false none The last board-lot trade as of standard close time (4:00 pm) using logic: 1) closing auction price, (MOC) 2) if no auction price occurrs, then take the last observed trade price on all marketplaces/ATS's, excluding any after-market/extended trading session trades (e.g. 4-5pm in Cda, 4-8pm in the US)
» lop_time_eastern string false none The exchange-published timestamp (milliseconds or nanoseconds) from the LOP (e.g. 3:49 pm)
» lop_venue string false none The venue which is supplying the LOP for that day
» symbol string false none Ticker Symbol
» total_adjcount integer false none For each trading day, Total adjusted count of trades adjusted for crosses, blocks and oddlots
» total_adjvalue number false none For each trading day, Total adjusted value traded adjusted for crosses, blocks and oddlots
» total_adjvolume integer false none For each trading day, Total adjusted volume adjusted for crosses, blocks and oddlots
» total_daily_value number false none For each trading day, total traded value accounting for cancelled trades. Time coverage - 7:00 am EST to 5:00pm EST
» total_daily_volume number false none For each trading day, total traded volume accounting for cancelled trades. Time coverage - 7:00 am EST to 5:00pm EST
» total_primary_exchange_volume number false none For each trading day, total traded volume at primary exchange accounting for cancelled trades. Time coverage - 7:00 am EST to 5:00pm EST
» total_trade_count number false none For each trading day, number of trades after accounting for cancelled trades. Time coverage - 7:00 am EST to 5:00pm EST
» volume_block integer false none Total number of shares traded in blocks, Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000.If symbol contains NT, NO, NS, DB, WA, WR, WS or WT then abs(volume)/10 >= 10000 and abs (value)/100 >= 100000. Time coverage - 7:00 am EST to 5:00pm EST
» volume_cross number false none Volume for trades with trade conditon flag - P, S, X, C, O, G V, I . Time coverage - 7:00 am EST to 5:00pm EST
» volume_dark integer false none Trade volume flagged as Dark Trade as per trade condition marker. Time coverage - 7:00 am EST to 5:00pm EST
» volume_moc integer false none For each trading day, total closing auction volume inferred as trades flagged as MOC trades, excluding all crosses
» volume_moo integer false none For each trading day, total opening auction volume. MOO volume is inferred as the volume in the first 10 milliseconds after 9:30 am EST excluding all crosses
» volume_odd_lot integer false none For each trading day, total odd lot volume across all venues. Time coverage - 7:00 am EST to 5:00pm EST
» volume_post_market number false none For each trading day, total volume between 4:00 pm and 5:00 pm EST
» volume_pre_market number false none For each trading day, total volume between 7:00 am and 9:30 am EST
» vwap30 number false none Volume-weighted mean of price observations over previous 21 trading days, calculate across all observations across all marketplaces
» vwap60 number false none Volume-weighted mean of price observations over previous 21 trading days, calculate across all observations across all marketplaces
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Daily Stats US Request

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Daily Stats US Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Daily Stats US Response

{
  "data": [
    {
      "avg_advolume30": 0,
      "date_string": "string",
      "first_observed_price": 0,
      "fop_time_eastern": "string",
      "fop_venue": "string",
      "intraday_high": 0,
      "intraday_low": 0,
      "intraday_volatility_pct": 0,
      "last_observed_price": 0,
      "lop_time_eastern": "string",
      "lop_venue": "string",
      "symbol": "string",
      "total_adjcount": 0,
      "total_adjvalue": 0,
      "total_adjvolume": 0,
      "total_daily_value": 0,
      "total_daily_volume": 0,
      "total_trade_count": 0,
      "volume_block": 0,
      "volume_cross": 0,
      "volume_moc": 0,
      "volume_moo": 0,
      "volume_odd_lot": 0,
      "volume_post_market": 0,
      "volume_pre_market": 0,
      "vwap30": 0,
      "vwap60": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Daily Stats US Response

Properties

Name Type Required Restrictions Description
data [object] false none Daily Stats US responses object
» avg_advolume30 number false none Average per day traded volume excluding blocks, odd lots, crosses(i.e. , accounting for cancelled trades over the previous 30 calendar days
» date_string string false none Identifies the local date
» first_observed_price number false none The first board-lot trade as of standard open time (9:30 am) using logic: 1) Open auction price based on auction flag , 2) if no auction price occurrs, then take the first observed trade price on all marketplaces/ATS's, ignoring any pre-market trades
» fop_time_eastern string false none The exchange-published timestamp (milliseconds or nanoseconds) from the FOP
» fop_venue string false none The venue for which is supplying the FOP for that day
» intraday_high number false none Intra-day high price across all venues between 9:30 and 16:00 excluding oddlots excluding crosses
» intraday_low number false none Intra-day low price across all venues between 9:30 and 16:00 excluding oddlots excluding crosses
» intraday_volatility_pct number false none 1 standard deviation, calculate across all observations across all marketplaces - will not be relevant for illiquid securities that trade infrequently --- will use mid-point for this calculation to circumvent the illquid issue, taking 1- minute snapshot to estimate 1-day volatility in percent
» last_observed_price number false none The last board-lot trade as of standard close time (16:00) using logic: 1) closing auction price, (MOC) 2) if no auction price occurrs, then take the last observed trade price on all marketplaces/ATS's, ignoring any after-market/extended trading session trades (e.g.16:00 - 17:00 in Canada,16:00 -20:00 in the US) which are often mis-priced
» lop_time_eastern string false none The exchange-published timestamp (milliseconds or nanoseconds) from the LOP
» lop_venue string false none The venue for which is supplying the LOP for that day
» symbol string false none Identifies the Ticker symbol of the security
» total_adjcount number false none For each trading day during regular market session(9.30 - 16:00), Total adjusted count of trades adjusted for crosses, blocks and oddlots. Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» total_adjvalue number false none For each trading day during regular market session(9.30 - 16:00), Total adjusted value traded adjusted for crosses, blocks and oddlots. Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» total_adjvolume number false none For each trading day during regular market session(9.30 - 16:00), total adjusted volume adjusted for crosses, blocks and oddlots Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» total_daily_value number false none For each trading day, total traded value across all US venues account for cancelled trades during regular market session (9:30 - 16:00)
» total_daily_volume number false none For each trading day, total traded volume across all US venues account for cancelled trades during regular market session (9:30 - 16:00)
» total_trade_count number false none For each trading day, number of trades across all US venues account for cancelled trades during regular market session (9:30 - 16:00)
» volume_block number false none Total number of shares traded in blocks Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000. Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» volume_cross number false none For each trading day, total cross volume across all venues during regular hours (09:30 - 16:00). Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» volume_moc number false none For each trading day, total closing auction volume inferred as trades flagged as MOC trades, excluding all crosses
» volume_moo number false none For each trading day, total opening auction volume. MOO volume is inferred as the volume in the first 10 milliseconds after 9:30 EST excluding all crosses
» volume_odd_lot number false none For each trading day, total odd lot volume across all venues during regular trading hours. Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» volume_post_market number false none For each trading day, total volume across all venues during postmarket hours (16:00 - 20:00). Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» volume_pre_market number false none For each trading day, total volume across all venues during pre-market hours (06:30 - 9:30). Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» vwap30 number false none volume-weighted mean of price observations over previous 21 trading days, calculate across all observations across all marketplaces
» vwap60 number false none volume-weighted mean of price observations over previous 42 trading days, calculate across all observations across all marketplaces
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Data Availability Request

{
  "apiName": [
    "OHLC CA"
  ],
  "pageafter": 0
}

Data Availability Request

Properties

Name Type Required Restrictions Description
apiName [string] true none Name of specific API or "all"
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record

Data Availability Response

{
  "data": [
    {
      "apiName": "string",
      "lastLoadDate": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Data Availability Response

Properties

Name Type Required Restrictions Description
data [object] false none Data Availability API object
» apiName string false none Name of the API for which data was loaded
» lastLoadDate string false none Date when data was last loaded for the API
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Days To Cover Request

{
  "columns": [
    "business_date"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string"
}

Days To Cover Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Effective date for the data
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Effective date for the data

Days To Cover Response

{
  "data": [
    {
      "business_date": "string",
      "days_to_cover_15": 0,
      "days_to_cover_current": 0,
      "days_to_cover_current_vs_90": 0,
      "isin": "string",
      "name": "string",
      "symbol": "string"
    }
  ]
}

Days To Cover Response

Properties

Name Type Required Restrictions Description
data [object] false none Days to Cover responses object
» business_date string false none Effective date for the data
» days_to_cover_15 number false none Days to cover 15 calendar days ago = Short Interest / 15 day average ADTV)
» days_to_cover_current number false none Current day's days to cover (It is a liquidity measure = Short Interest / 15 day average ADTV)
» days_to_cover_current_vs_90 number false none The difference between days to cover for the last 15 calendar days and last 90 calendar days
» isin string false none Security ID - ISIN
» name string false none Security Name
» symbol string false none Ticker Symbol

Forgot Password Request

{
  "email": "string"
}

Forgot Password Request

Properties

Name Type Required Restrictions Description
email string true none Email for forgot password

Global Symbols Request

{
  "columns": [
    "timeseries_id"
  ],
  "countrycode": "string",
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Global Symbols Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
countrycode string true none Identifies the country the security trades in
enddate string true none Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Global Symbols Response

{
  "data": [
    {
      "country_code": "string",
      "currency": "string",
      "cusip": "string",
      "date_string": "string",
      "exchange": "string",
      "isin": "string",
      "price_offset": 0,
      "price_ratio": 0,
      "primary_exchange": "string",
      "rev_price_ratio": 0,
      "security_type": "string",
      "sedol": "string",
      "shares_outstanding": 0,
      "symbol": "string",
      "timeseries_id": "string",
      "year": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Global Symbols Response

Properties

Name Type Required Restrictions Description
data [object] false none Global Symbols responses object
» country_code string false none Identifies the country the security trades in
» currency string false none ISO Currency Code
» cusip string false none Identifies the nine character alphanumeric code that identifies a North American financial security for the purpose of facilitating clearing and settlement of trades. (This will only be available to client haveing licesne to access this column)
» date_string string false none Identifies the local date
» exchange string false none Identifies the trading venue
» isin string false none ISIN code (global level identifier). (This will only be available to client haveing licesne to access this column)
» price_offset number false none Identifies the dividend on the ex-dividend date (ex-dividend date can be isolated by searching for non-zero values)
» price_ratio number false none Identifies the price ratio for splits (can be used for volume transformations as well)
» primary_exchange string false none Identifies the exchange on which the security being issued has been listed
» rev_price_ratio number false none Identifies the price ratio to adjust for splits going back in time (can be used for volume transformations as well)
» security_type string false none Identifies the type of the security being issued
» sedol string false none The UK National Security Identification Number. (This will only be available to client haveing licesne to access this column)
» shares_outstanding number false none Identifies the number of shares outstanding
» symbol string false none Identifies the Ticker symbol of the security
» timeseries_id string false none Unique identifier for security, stays consistent across time even if the underlying symbol changes
» year string false none Identifies the year
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Global Symbols Delta Request

{
  "columns": [
    "timeseries_id"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Global Symbols Delta Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Global Symbols Delta Response

{
  "data": [
    {
      "date_string": "string",
      "exchange": "string",
      "new_cusip": "string",
      "new_isin": "string",
      "new_price_ratio": 0,
      "new_primary_exchange": "string",
      "new_rev_price_ratio": 0,
      "new_sedol": "string",
      "new_shares_outstanding": 0,
      "new_symbol": "string",
      "price_offset": 0,
      "symbol": "string",
      "timeseries_id": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Global Symbols Delta Response

Properties

Name Type Required Restrictions Description
data [object] false none Global Symbols Delta responses object
» date_string string false none Identifies the local date
» exchange string false none Identifies the trading venue
» new_cusip string false none Identifies the nine character alphanumeric code that identifies a North American financial security for the purpose of facilitating clearing and settlement of trades
» new_isin string false none ISIN code (global level identifier)
» new_price_ratio number false none Identifies the price ratio for splits (can be used for volume transformations as well)
» new_primary_exchange string false none Identifies the exchange on which the security being issued has been listed
» new_rev_price_ratio number false none Identifies the price ratio to adjust for splits going back in time (can be used for volume transformations as well)
» new_sedol string false none The UK National Security Identification Number
» new_shares_outstanding number false none Identifies the number of shares outstanding
» new_symbol string false none Identifies the Ticker symbol of the security
» price_offset number false none Identifies the dividend on the ex-dividend date (ex-dividend date can be isolated by searching for non-zero values)
» symbol string false none Identifies the Ticker symbol of the security
» timeseries_id string false none Unique identifier for security, stays consistent across time even if the underlying symbol changes
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Investor Flows CA

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Investor Flows CA

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Investor Flows CA

{
  "data": [
    {
      "active_buy_participant_count_nonretail": 0,
      "active_buy_participant_count_retail": 0,
      "active_buy_shr_volume_nonretail": 0,
      "active_buy_shr_volume_retail": 0,
      "active_buy_trade_count_nonretail": 0,
      "active_buy_trade_count_retail": 0,
      "active_buy_value_volume_nonretail": 0,
      "active_buy_value_volume_retail": 0,
      "active_sell_participant_count_nonretail": 0,
      "active_sell_participant_count_retail": 0,
      "active_sell_shr_volume_nonretail": 0,
      "active_sell_shr_volume_retail": 0,
      "active_sell_trade_count_nonretail": 0,
      "active_sell_trade_count_retail": 0,
      "active_sell_value_volume_nonretail": 0,
      "active_sell_value_volume_retail": 0,
      "cusip": "string",
      "date_string": "string",
      "isin": "string",
      "net_shr_volume_nonretail": 0,
      "net_shr_volume_retail": 0,
      "net_value_volume_nonretail": 0,
      "net_value_volume_retail": 0,
      "passive_buy_participant_count_nonretail": 0,
      "passive_buy_participant_count_retail": 0,
      "passive_buy_shr_volume_nonretail": 0,
      "passive_buy_shr_volume_retail": 0,
      "passive_buy_trade_count_nonretail": 0,
      "passive_buy_trade_count_retail": 0,
      "passive_buy_value_volume_nonretail": 0,
      "passive_buy_value_volume_retail": 0,
      "passive_sell_participant_count_nonretail": 0,
      "passive_sell_participant_count_retail": 0,
      "passive_sell_shr_volume_nonretail": 0,
      "passive_sell_shr_volume_retail": 0,
      "passive_sell_trade_count_nonretail": 0,
      "passive_sell_trade_count_retail": 0,
      "passive_sell_value_volume_nonretail": 0,
      "passive_sell_value_volume_retail": 0,
      "sedol": "string",
      "symbol": "string",
      "total_participant_count": 0,
      "total_shr_volume": 0,
      "total_trade_count": 0,
      "total_value_volume": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Investor Flows CA

Properties

Name Type Required Restrictions Description
data [object] false none Investor Flows CA responses object
» active_buy_participant_count_nonretail number false none Total number of participants on buy side of active trades calculated for each trading day and categorized by non-retail investor type
» active_buy_participant_count_retail number false none Total number of participants on buy side of active trades calculated for each trading day and categorized by retail investor type
» active_buy_shr_volume_nonretail number false none Total number of shares on buy side of active trades calculated for each trading day and categorized by non-retail investor type
» active_buy_shr_volume_retail number false none Total number of shares on buy side of active trades calculated for each trading day and categorized by retail investor type
» active_buy_trade_count_nonretail number false none Total number of trades on buy side of active trades calculated for each trading day and categorized by non-retail investor type
» active_buy_trade_count_retail number false none Total number of trades on buy side of active trades calculated for each trading day and categorized by retail investor type
» active_buy_value_volume_nonretail number false none Total buy value of active trades calculated for each trading day and categorized by non-retail investor type
» active_buy_value_volume_retail number false none Total buy value of active trades calculated for each trading day and categorized by retail investor type
» active_sell_participant_count_nonretail number false none Total number of participants on sell side of active trades calculated for each trading day and categorized by non-retail investor type
» active_sell_participant_count_retail number false none Total number of participants on sell side of active trades calculated for each trading day and categorized by retail investor type
» active_sell_shr_volume_nonretail number false none Total number of shares on sell side of active trades calculated for each trading day and categorized by non-retail investor type
» active_sell_shr_volume_retail number false none Total number of shares on sell side of active trades calculated for each trading day and categorized by retail investor type
» active_sell_trade_count_nonretail number false none Total number of trades on sell side of active trades calculated for each trading day and categorized by non-retail investor type
» active_sell_trade_count_retail number false none Total number of trades on sell side of active trades calculated for each trading day and categorized by retail investor type
» active_sell_value_volume_nonretail number false none Total sell value of active trades calculated for each trading day and categorized by non-retail investor type
» active_sell_value_volume_retail number false none Total sell value of active trades calculated for each trading day and categorized by retail investor type
» cusip string false none CUSIP of the security
» date_string string false none Identifies the local date
» isin string false none ISIN of the security
» net_shr_volume_nonretail number false none Total number of shares calculated for each trading day and categorized by non-retail investor type
» net_shr_volume_retail number false none Total number of shares calculated for each trading day and categorized by retail investor type
» net_value_volume_nonretail number false none Total value of shares calculated for each trading day and categorized by non-retail investor type
» net_value_volume_retail number false none Total value of shares calculated for each trading day and categorized by retail investor type
» passive_buy_participant_count_nonretail number false none Total number of participants on buy side of passive trades calculated for each trading day and categorized by non-retail investor type
» passive_buy_participant_count_retail number false none Total number of participants on buy side of passive trades calculated for each trading day and categorized by retail investor type
» passive_buy_shr_volume_nonretail number false none Total number of shares on buy side of passive trades calculated for each trading day and categorized by non-retail investor type
» passive_buy_shr_volume_retail number false none Total number of shares on buy side of passive trades calculated for each trading day and categorized by retail investor type
» passive_buy_trade_count_nonretail number false none Total number of trades on buy side of passive trades calculated for each trading day and categorized by non-retail investor type
» passive_buy_trade_count_retail number false none Total number of trades on buy side of passive trades calculated for each trading day and categorized by retail investor type
» passive_buy_value_volume_nonretail number false none Total buy value of passive trades calculated for each trading day and categorized by non-retail investor type
» passive_buy_value_volume_retail number false none Total buy value of passive trades calculated for each trading day and categorized by retail investor type
» passive_sell_participant_count_nonretail number false none Total number of participants on sell side of passive trades calculated for each trading day and categorized by non-retail investor type
» passive_sell_participant_count_retail number false none Total number of participants on sell side of passive trades calculated for each trading day and categorized by retail investor type
» passive_sell_shr_volume_nonretail number false none Total number of shares on sell side of passive trades calculated for each trading day and categorized by non-retail investor type
» passive_sell_shr_volume_retail number false none Total number of shares on sell side of passive trades calculated for each trading day and categorized by retail investor type
» passive_sell_trade_count_nonretail number false none Total number of trades on sell side of passive trades calculated for each trading day and categorized by non-retail investor type
» passive_sell_trade_count_retail number false none Total number of trades on sell side of passive trades calculated for each trading day and categorized by retail investor type
» passive_sell_value_volume_nonretail number false none Total sell value of passive trades calculated for each trading day and categorized by non-retail investor type
» passive_sell_value_volume_retail number false none Total sell value of passive trades calculated for each trading day and categorized by retail investor type
» sedol string false none SEDOL of the security
» symbol string false none Ticker symbol of the security
» total_participant_count number false none Total number of participants calculated for each trading day
» total_shr_volume number false none Total number of shares calculated for each trading day
» total_trade_count number false none Total number of trades calculated for each trading day
» total_value_volume number false none Total value calculated for each trading day
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Issuers CA Request

{
  "columns": [
    "timeseries_id"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Issuers CA Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Starting date in EST from when the data is required. For eg. start date of 2020-09-01 will include data from 2020-09-01 to enddate
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Issuers CA Response

{
  "data": [
    {
      "company_name": "string",
      "cusip": "string",
      "date_string": "string",
      "fund_family": "string",
      "interlisted_exchange": "string",
      "is_etf": 0,
      "is_fund_of_funds": "string",
      "issue_list_date": "string",
      "issue_long_name": "string",
      "issue_short_name": "string",
      "listing_exchange": "string",
      "security_type": "string",
      "segment": "string",
      "symbol": "string",
      "timeseries_id": "string",
      "us_symbol": "string",
      "year": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Issuers CA Response

Properties

Name Type Required Restrictions Description
data [object] false none Issuers CA responses object
» company_name string false none Name of the company issuing the security
» cusip string false none Identifies the nine character alphanumeric code that identifies a North American financial security for the purpose of facilitating clearing and settlement of trades
» date_string string false none Identifies the date on which the issue continued to be listed on the exchange
» fund_family string false none Identifies the fund family an ETF belongs to
» interlisted_exchange string false none Identifies the secondary listing exchange if the security is interlisted
» is_etf number false none Flag for identifying if the security being issued is an etf or not
» is_fund_of_funds string false none Boolean to identify if an ETF is a fund of funds
» issue_list_date string false none Identifies the date the security was issued
» issue_long_name string false none Entire name of the security
» issue_short_name string false none Truncated name of the security being issued
» listing_exchange string false none Identifies the exchange on which the security being issued has been listed
» security_type string false none Identifies the type of the security being issued
» segment string false none Identifies the segment (industry) of the security being issued
» symbol string false none Identifies the Ticker symbol of the security
» timeseries_id string false none Unique identifier for security, stays consistent across time even if the underlying symbol changes
» us_symbol string false none Identifies the ticker of the security on the US exchange
» year number false none Identifies the year in which the record was added to the dataset
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Liquidity Summary CA Request

{
  "columns": [
    "date_string"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Liquidity Summary CA Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Liquidity Summary CA Response

{
  "data": [
    {
      "date_string": "string",
      "spread": 0,
      "symbol": "string"
    }
  ]
}

Liquidity Summary CA Response

Properties

Name Type Required Restrictions Description
data [object] false none Liquidity Summary CA responses object
» date_string string false none Identifies the local date
» spread number false none Contains pre-calculated spread with the following specifications:
1) Metrics are calculated using the consolidated order book from all Canadian venues
2) The bid/ask is calculated as the volume weighted average price that would be realized assuming the execution of a $50,000 marketable sell/buy order
3)The effective spread is calculated at each one-second interval between 9:45 - 15:45 ET
4)The reported average bid-ask spread is computed by taking the time-weighted average of all one second effective spreads for each day.
Covers trading activity across all Canadian marketplaces. Symbol coverage extends to all Canadian symbols as well.
» symbol string false none Identifies the Ticker symbol of the security

Liquidity Analytics CA Request

{
  "columns": [
    "symbol"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

Liquidity Analytics CA Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Date in EST for when the data is required. For eg. '2020-09-01' (Due to the volume of the data, select only up to 90 days at a time e.g. 'startdate': '2020-06-01', 'enddate': '2020-08-29')
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Liquidity Analytics CA Response

{
  "data": [
    {
      "asksize10b_impact": 0,
      "asksize25b_impact": 0,
      "askvalue10b_impact": 0,
      "askvalue25b_impact": 0,
      "bidsize10b_impact": 0,
      "bidsize25b_impact": 0,
      "bidvalue10b_impact": 0,
      "bidvalue25b_impact": 0,
      "date_string": "string",
      "liquidity_score": 0,
      "pct_time_ask_10b_deep": 0,
      "pct_time_ask_25b_deep": 0,
      "pct_time_bid_10b_deep": 0,
      "pct_time_bid_25b_deep": 0,
      "pct_time_bidask_100k_deep": 0,
      "pct_time_bidask_1m_deep": 0,
      "pct_time_bidask_200k_deep": 0,
      "pct_time_bidask_25k_deep": 0,
      "pct_time_bidask_500k_deep": 0,
      "pct_time_bidask_50k_deep": 0,
      "sprd_100k_bps": 0,
      "sprd_1m_bps": 0,
      "sprd_200k_bps": 0,
      "sprd_25k_bps": 0,
      "sprd_500k_bps": 0,
      "sprd_50k_bps": 0,
      "symbol": "string",
      "time_wgt_askvalue10b_impact_component_score": 0,
      "time_wgt_askvalue25b_impact_component_score": 0,
      "time_wgt_bidvalue10b_impact_component_score": 0,
      "time_wgt_bidvalue25b_impact_component_score": 0,
      "time_wgt_sprd_100k_bps_component_score": 0,
      "time_wgt_sprd_1m_bps_component_score": 0,
      "time_wgt_sprd_200k_bps_component_score": 0,
      "time_wgt_sprd_25k_bps_component_score": 0,
      "time_wgt_sprd_500k_bps_component_score": 0,
      "time_wgt_sprd_50k_bps_component_score": 0,
      "venue": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Liquidity Analytics CA Response

Properties

Name Type Required Restrictions Description
data [object] false none Liquidity Analytics CA responses object
» asksize10b_impact number false none Total number of shares of visible liquidity at midpoint up until10 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until 10 bps.
» asksize25b_impact number false none Total number of shares of visible liquidity at midpoint up until 25 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until 25 bps.
» askvalue10b_impact number false none Total value of visible liquidity at midpoint up until at least 10 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until at least 10 bps.
» askvalue25b_impact number false none Total value of visible liquidity at midpoint up until at least 25 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until at least 25 bps.
» bidsize10b_impact number false none Total number of shares of visible liquidity at midpoint up until10 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until 10 bps.
» bidsize25b_impact number false none Total number of shares of visible liquidity at midpoint up until 25 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until 25 bps.
» bidvalue10b_impact number false none Total value of visible liquidity at midpoint up until at least 10 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until at least 10 bps.
» bidvalue25b_impact number false none Total value of visible liquidity at midpoint up until at least 25 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until at least 25 bps.
» date_string string false none Identifies the local date
» liquidity_score number false none LiquidityScore aims to provide a simplified view into the amount of displayed liquidity at multiple price levels deep on each symbol. It draws from other reported fields in this table and uses a weighted average to create a summarized 1-5 scoring system, with 1 representing low levels of displayed liquidity, and 5 representing high levels of displayed liquidity.
» pct_time_ask_10b_deep number false none Percent time valid ask was available at midpoint and up until 10 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
» pct_time_ask_25b_deep number false none Percent time valid ask was available at midpoint and up until 25 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
» pct_time_bid_10b_deep number false none Percent time valid bid was available at midpoint and up until 10 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
» pct_time_bid_25b_deep number false none Percent time valid bid was available at midpoint and up until 25 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
» pct_time_bidask_100k_deep number false none Percent time there was a valid two sided quote satisfying the notional amount ($100,000) available on both the bid and the ask side.
» pct_time_bidask_1m_deep number false none Percent time there was a valid two sided quote satisfying the notional amount ($1,000,000) available on both the bid and the ask side.
» pct_time_bidask_200k_deep number false none Percent time there was a valid two sided quote satisfying the notional amount ($200,000) available on both the bid and the ask side.
» pct_time_bidask_25k_deep number false none Percent time there was a valid two sided quote satisfying the notional amount ($25,000) available on both the bid and the ask side.
» pct_time_bidask_500k_deep number false none Percent time there was a valid two sided quote satisfying the notional amount ($500,000) available on both the bid and the ask side.
» pct_time_bidask_50k_deep number false none Percent time there was a valid two sided quote satisfying the notional amount ($50,000) available on both the bid and the ask side.
» sprd_100k_bps number false none Volume weighted average spread (in bps) to execute at least a $100,000 order across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($100,000) was available on both the bid and ask side.
» sprd_1m_bps number false none Volume weighted average spread (in bps) to execute at least a $1,000,000 order across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($1,000,000) was available on both the bid and ask side.
» sprd_200k_bps number false none Volume weighted average spread (in bps) to execute at least a $200,000 order across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($200,000) was available on both the bid and ask side.
» sprd_25k_bps number false none Volume weighted average spread (in bps) to execute at least a $25,000 order across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($25,000) was available on both the bid and ask side.
» sprd_500k_bps number false none Volume weighted average spread (in bps) to execute at least a $500,000 order across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($500,000) was available on both the bid and ask side.
» sprd_50k_bps number false none Volume weighted average spread (in bps) to execute at least a $50,000 order across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($50,000) was available on both the bid and ask side.
» symbol string false none Ticker symbol of the security
» time_wgt_askvalue10b_impact_component_score number false none Weighted score attributable to this component to be used in the Liquidty_Score field
» time_wgt_askvalue25b_impact_component_score number false none Weighted score attributable to this component to be used in the Liquidty_Score field
» time_wgt_bidvalue10b_impact_component_score number false none Weighted score attributable to this component to be used in the Liquidty_Score field
» time_wgt_bidvalue25b_impact_component_score number false none Weighted score attributable to this component to be used in the Liquidty_Score field
» time_wgt_sprd_100k_bps_component_score number false none Weighted score attributable to this component to be used in the Liquidty_Score field
» time_wgt_sprd_1m_bps_component_score number false none Weighted score attributable to this component to be used in the Liquidty_Score field
» time_wgt_sprd_200k_bps_component_score number false none Weighted score attributable to this component to be used in the Liquidty_Score field
» time_wgt_sprd_25k_bps_component_score number false none Weighted score attributable to this component to be used in the Liquidty_Score field
» time_wgt_sprd_500k_bps_component_score number false none Weighted score attributable to this component to be used in the Liquidty_Score field
» time_wgt_sprd_50k_bps_component_score number false none Weighted score attributable to this component to be used in the Liquidty_Score field
» venue string false none Venue for associated metrics. Consolidated view can be obtained under 'All'
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

MOCI CA Request

{
  "columns": [
    "date_string"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string",
  "symbols": [
    "string"
  ]
}

MOCI CA Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

MOCI CA Response

{
  "data": [
    {
      "date_string": "string",
      "farindicativeclosingprice": 0,
      "imbalancereferenceprice": 0,
      "imbalanceside": "string",
      "imbalancevolume": 0,
      "marketorderimbalanceside": "string",
      "marketorderimbalancevolume": 0,
      "nearindicativeclosingprice": 0,
      "pairedvolume": 0,
      "pricevariation": 0,
      "seq": 0,
      "symbol": "string",
      "time": "string",
      "time_nanos": 0,
      "venue": "string"
    }
  ]
}

MOCI CA Response

Properties

Name Type Required Restrictions Description
data [object] false none MOCI CA responses object
» date_string string false none Date
» farindicativeclosingprice number false none The calculated closing price that will maximize the number of shares matched based on closing interest only (MOC, LOC). This calculation excludes continuous market orders.
» imbalancereferenceprice number false none TSX or TSXV Best-Bid-and-Offer (BBO) mid-point
» imbalanceside string false none Side (buy or sell) of the Imbalance Volume
» imbalancevolume number false none imbalance volume after matching off MOC market orders and MOC limit orders that are priced equal to or more aggressive than the Reference Price
» marketorderimbalanceside string false none Side (buy or sell) of the Market Order Imbalance Volume
» marketorderimbalancevolume number false none Indicates the share Imbalance when considering MOC orders only. Note this will not change from the Freeze period as MOC orders are not allowed after this time.
» nearindicativeclosingprice number false none The calculated closing price that will maximize the number of shares matched based on on-close orders (MOC, LOC) and visible continuous market orders. Effectively, this is the price at which the closing print would occur at the time of publication.
» pairedvolume number false none The number of MOC and LOC shares that are able be matched at the Reference Price
» pricevariation number false none This field indicates the absolute value of the percentage of deviation of the Near Indicative Closing Price from the Reference Price. This will alert traders of symbols that may close outside of the volatility parameters and encourage offsetting liquidity.
» seq number false none Sequence number of the message
» symbol string false none Ticker of the TSX or TSXV-listed MOC-eligible security, which the imbalance message pertains to
» time string false none Date time to the millisecond
» time_nanos number false none Time portion down to the nano second
» venue string false none The listing exchange identifier

MX Daily Stats CA Request

{
  "callputcode": "string",
  "columns": [
    "underlying_symbol"
  ],
  "deltalowerlimit": 0,
  "deltaupperlimit": 0,
  "enddate": "string",
  "expirationenddate": "string",
  "expirationstartdate": "string",
  "gammalowerlimit": 0,
  "gammaupperlimit": 0,
  "instrumentgroup": "string",
  "instrumenttype": "string",
  "pageafter": 0,
  "startdate": "string",
  "strikepricelowerlimit": 0,
  "strikepriceupperlimit": 0,
  "symbol": "string"
}

MX Daily Stats CA Request

Properties

Name Type Required Restrictions Description
callputcode string false none Identifies between Call Options and Put Options
columns [string] false none Select columns from the enumerated list below can be provided as an array
deltalowerlimit number false none Lower limit for Delta
deltaupperlimit number false none Upper limit for Delta
enddate string true none Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
expirationenddate string false none Ending expiration date in YYYY-MM-DD
expirationstartdate string false none Starting expiration date in YYYY-MM-DD
gammalowerlimit number false none Lower limit for Gamma
gammaupperlimit number false none Upper limit for Gamma
instrumentgroup string false none Instrument Key
instrumenttype string true none Identifies the type of instrument. Possible values are Future,EquityOption, Strategy, FutureOption
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Starting date in EST from when the data is required. For eg. start date of 2020-09-01 will include data from 2020-09-01 to enddate
strikepricelowerlimit number false none Lower limit of Strike Price of Option
strikepriceupperlimit number false none Upper limit of Strike Price of Option
symbol string true none Ticker symbol of the security. For eg. "AC" for Air Canada. Please note that "ALL_SYMBOLS" cannot be used with this API

MX Daily Stats CA Response

{
  "data": [
    {
      "call_put_code": "string",
      "date_string": "string",
      "delta": 0,
      "expiration_date": "string",
      "external_symbol": "string",
      "gamma": 0,
      "implied_vol_by_expiration": 0,
      "implied_vol_extsymbol": 0,
      "instrumentgroup": "string",
      "instrumenttype": "string",
      "last_ask_extsymbol": 0,
      "last_bid_extsymbol": 0,
      "last_observed_price_underlying": 0,
      "last_price_extsymbol": 0,
      "london_4pm_ask": 0,
      "london_4pm_bid": 0,
      "london_4pm_price": 0,
      "open_interest": 0,
      "option_input_price": 0,
      "option_type": "string",
      "putcallratio_byoi": 0,
      "putcallratio_byvolume": 0,
      "referenceprice": "string",
      "rho": 0,
      "roll_volume": 0,
      "settlement_price": 0,
      "strike_price": 0,
      "theta": 0,
      "trade_count": 0,
      "trade_value": 0,
      "trade_volume": 0,
      "underlying_symbol": "string",
      "vega": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

MX Daily Stats CA Response

Properties

Name Type Required Restrictions Description
data [object] false none TSX Daily Stats responses object
» call_put_code string false none Identifies between Call Options and Put Options
» date_string string false none Identifies the local date
» delta number false none Identifies the change of option price with respect to $1 change in the underlying price
» expiration_date string false none Expiration in YYYYMMDD
» external_symbol string false none Symbol of the derivative instrument
» gamma number false none Identifies the measures the rate of change of its delta given $1 move in the underlying.
» implied_vol_by_expiration number false none Implied Volatility by Expiration
» implied_vol_extsymbol number false none Implied Volatility by External Symbol
» instrumentgroup string false none Instrument Key
» instrumenttype string false none Identifies the type of instrument. Possible values are Future, EquityOption, Strategy, FutureOption
» last_ask_extsymbol number false none Last ask price of external symbol
» last_bid_extsymbol number false none Last bid price of external symbol
» last_observed_price_underlying number false none Last observed price of underying security
» last_price_extsymbol number false none Last price of external symbol
» london_4pm_ask number false none The observed market-wide ask as at 4:00PM GMT or 11:00 ET / 12:00 EST to be used by European firms who are marking-to-market
» london_4pm_bid number false none The observed market-wide bid as at 4:00PM GMT or 11:00 ET / 12:00 EST to be used by European firms who are marking-to-market
» london_4pm_price number false none The observed market-wide price as at 4:00PM GMT or 11:00 ET / 12:00 EST to be used by European firms who are marking-to-market
» open_interest integer false none Total number of outstanding derivative contracts that have not been settled for an asset.
» option_input_price number false none Option price used as input for greeks and Implied Volatility calculation
» option_type string false none Identifies between American and European Options
» putcallratio_byoi number false none Put Call Ratio by Open Interest
» putcallratio_byvolume number false none Put Call Ratio by Volume
» referenceprice string false none Reference Price
» rho number false none Identifies the measures the change of the option price with respect to 1% increase in volatility
» roll_volume integer false none Volume Activity for Roll Activity per instrument group. The metric is only available to futures roll actitivities identified by 'Strategy' in the 'intrumenttype' column.
» settlement_price number false none Settlement Price
» strike_price number false none Strike Price of Option
» theta number false none Identifies the measures the loss of the option value with passage of one day
» trade_count integer false none For each trading day, number of trades during regular market session (9:30 am to 4:00 pm)
» trade_value number false none For each trading day, trade value during regular market session (9:30 am to 4:00 pm)
» trade_volume integer false none For each trading day, trade volume during regular market session (9:30 am to 4:00 pm)
» underlying_symbol string false none Underlying Symbol (if applicable) For SSF: ticker of the Underlying Stock or ETF
» vega number false none Identifies the measures the change of the option price with respect to 100 bp increase in interest rate
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

North American Buybacks Request

{
  "announce_date_end": "string",
  "announce_date_start": "string",
  "columns": [
    "transaction_id"
  ],
  "cusip": [
    "string"
  ],
  "effective_date_end": "string",
  "effective_date_start": "string",
  "expiry_date_end": "string",
  "expiry_date_start": "string",
  "isin": [
    "string"
  ],
  "last_updated_date_end": "string",
  "last_updated_date_start": "string",
  "pageafter": 0,
  "symbol": [
    "string"
  ],
  "time_processed_end": "string",
  "time_processed_start": "string"
}

North American Buybacks Request

Properties

Name Type Required Restrictions Description
announce_date_end string false none End Date to filter by Announce Date of Buyback. For eg. announce_date_end of 2024-08-31 will include data from specified date_start to 2024-08-31. NOTE: This filter will not include Transaction records, use time_processed filters to include this record type
announce_date_start string false none Start Date to filter by Announce Date of Buyback. For eg.announce_date_start of 2024-08-31 will include data from 2024-08-31 to specified date_end. NOTE: This filter will not include Transaction records, use time_processed filters to include this record type
columns [string] false none Select columns from the enumerated list below can be provided as an array
cusip [string] false none CUSIP of Security,multiple can be provided as an array. Not including an ID will return ALL IDs
effective_date_end string false none End date to filter results based on the Buyback Effective Date. For eg.effective_date_end of 2024-08-31 will include data from specified date_start to 2024-08-31. NOTE: This filter will not include Transaction records, use time_processed filters to include this record type
effective_date_start string false none Start date to filter results based on the Buyback Effective Date. For eg. effective_date_start of 2024-08-31 will include data from 2024-08-31 to specified date_end. NOTE: This filter will not include Transaction records, use time_processed filters to include this record type
expiry_date_end string false none End Date to Filter by Expiry Date of Buyback. For eg. expiry_date_end of 2024-08-31 will include data from specified date_start to 2024-08-31. NOTE: This filter will not include Transaction records, use time_processed filters to include this record type
expiry_date_start string false none Start Date to Filter by Expiry Date of Buyback. For eg. expiry_date_start of 2024-08-31 will include data from 2024-08-31 to specified date_end. NOTE: This filter will not include Transaction records, use time_processed filters to include this record type
isin [string] false none ISIN of Security, multiple can be provided as an array. Not including an ID will return ALL IDs
last_updated_date_end string false none End date to filter results based on the last date a record is updated. For eg. last_updated_date_end of 2024-08-31 will include data from specified date_start to 2024-08-31
last_updated_date_start string false none Start date to filter results based on the last date a record is updated. For eg. last_updated_date_start of 2024-08-31 will include data from 2024-08-31 to specified date_end
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
symbol [string] false none Symbol of Security, multiple symbols can be provided as an array. Not including an ID will return ALL IDs
time_processed_end string true none Enddate to filter results based on the time the information was entered into internal systems. Time is UTC standard. For eg. time_processed_end of 2024-08-31 will include data from specified date_start to 2024-08-31
time_processed_start string true none Start date to filter results based on the time the information was entered into internal systems. Time is UTC standard. For eg. time_processed_start of 2024-08-31 will include data from 2024-08-31 to specified date_end

North American Buybacks Response

{
  "data": [
    {
      "amount": 0,
      "announce_date": "string",
      "currency": "string",
      "current_percent_completed": 0,
      "current_primary_country": "string",
      "current_prorated_completed": "string",
      "cusip": "string",
      "effective_date": "string",
      "end_date": "string",
      "eom_total_shares": 0,
      "eom_value": 0,
      "expiry_date": "string",
      "historical_5yr_percent_completed": 0,
      "historical_5yr_subject_percent_announced": 0,
      "ingest_day": "string",
      "initial_subject_shares": 0,
      "initial_subject_value": 0,
      "intention_revisions": "string",
      "isin": "string",
      "last_initial_subject_shares": 0,
      "last_initial_subject_value": 0,
      "last_shares_in_issue_before_effective": 0,
      "last_subject_end_date": "string",
      "last_update_date": "string",
      "latest_shares_in_issue": 0,
      "monthly_report_period": "string",
      "name": "string",
      "percent_differance_in_outstanding_shares": 0,
      "reported_price": 0,
      "reported_transaction_max_date": "string",
      "reported_transaction_min_date": "string",
      "shares_purchased_in_mon": 0,
      "split_adjustment_factor": 0,
      "start_date": "string",
      "subject_shares_percent_announced": 0,
      "symbol": "string",
      "time_processed_utc": "string",
      "time_released_utc": "string",
      "transaction_id": "string",
      "transaction_note": "string",
      "type": "string",
      "usd_value": 0,
      "value_purchased_in_mon": 0
    }
  ]
}

North American Buybacks Response

Properties

Name Type Required Restrictions Description
data [object] false none North American Buybacks Response responses object
» amount number false none Number of shares traded
» announce_date string false none Date Buyback Program was announced for current effective period. If this date is unavailable TIME_PROCESSED_UTC will be used
» currency string false none Currency of Transaction, USD or CAD
» current_percent_completed number false none Percentage of Shares purchased compared to INITIAL_SUBJECT_SHARES for current announced buyback, if only Value is available Percentage of value purchased compared to IINITIAL_SUBJECT_VALUE
» current_primary_country string false none Country Code of current primary exchange
» current_prorated_completed string false none The prorated percentage completed for the current buyback, by month based off CURRENT_PERCENT_COMPLETED. If Monthly Report Period is the same month as Expiry Date this value will be the same as CURRENT_PERCENT_COMPLETED
» cusip string false none Security ID - CUSIP
» effective_date string false none Buy back program Start Date, and for US +1yr from last Effective Date for open-ended buyback program (open-ended means no End Date was provided for the buyback). If this date is unavailable TIME_RELEASED_UTC will be used. If both dates are unavailable TIME_PROCESSED_UTC will be used
» end_date string false none Reported end of the intention period
» eom_total_shares number false none Latest total number of shares accumulated between EFFECTIVE_DATE and EXPIRY_DATE for MONTHLY_REPORT_PERIOD
» eom_value number false none Latest total value of shares accumulated between EFFECTIVE_DATE and EXPIRY_DATE for MONTHLY_REPORT_PERIOD
» expiry_date string false none End Date for current Buyback Program, or for open-ended US Buybacks 1 year from the last Effective Date (open-ended means no End Date was provided for the buyback)
» historical_5yr_percent_completed number false none Average CURRENT_PERCENT_COMPLETED value on EXPIRY_DATE, over the last 5 years
» historical_5yr_subject_percent_announced number false none The average percentage of shares in issue that were eligible for purchase for the last 5 years
» ingest_day string false none Date the information was received for API data load
» initial_subject_shares number false none Initial number of shares eligible for purchase in current buyback
» initial_subject_value number false none Initial value eligible for purchase in current buyback
» intention_revisions string false none Text notification of revisions to existing buyback progam
» isin string false none Security ID - ISIN; Only available for users with ISIN Licensing
» last_initial_subject_shares number false none Number of shares eligible to be purchased for previous buyback
» last_initial_subject_value number false none Value of shares eligible to be purchased for previous buyback
» last_shares_in_issue_before_effective number false none Last shares in issue repoted prior to most recent EFFECTIVE_DATE
» last_subject_end_date string false none Last EXPIRY_DATE for previous buyback. (Rolling 1-yr periods used for open-ended programs)
» last_update_date string false none Date when last update was received for record
» latest_shares_in_issue number false none Most recent number of shares in issue reported
» monthly_report_period string false none Report effective month, based on file issuance. All monthly activity based on this period
» name string false none Company Name
» percent_differance_in_outstanding_shares number false none Percentage change of LAST_SHARES_IN_ISSUE_BEFORE_EFFECTIVE to LATEST_SHARES_IN_ISSUE
» reported_price number false none Reported Price of Transaction, denominated in Currency of Transaction
» reported_transaction_max_date string false none Latest Date of the period traded for Transaction
» reported_transaction_min_date string false none Earliest Date of the period traded for Transaction
» shares_purchased_in_mon number false none Sum of shares in Transactions where REPORTED_TRANSACTION_MAX_DATE falls within month of MONTHLY_REPORT_PERIOD
» split_adjustment_factor number false none Multiplier which can be applied to 'Amount' field to account for subsequent corporate action. This is a forward looking field, adjustment factors are added for Corporate actions after the trade
» start_date string false none Reported start of the intention period
» subject_shares_percent_announced number false none The percentage of shares in issue which are eligible for purchase for current buyback
» symbol string false none Security Ticker Symbol
» time_processed_utc string false none Time the information was entered into internal systems. Time is UTC standard
» time_released_utc string false none Time the announcement first appeared on a Regulatory News Service or other disclosure system and became available to the market. Time stated is UTC standard
» transaction_id string false none Identifier for record
» transaction_note string false none Free text which explains further details about the trade when available
» type string false none Record Type
» usd_value number false none USD value of Transactions, currency conversion rates are updated daily and values are calculated at rate prevailing on the trade date
» value_purchased_in_mon number false none Sum of value in Transactions where REPORTED_TRANSACTION_MAX_DATE falls within month of MONTHLY_REPORT_PERIOD

Short Interest Original Request

{
  "columns": [
    "business_date"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string"
}

Short Interest Original Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Effective date for the data
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Effective date for the data

Short Interest Original Response

{
  "data": [
    {
      "bbgid": "string",
      "bid_rate": 0,
      "business_date": "string",
      "crowded_score": 0,
      "dailymtmpl": 0,
      "dailynetmtmpl": 0,
      "daystocover10day": 0,
      "daystocover30day": 0,
      "daystocover90day": 0,
      "figi": "string",
      "indicativeavailability": 0,
      "isin": "string",
      "last_rate": 0,
      "name": "string",
      "offer_rate": 0,
      "s3float": 0,
      "s3sipctfloat": 0,
      "s3utilization": 0,
      "sedol": "string",
      "short_interest": 0,
      "short_momentum": 0,
      "shortinterestnotional": 0,
      "shortinterestpct": 0,
      "squeeze_risk": 0,
      "ticker": "string",
      "volume": 0
    }
  ]
}

Short Interest Original Response

Properties

Name Type Required Restrictions Description
data [object] false none short interest original responses object
» bbgid string false none Security ID - Bloomberg ID
» bid_rate number false none Market composite lending fee earned for existing shares on loan by long holders
» business_date string false none Effective date for the data
» crowded_score number false none S3's proprietary multi-factor model which ranks the short side crowdedness of a security based on its short interest, float, stock loan liquidity and trading liquidity
» dailymtmpl number false none Daily Mark to Market Profit and Loss for a stock factoring in the price change and SI
» dailynetmtmpl number false none Daily Net Mark to Market Profit and Loss for a stock factoring in price change, SI and borrow financing cost
» daystocover10day number false none It is a liquidity measure = Short Interest / 10 day average ADTV
» daystocover30day number false none It is a liquidity measure = Short Interest / 30 day average ADTV
» daystocover90day number false none It is a liquidity measure = Short Interest / 90 day average ADTV
» figi string false none Security ID - FIGI
» indicativeavailability number false none S3 projected available lendable quantity
» isin string false none Security ID - ISIN
» last_rate number false none Market composite lending fee earned for incremental shares loaned on that date (Spot Rate)
» name string false none Security Name
» offer_rate number false none Market composite financing fee paid for existing short positions
» s3float number false none The number of tradable shares including synthetic longs created by short selling.
» s3sipctfloat number false none Real-time short interest projection divided by the S3 float.
» s3utilization number false none Real-time short divided by Total Lendable supply
» sedol string false none Security ID - SEDOL
» short_interest number false none Real-time short interest expressed in shares
» short_momentum number false none The momentum indicator measures daily shorting and covering events relative to the market float
» shortinterestnotional number false none ShortInterest * Price (USD)
» shortinterestpct number false none Real-time short interest expressed as a percentage of equity float.
» squeeze_risk number false none S3's proprietary multi-factor model which ranks the potential short squeezability of a security based on its short interest, float, stock loan liquidity, trading liquidity and mark-to-market profitability
» ticker string false none Ticker Symbol
» volume number false none Its average daily trading volume.

Pac Request

{
  "columns": [
    "date_string"
  ],
  "enddate": "string",
  "id": [
    "string"
  ],
  "pageafter": 0,
  "startdate": "string"
}

Pac Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
id [string] true none Unique company ID or ["ALL_IDS"] for fetching all the companies.
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate

Pac Response

{
  "data": [
    {
      "backward_div_ratio": 0,
      "backward_split_ratio": 0,
      "cash_div_ratio": 0,
      "currency": "string",
      "cusip": "string",
      "date_string": "string",
      "forward_div_ratio": 0,
      "forward_split_ratio": 0,
      "id": "string",
      "listing_exchange": "string",
      "split_ratio": 0,
      "symbol": "string"
    }
  ]
}

Pac Response

Properties

Name Type Required Restrictions Description
data [object] false none Price Adjustment Curve responses object
» backward_div_ratio number false none Backward Dividend Ratio
» backward_split_ratio number false none Backward Split Ratio
» cash_div_ratio number false none Cash dividend Ratio
» currency string false none Currency; identifies the adjustment factor for dual listed companies
» cusip string false none Cusip Identifier
» date_string string false none Date
» forward_div_ratio number false none Forward Dividend Ratio
» forward_split_ratio number false none Forward Split Ratio
» id string false none Unique Company ID of the ticker
» listing_exchange string false none Primary listing exchange
» split_ratio number false none Split Ratio
» symbol string false none Ticker symbol

Pacexplain Request

{
  "columns": [
    "date_string"
  ],
  "enddate": "string",
  "id": [
    "string"
  ],
  "pageafter": 0,
  "startdate": "string"
}

Pacexplain Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
id [string] true none Unique company ID or ["ALL_IDS"] for fetching all the companies.
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Starting date in EST from when the data is required. For eg. startdate of 2020-09-01 will include data from 2020-09-01 to enddate

Pacexplain Response

{
  "data": [
    {
      "currency": "string",
      "date_string": "string",
      "factor": 0,
      "id": "string",
      "sources": "string",
      "symbol": "string",
      "type": "string"
    }
  ]
}

Pacexplain Response

Properties

Name Type Required Restrictions Description
data [object] false none PAC EXPLAIN responses object
» currency string false none Currency for the Dividend
» date_string string false none Date
» factor number false none Adjustment Factor calculated based on factor type
» id string false none Unique Company ID of the ticker
» sources string false none Indicates the source and value of datapoints used to calculate the adjustment factor.
» symbol string false none Ticker Symbol
» type string false none Adjustment factor type (Cash Dividend, Split)

Percent Float Request

{
  "columns": [
    "business_date"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string"
}

Percent Float Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Effective date for the data
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Effective date for the data

Percent Float Response

{
  "data": [
    {
      "business_date": "string",
      "isin": "string",
      "name": "string",
      "pct_float_15": 0,
      "pct_float_current": 0,
      "pct_float_current_vs_90": 0,
      "symbol": "string"
    }
  ]
}

Percent Float Response

Properties

Name Type Required Restrictions Description
data [object] false none Percent Float responses object
» business_date string false none Effective date for the data
» isin string false none Security ID - ISIN
» name string false none Security Name
» pct_float_15 number false none Percent float for the last 15 calendar days
» pct_float_current number false none Current day's percent float
» pct_float_current_vs_90 number false none The difference between percent float for the current day and last 90 calendar days
» symbol string false none Ticker Symbol

Quotes - 1min CA Request

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}

Quotes - 1min CA Request

Properties

Name Type Required Restrictions Description
adjusted boolean false none Boolean value to check if the response should include adjusted value
adjustedForDate string false none Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns [string] false none Select columns from the enumerated list below can be provided as an array
datestring string true none Date in EST for when the data is required. For eg. '2020-09-01'
endtime string false none Timestamp in EST till when the data is required. The minute bars format is HHMM. Example: 11:05
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
starttime string false none Starting timestamp in EST from when the data is required. The minute bars format is HHMM. Example: 11:04
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Quotes - 1min CA Response

{
  "data": [
    {
      "barstarttime": "string",
      "closeaskprice": 0,
      "closeasksize": 0,
      "closebartime": "string",
      "closebidprice": 0,
      "closebidsize": 0,
      "date_string": "string",
      "highbidprice": 0,
      "lowaskprice": 0,
      "numquotes": 0,
      "openaskprice": 0,
      "openasksize": 0,
      "openbartime": "string",
      "openbidprice": 0,
      "openbidsize": 0,
      "symbol": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Quotes - 1min CA Response

Properties

Name Type Required Restrictions Description
data [object] false none Quotes - 1min CA responses object
» barstarttime string false none Identifies timestamp at which one-minute time bin starts (UTC). The minute bars format is HHMM. Example: One minute bar 1104 is from time greater than 110400.000 to 110459.999
» closeaskprice number false none NBBO Ask Price at bar Close
» closeasksize number false none Total Size from all Exchange with Close Ask Price
» closebartime string false none Close Time of the Bar, for example one minute: 11:03:59.999
» closebidprice number false none NBBO Bid Price at bar Close
» closebidsize number false none Total Size from all Exchange with Close Bid Price
» date_string string false none Local Date
» highbidprice number false none Highest NBBO Bid Price of barPrice of Highest Trade in the associated time bin
» lowaskprice number false none Lowest NBBO Ask price of bar
» numquotes number false none Number of Quotes in associated time bin
» openaskprice number false none NBBO Ask Price as of bar Open
» openasksize number false none Total Size from all Exchange with OpenAskPrice
» openbartime string false none Open Time of the Bar, for example one minute: 11:03:00.000
» openbidprice number false none NBBO Bid Price as of bar Open
» openbidsize number false none Total Size from all Exchanges with Open Bid Price
» symbol string false none Ticker symbol of the security
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Quotes - 1min US Request

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}

Quotes - 1min US Request

Properties

Name Type Required Restrictions Description
adjusted boolean false none Boolean value to check if the response should include adjusted value
adjustedForDate string false none Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns [string] false none Select columns from the enumerated list below can be provided as an array
datestring string true none Date in EST for when the data is required. For eg. '2020-09-01'
endtime string false none Timestamp in EST till when the data is required. The minute bars format is HHMM. Example: 11:05
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
starttime string false none Starting timestamp in EST from when the data is required. The minute bars format is HHMM. Example: 11:04
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Quotes - 1min US Response

{
  "data": [
    {
      "barstarttime": "string",
      "closeaskprice": 0,
      "closebartime": "string",
      "closebidprice": 0,
      "date_string": "string",
      "highbidprice": 0,
      "lowaskprice": 0,
      "numquotes": 0,
      "openaskprice": 0,
      "openbartime": "string",
      "openbidprice": 0,
      "symbol": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Quotes - 1min US Response

Properties

Name Type Required Restrictions Description
data [object] false none Quotes - 1min US responses object
» barstarttime string false none Identifies timestamp at which one-minute time bin starts (UTC). The minute bars format is HHMM. Example: One minute bar 1104 is from time greater than 110400.000 to 110459.999
» closeaskprice number false none NBBO Ask Price at bar Close
» closebartime string false none Close Time of the Bar, for example one minute: 11:03:59.999
» closebidprice number false none NBBO Bid Price at bar Close
» date_string string false none Local Date
» highbidprice number false none Highest NBBO Bid Price of barPrice of Highest Trade in the associated time bin
» lowaskprice number false none Lowest NBBO Ask price of bar
» numquotes number false none Number of Quotes in associated time bin
» openaskprice number false none NBBO Ask Price as of bar Open
» openbartime string false none Open Time of the Bar, for example one minute: 11:03:00.000
» openbidprice number false none NBBO Bid Price as of bar Open
» symbol string false none Ticker symbol of the security
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Quotes - 1sec CA Request

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbol": "string"
}

Quotes - 1sec CA Request

Properties

Name Type Required Restrictions Description
adjusted boolean false none Boolean value to check if the response should include adjusted value
adjustedForDate string false none Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns [string] false none Select columns from the enumerated list below can be provided as an array
datestring string true none Date in EST for when the data is required. For eg. '2020-09-01'
endtime string false none Timestamp in EST till when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:03:02 and 13:03 are acceptable.
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
starttime string false none Starting timestamp in EST from when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:04:02 and 13:04 are acceptable.
symbol string true none Ticker symbol of the security. For eg. "AC" for Air Canada or "ALL_SYMBOLS" for fetching all the symbols

Quotes - 1sec CA Response

{
  "data": [
    {
      "barstarttime": "string",
      "closeaskprice": 0,
      "closeasksize": 0,
      "closebartime": "string",
      "closebidprice": 0,
      "closebidsize": 0,
      "date_string": "string",
      "highbidprice": 0,
      "lowaskprice": 0,
      "numquotes": 0,
      "openaskprice": 0,
      "openasksize": 0,
      "openbartime": "string",
      "openbidprice": 0,
      "openbidsize": 0,
      "symbol": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Quotes - 1sec CA Response

Properties

Name Type Required Restrictions Description
data [object] false none Quotes - 1sec CA responses object
» barstarttime string false none Identifies timestamp at which one-minute time bin starts (UTC). The minute bars format is HHMM. Example: One minute bar 1104 is from time greater than 110400.000 to 110459.999
» closeaskprice number false none NBBO Ask Price at bar Close
» closeasksize number false none Total Size from all Exchange with Close Ask Price
» closebartime string false none Close Time of the Bar, for example one minute: 11:03:59.999
» closebidprice number false none NBBO Bid Price at bar Close
» closebidsize number false none Total Size from all Exchange with Close Bid Price
» date_string string false none Local Date
» highbidprice number false none Highest NBBO Bid Price of barPrice of Highest Trade in the associated time bin
» lowaskprice number false none Lowest NBBO Ask price of bar
» numquotes number false none Number of Quotes in associated time bin
» openaskprice number false none NBBO Ask Price as of bar Open
» openasksize number false none Total Size from all Exchange with OpenAskPrice
» openbartime string false none Open Time of the Bar, for example one minute: 11:03:00.000
» openbidprice number false none NBBO Bid Price as of bar Open
» openbidsize number false none Total Size from all Exchanges with Open Bid Price
» symbol string false none Ticker symbol of the security
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Quotes - 1sec US Request

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}

Quotes - 1sec US Request

Properties

Name Type Required Restrictions Description
adjusted boolean false none Boolean value to check if the response should include adjusted value
adjustedForDate string false none Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns [string] false none Select columns from the enumerated list below can be provided as an array
datestring string true none Date in EST for when the data is required. For eg. '2020-09-01'
endtime string false none Timestamp in EST till when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:03:02 and 13:03 are acceptable.
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
starttime string false none Starting timestamp in EST from when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:04:02 and 13:04 are acceptable.
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Quotes - 1sec US Response

{
  "data": [
    {
      "barstarttime": "string",
      "closeaskprice": 0,
      "closebartime": "string",
      "closebidprice": 0,
      "date_string": "string",
      "highbidprice": 0,
      "lowaskprice": 0,
      "numquotes": 0,
      "openaskprice": 0,
      "openbartime": "string",
      "openbidprice": 0,
      "symbol": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Quotes - 1sec US Response

Properties

Name Type Required Restrictions Description
data [object] false none Quotes - 1sec US responses object
» barstarttime string false none Identifies timestamp at which one-minute time bin starts (UTC). The minute bars format is HHMM. Example: One minute bar 1104 is from time greater than 110400.000 to 110459.999
» closeaskprice number false none NBBO Ask Price at bar Close
» closebartime string false none Close Time of the Bar, for example one minute: 11:03:59.999
» closebidprice number false none NBBO Bid Price at bar Close
» date_string string false none Local Date
» highbidprice number false none Highest NBBO Bid Price of barPrice of Highest Trade in the associated time bin
» lowaskprice number false none Lowest NBBO Ask price of bar
» numquotes number false none Number of Quotes in associated time bin
» openaskprice number false none NBBO Ask Price as of bar Open
» openbartime string false none Open Time of the Bar, for example one minute: 11:03:00.000
» openbidprice number false none NBBO Bid Price as of bar Open
» symbol string false none Ticker symbol of the security
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

RefreshToken

{
  "refreshToken": "string"
}

RefreshToken

Properties

Name Type Required Restrictions Description
refreshToken string true none refresh Token received during authentication request

Revoke Token Request

{
  "token": "string",
  "type": "string"
}

Revoke Token Request

Properties

Name Type Required Restrictions Description
token string true none access_token or refresh_token value that needs to be revoked
type string true none access_token or refresh_token

Short Interest Smoothened Request

{
  "columns": [
    "business_date"
  ],
  "enddate": "string",
  "pageafter": 0,
  "startdate": "string"
}

Short Interest Smoothened Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Effective date for the data
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Effective date for the data

Short Interest Smoothened Response

{
  "data": [
    {
      "bbgid": "string",
      "bid_rate": 0,
      "business_date": "string",
      "crowded_score": 0,
      "dailymtmpl": 0,
      "dailynetmtmpl": 0,
      "daystocover10day": 0,
      "daystocover30day": 0,
      "daystocover90day": 0,
      "figi": "string",
      "indicativeavailability": 0,
      "isin": "string",
      "last_rate": 0,
      "name": "string",
      "offer_rate": 0,
      "s3float": 0,
      "s3sipctfloat": 0,
      "s3utilization": 0,
      "sedol": "string",
      "short_interest": 0,
      "short_momentum": 0,
      "shortinterestnotional": 0,
      "shortinterestpct": 0,
      "squeeze_risk": 0,
      "ticker": "string",
      "volume": 0
    }
  ]
}

Short Interest Smoothened Response

Properties

Name Type Required Restrictions Description
data [object] false none short interest smoothened responses object
» bbgid string false none Security ID - Bloomberg ID
» bid_rate number false none Market composite lending fee earned for existing shares on loan by long holders
» business_date string false none Effective date for the data
» crowded_score number false none S3's proprietary multi-factor model which ranks the short side crowdedness of a security based on its short interest, float, stock loan liquidity and trading liquidity
» dailymtmpl number false none Daily Mark to Market Profit and Loss for a stock factoring in the price change and SI
» dailynetmtmpl number false none Daily Net Mark to Market Profit and Loss for a stock factoring in price change, SI and borrow financing cost
» daystocover10day number false none It is a liquidity measure = Short Interest / 10 day average ADTV
» daystocover30day number false none It is a liquidity measure = Short Interest / 30 day average ADTV
» daystocover90day number false none It is a liquidity measure = Short Interest / 90 day average ADTV
» figi string false none Security ID - FIGI
» indicativeavailability number false none S3 projected available lendable quantity
» isin string false none Security ID - ISIN
» last_rate number false none Market composite lending fee earned for incremental shares loaned on that date (Spot Rate)
» name string false none Security Name
» offer_rate number false none Market composite financing fee paid for existing short positions
» s3float number false none The number of tradable shares including synthetic longs created by short selling.
» s3sipctfloat number false none Real-time short interest projection divided by the S3 float.
» s3utilization number false none Real-time short divided by Total Lendable supply
» sedol string false none Security ID - SEDOL
» short_interest number false none Real-time short interest expressed in shares
» short_momentum number false none The momentum indicator measures daily shorting and covering events relative to the market float
» shortinterestnotional number false none ShortInterest * Price (USD)
» shortinterestpct number false none Real-time short interest expressed as a percentage of equity float.
» squeeze_risk number false none S3's proprietary multi-factor model which ranks the potential short squeezability of a security based on its short interest, float, stock loan liquidity, trading liquidity and mark-to-market profitability
» ticker string false none Ticker Symbol
» volume number false none Its average daily trading volume.

TAQ NBBO CA Request

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "symbol"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbol": "string"
}

TAQ NBBO CA Request

Properties

Name Type Required Restrictions Description
adjusted boolean false none Boolean value to check if the response should include adjusted value
adjustedForDate string false none Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns [string] false none Select columns from the enumerated list below can be provided as an array
datestring string true none Date in EST for when the data is required. For eg. '2020-09-01'
endtime string false none Timestamp in EST till when the data is required. Format includes hours, minutes, seconds and milliseconds in the following format: ‘HH:MI:SS.Milliseconds'. For eg. 15:31:10.423
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
starttime string false none Starting timestamp in EST from when the data is required. Format includes hours, minutes, seconds and milliseconds in the following format: ‘HH:MI:SS.Milliseconds'. For eg. 15:30:10.423
symbol string true none Ticker symbol of the security. For eg. "AC" for Air Canada or "ALL_SYMBOLS" for fetching all the symbols

TAQ NBBO CA Response

{
  "data": [
    {
      "bestask": 0,
      "bestbid": 0,
      "buy_broker": 0,
      "date_string": "string",
      "listing_exchange": "string",
      "record_type": 0,
      "sell_broker": 0,
      "symbol": "string",
      "totalasksize": 0,
      "totalbidsize": 0,
      "trade_condition": "string",
      "trade_id": "string",
      "trade_localseq": 0,
      "trade_price": "string",
      "trade_size": 0,
      "trade_time": "string",
      "trade_venue": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

TAQ NBBO CA Response

Properties

Name Type Required Restrictions Description
data [object] false none TAQ NBBO CA responses object
» bestask number false none National Best Ask
» bestbid number false none National Best Bid
» buy_broker integer false none Identifies the broker on the buy side of the transaction
» date_string string false none Local date
» listing_exchange string false none Identifies the exchange on which the security has been listed
» record_type integer false none Record type indicator:(1 = Trade,2 = Tick,3 = BBO_Quote,4 = Trade Correction,5 = Trade Cancel,6 = Trade non Regular)
» sell_broker integer false none Identifies the broker on the sell side of the transaction
» symbol string false none Ticker symbol of the security
» totalasksize integer false none Total available national best ask volume from all venues
» totalbidsize integer false none Total available national best bid volume from all venues
» trade_condition string false none (0 - Exchange Not Eligible To Set Last Price (from Sep-2019),A- Conditionals Book Trade,B - Delayed Delivery Trade,C - Contingent Cross,D - Cash Today Trade,E - Non Board Lot Trade,F - Cash Trade,G - VWAP Cross,H - Contra Midpoint Only Trade (from 2018-06-04),I - Derivative-Related Cross,J - Regular Cross,K - Sets the Last Price ,L - Next Day Trade,M - Derivatives-Related Contingent Equity Trade,N - Future Trade,O - Basis Cross,P - Intentional Cross,Q - MOC Trade,R - Non-Resident,S - Special Trading Session Cross,T - Bulk Auction,V - National Cross,W - By-Pass Trade,X - Internal Cross,Y - Non Net Trade,Z - Dark Trade,) All trades that update the last price will contain trade condition
» trade_id string false none Unique trade id
» trade_localseq integer false none Used to sort trades on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
» trade_price string false none Identifies the price of the trade
» trade_size integer false none Identifies the size of the trade
» trade_time string false none Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds.
» trade_venue string false none Identifies the venue where the trade occurred
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

TAQ NBBO US Request

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "symbol"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}

TAQ NBBO US Request

Properties

Name Type Required Restrictions Description
adjusted boolean false none Boolean value to check if the response should include adjusted value
adjustedForDate string false none Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns [string] false none Select columns from the enumerated list below can be provided as an array
datestring string true none Date in EST for when the data is required. For eg. '2020-09-01'
endtime string false none Timestamp in EST till when the data is required. Format includes hours, minutes, seconds and milliseconds in the following format: ‘HH:MI:SS.Milliseconds'. For eg. 15:31:10.423
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
starttime string false none Starting timestamp in EST from when the data is required. Format includes hours, minutes, seconds and milliseconds in the following format: ‘HH:MI:SS.Milliseconds'. For eg. 15:30:10.423
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

TAQ NBBO US Response

{
  "data": [
    {
      "best_ask": 0,
      "best_bid": 0,
      "date_string": "string",
      "record_type": 0,
      "symbol": "string",
      "time_nanos": 0,
      "total_ask_size": 0,
      "total_bid_size": 0,
      "trade_condition": "string",
      "trade_id": "string",
      "trade_localseq": 0,
      "trade_price": "string",
      "trade_size": 0,
      "trade_time": "string",
      "trade_venue": "string",
      "tradeunix": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

TAQ NBBO US Response

Properties

Name Type Required Restrictions Description
data [object] false none TAQ NBBO US responses object
» best_ask number false none National Best Ask
» best_bid number false none National Best Bid
» date_string string false none Local date
» record_type integer false none Record type indicator:(1 = Trade,2 = Tick,3 = BBO_Quote,4 = Trade Correction,5 = Trade Cancel,6 = Trade non Regular)
» symbol string false none Ticker symbol of the security
» time_nanos number false none Identifies the nanosecond precision (nanosecond only) of the applicable timestamp
» total_ask_size integer false none Total available national best ask volume from all venues
» total_bid_size integer false none Total available national best bid volume from all venues
» trade_condition string false none (0 - Exchange Not Eligible To Set Last Price (from Sep-2019),A- Conditionals Book Trade,B - Delayed Delivery Trade,C - Contingent Cross,D - Cash Today Trade,E - Non Board Lot Trade,F - Cash Trade,G - VWAP Cross,H - Contra Midpoint Only Trade (from 2018-06-04),I - Derivative-Related Cross,J - Regular Cross,K - Sets the Last Price ,L - Next Day Trade,M - Derivatives-Related Contingent Equity Trade,N - Future Trade,O - Basis Cross,P - Intentional Cross,Q - MOC Trade,R - Non-Resident,S - Special Trading Session Cross,T - Bulk Auction,V - National Cross,W - By-Pass Trade,X - Internal Cross,Y - Non Net Trade,Z - Dark Trade,) All trades that update the last price will contain trade condition
» trade_id string false none Unique trade id
» trade_localseq integer false none Used to sort trades on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
» trade_price string false none Identifies the price of the trade
» trade_size integer false none Identifies the size of the trade
» trade_time string false none Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds.
» trade_venue string false none Identifies the venue where the trade occurred
» tradeunix number false none Identifies the trade time in UNIX timestamp
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Trade - 1min CA Request

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}

Trade - 1min CA Request

Properties

Name Type Required Restrictions Description
adjusted boolean false none Boolean value to check if the response should include adjusted value
adjustedForDate string false none Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns [string] false none Select columns from the enumerated list below can be provided as an array
datestring string true none Date in EST for when the data is required. For eg. '2020-09-01'
endtime string false none Timestamp in EST till when the data is required. The minute bars format is HHMM. Example: 11:05
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
starttime string false none Starting timestamp in EST from when the data is required. The minute bars format is HHMM. Example: 11:04
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Trade - 1min CA Response

{
  "data": [
    {
      "barstarttime": "string",
      "date_string": "string",
      "firsttradeprice": 0,
      "highbidprice": 0,
      "lasttradeprice": "string",
      "lowtradeprice": 0,
      "numtrades": 0,
      "numtradesexblock": 0,
      "numtradesexint": 0,
      "symbol": "string",
      "value": 0,
      "valueexblock": 0,
      "valueexint": 0,
      "volume": 0,
      "volumeexblock": 0,
      "volumeexint": 0,
      "vwap": 0,
      "vwapexblock": 0,
      "vwapexint": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Trade - 1min CA Response

Properties

Name Type Required Restrictions Description
data [object] false none Trade - 1min CA responses object
» barstarttime string false none Identifies timestamp at which one-minute time bin starts (UTC). The minute bars format is HHMM. Example: One minute bar 1104 is from time greater than 110400.000 to 110459.999
» date_string string false none Local Date
» firsttradeprice number false none Price of First Trade in the associated time bin
» highbidprice number false none Price of Highest Trade in the associated time bin
» lasttradeprice string false none Price of Last Trade in the associated time bin
» lowtradeprice number false none Price of Lowest Trade in the associated time bin
» numtrades number false none Total number of trades
» numtradesexblock number false none Total number of trades excluding blocks. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» numtradesexint number false none Total number of trades excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross.
» symbol string false none Ticker Symbol of the security
» value number false none Total Size from all Exchange with Close Bid Price
» valueexblock number false none Total number of shares traded excluding blocks. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» valueexint number false none Total value traded excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross.
» volume number false none Total number of shares traded
» volumeexblock number false none NBBO Bid Price at bar Close
» volumeexint number false none Total number of shares traded excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross.
» vwap number false none Trade Volume weighted average price. Sum((Trade1Shares*Price)+(Trade2Shar es*Price)+…) /TotalShares.
» vwapexblock number false none Trade Volume weighted average price excluding blocks. Sum((Trade1Shares*Price)+(Trade2Shar es*Price)+…) /TotalShares. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» vwapexint number false none Trade Volume weighted average price excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross. Sum((Trade1Shares*Price)+(Trade2Shar es*Price)+…) /TotalShares.
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Trade - 1min US Request

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "symbol"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}

Trade - 1min US Request

Properties

Name Type Required Restrictions Description
adjusted boolean false none Boolean value to check if the response should include adjusted value
adjustedForDate string false none Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns [string] false none Select columns from the enumerated list below can be provided as an array
datestring string true none Date in EST for when the data is required. For eg. '2020-09-01'
endtime string false none Timestamp in EST till when the data is required. The minute bars format is HHMM. Example: 11:05
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
starttime string false none Starting timestamp in EST from when the data is required. The minute bars format is HHMM. Example: 11:04
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Trade - 1min US Response

{
  "data": [
    {
      "bin_end": "string",
      "bin_start": "string",
      "close": 0,
      "date_string": "string",
      "high": "string",
      "low": 0,
      "open": 0,
      "symbol": "string",
      "volume": 0,
      "volume_ex_block": 0,
      "vwap": 0,
      "vwap_ex_block": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Trade - 1min US Response

Properties

Name Type Required Restrictions Description
data [object] false none Trade - 1min US) responses object
» bin_end string false none Identifies timestamp at which one-minute time bin ends (UTC)
» bin_start string false none Identifies timestamp at which one-minute time bin starts (UTC)
» close number false none Price of Last Trade in the associated time bin
» date_string string false none Local Date
» high string false none Price of Highest Trade in the associated time bin
» low number false none Price of Lowest Trade in the associated time bin
» open number false none Price of First Trade in the associated time bin
» symbol string false none Ticker symbol of the security
» volume number false none Total number of shares traded in the associated time bin
» volume_ex_block number false none Total number of shares traded in the associated time bin excluding block trades defined as trades where (traded value > $500,000) OR (traded volume > 10,000 shares AND traded value > $100,000 )
» vwap number false none Trade Volume weighted average price Sum((Trade1Shares*Price)+(Trade2Shares*Price)+…) /TotalShares.
» vwap_ex_block number false none Trade Volume weighted average price Sum((Trade1Shares*Price)+(Trade2Shares*Price)+…) /TotalShares excluding block trades defined as trades where (traded value > $500,000) OR (traded volume > 10,000 shares AND traded value > $100,000 )
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Trade - 1sec CA Request

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "barstarttime"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbol": "string"
}

Trade - 1sec CA Request

Properties

Name Type Required Restrictions Description
adjusted boolean false none Boolean value to check if the response should include adjusted value
adjustedForDate string false none Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns [string] false none Select columns from the enumerated list below can be provided as an array
datestring string true none Date in EST for when the data is required. For eg. '2020-09-01'
endtime string false none Timestamp in EST till when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:03:02 and 13:03 are acceptable.
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
starttime string false none Starting timestamp in EST from when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:04:02 and 13:04 are acceptable.
symbol string true none Ticker symbol of the security. For eg. "AC" for Air Canada or "ALL_SYMBOLS" for fetching all the symbols

Trade - 1sec CA Response

{
  "data": [
    {
      "barstarttime": "string",
      "date_string": "string",
      "firsttradeprice": 0,
      "hightradeprice": 0,
      "lasttradeprice": 0,
      "lowtradeprice": 0,
      "numtrades": 0,
      "numtradesexblock": 0,
      "numtradesexint": 0,
      "symbol": "string",
      "value": 0,
      "valueexblock": 0,
      "valueexint": 0,
      "volume": 0,
      "volumeexblock": 0,
      "volumeexint": 0,
      "vwap": 0,
      "vwapexblock": 0,
      "vwapexint": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Trade - 1sec CA Response

Properties

Name Type Required Restrictions Description
data [object] false none Trade - 1sec CA responses object
» barstarttime string false none Identifies timestamp at which one-second time bin starts (EST). For second bars is HHMMSS. Example: One second bar 130302 is from time greater than 130302.000 to 130302.999. The second level granularity is optional. Time can be entered in minutes as well, for example 09:30
» date_string string false none Local Date
» firsttradeprice number false none Price of First Trade in the associated time bin
» hightradeprice number false none Price of Highest Trade in the associated time bin
» lasttradeprice number false none Price of Last Trade in the associated time bin
» lowtradeprice number false none Price of Lowest Trade in the associated time bin
» numtrades number false none Total number of trades
» numtradesexblock number false none Total number of trades excluding blocks. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» numtradesexint number false none Total number of trades excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross
» symbol string false none Ticker Symbol of the security
» value number false none Total value traded
» valueexblock number false none Total value traded excluding blocks. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» valueexint number false none Total value traded excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross
» volume number false none Total number of shares traded
» volumeexblock number false none Total number of shares traded excluding blocks. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» volumeexint number false none Total number of shares traded excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross
» vwap number false none Trade Volume weighted average price - Sum((Trade1Shares*Price)+(Trade2Shar es*Price)+…) /TotalShares
» vwapexblock number false none Trade Volume weighted average price excluding blocks - Sum((Trade1Shares*Price)+(Trade2Shar es*Price)+…) /TotalShares. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» vwapexint number false none Trade Volume weighted average price excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross - Sum((Trade1Shares*Price)+(Trade2Shar es*Price)+…) /TotalShares
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Trade - 1sec US Request

{
  "adjusted": true,
  "adjustedForDate": "string",
  "columns": [
    "symbol"
  ],
  "datestring": "string",
  "endtime": "string",
  "pageafter": 0,
  "starttime": "string",
  "symbols": [
    "string"
  ]
}

Trade - 1sec US Request

Properties

Name Type Required Restrictions Description
adjusted boolean false none Boolean value to check if the response should include adjusted value
adjustedForDate string false none Date in EST for when the split data will be adjusted for. For eg. '2020-09-01'. In case this date is not provided, data is adjusted as of the current date
columns [string] false none Select columns from the enumerated list below can be provided as an array
datestring string true none Date in EST for when the data is required. For eg. '2020-09-01'
endtime string false none Timestamp in EST till when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:03:02 and 13:03 are acceptable.
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
starttime string false none Starting timestamp in EST from when the data is required. For second bars the format is HHMMSS with seconds part being optional. For example, both the values 13:04:02 and 13:04 are acceptable.
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

Trade - 1sec US Response

{
  "data": [
    {
      "bin_end": "string",
      "bin_start": "string",
      "close": 0,
      "date_string": "string",
      "high": "string",
      "low": 0,
      "open": 0,
      "symbol": "string",
      "volume": 0,
      "volume_ex_block": 0,
      "vwap": 0,
      "vwap_ex_block": 0
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

Trade - 1sec US Response

Properties

Name Type Required Restrictions Description
data [object] false none Trade - 1sec US) responses object
» bin_end string false none Identifies timestamp at which one-minute time bin ends (UTC)
» bin_start string false none Identifies timestamp at which one-minute time bin starts (UTC)
» close number false none Price of Last Trade in the associated time bin
» date_string string false none Local Date
» high string false none Price of Highest Trade in the associated time bin
» low number false none Price of Lowest Trade in the associated time bin
» open number false none Price of First Trade in the associated time bin
» symbol string false none Ticker symbol of the security
» volume number false none Total number of shares traded in the associated time bin
» volume_ex_block number false none Total number of shares traded in the associated time bin excluding block trades defined as trades where (traded value > $500,000) OR (traded volume > 10,000 shares AND traded value > $100,000 )
» vwap number false none Trade Volume weighted average price Sum((Trade1Shares*Price)+(Trade2Shares*Price)+…) /TotalShares.
» vwap_ex_block number false none Trade Volume weighted average price Sum((Trade1Shares*Price)+(Trade2Shares*Price)+…) /TotalShares excluding block trades defined as trades where (traded value > $500,000) OR (traded volume > 10,000 shares AND traded value > $100,000 )
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

TSX Daily Stats CA Request

{
  "columns": [
    "exchange"
  ],
  "enddate": "string",
  "exchange": "string",
  "pageafter": 0,
  "startdate": "string",
  "stat": "string",
  "symbols": [
    "string"
  ]
}

TSX Daily Stats CA Request

Properties

Name Type Required Restrictions Description
columns [string] false none Select columns from the enumerated list below can be provided as an array
enddate string true none Date in EST till when the data is required. For eg. end date of 2020-09-31 will include data from startdate to 2020-09-31
exchange string false none Identifies the venue for the applicable statistics
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
startdate string true none Starting date in EST from when the data is required. For eg. start date of 2020-09-01 will include data from 2020-09-01 to enddate
stat string true none Identifies the various statistics that can be obtained. Possible values are available in Reference Guide for stat for TSX Daily Stats CA
symbols [string] true none Ticker symbol of the security. For eg. ["AC"] for Air Canada or ["AC", "TD"] for Air Canada and TD or ["ALL_SYMBOLS"] for fetching all the symbols

TSX Daily Stats CA Response

{
  "data": [
    {
      "date_string": "string",
      "exchange": "string",
      "key_value": "string",
      "stat": "string",
      "time": "string",
      "time_nanos": 0,
      "value": "string",
      "value2": "string",
      "value3": "string",
      "value4_to_n": [
        "string"
      ],
      "year": "string"
    }
  ],
  "pageafter": 0,
  "pagebefore": 0
}

TSX Daily Stats CA Response

Properties

Name Type Required Restrictions Description
data [object] false none TSX Daily Stats responses object
» date_string string false none Identifies the local date of the record
» exchange string false none Identifies the venue for the applicable statistics
» key_value string false none Identifies the ticker symbol of the security for example, 'AC' for Air Canada
» stat string false none Identifies the various statistics that can be obtained. Possible values are available in Reference Guide for stat for TSX Daily Stats CA
» time string false none Identifies the timestamp for the applicable stat in terms of date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds.
» time_nanos number false none Identifies the nanosecond precision (nanosecond only) of the applicable timestamp
» value string false none Identifies the value of the relevant stat. More details can be found in the Reference Guide for Stat section along with TSX API Details
» value2 string false none Identifies the secondary value of the relevant stat where applicable. More details can be found in the Reference Guide for Stat section along with TSX API Details
» value3 string false none Identifies the tertiary value of the relevant stat where applicable. More details can be found in the Reference Guide for Stat section along with TSX API Details
» value4_to_n [string] false none Identifies the MOC imbalance metrics 'PairedVolume','MarketOrderImbalanceVolume','MarketOrderImbalanceSide','NearIndicativeClosingPrice','FarIndicativeClosingPrice','PriceVariation' for the stat 'moc' in an array format
» year string false none Identifies the year of the record
pageafter integer false none Resultset is paginated - mention record offset if data is needed after a specific record
pagebefore integer false none Resultset is paginated - mention record offset if data is needed before a specific record

Errors

TMX Analytics uses HTTP response codes to indicate the success or failure of an API request.

Relevant API Error Code Message
Change Password 200 Information: Password changed successfully
All APIs 200 Success
All APIs 400 Input Error: starttime is after endtime
All APIs 400 Input Error: startdate is after enddate
All APIs 400 Input Error: newpassword and confirmpassword do not match
All APIs 400 Input Error: Data is available on T-1 basis. datestring should be before today
All APIs 400 Input Error: Invalid request parameters
Authenticate 401 Authentication Error: User credentials are incorrect
Authenticate 401 Authentication Error: Password is incorrect
All APIs 403 Authorization Error: User does not have access to any group
All APIs 403 Authorization Error: User does not have access to the requested group
All APIs 403 Limit Exceeded: symbol entered is not on the list of permitted symbols.
All APIs 403 Limit Exceeded: datestring cannot be prior to 30 days from the subscription date
All APIs 403 Limit Exceeded: datestring cannot be prior to the permitted 'lookback days' as per the subscription
All APIs 403 Limit Exceeded: Difference between startdate and enddate cannot be more than the permitted 'lookback days' as per the subscription
All APIs 403 Limit Exceeded: Monthly request limit has been exceeded. Please try again next month
All APIs 403 Limit Exceeded: Daily request limit has been exceeded. Please try again tomorrow
All APIs 403 Limit Exceeded: Call limit has been exceeded. Please try again next month
All APIs 403 Invalid API Key
Change Password 500 System Error: Error occured while changing password. Please try again
All APIs 500 System Error / AWS Authorization Token is invalid

Support

The Help widget at the bottom right page can be used to raise concerns or report any issues with the APIs. Issues can also be reported via email to TMX Support .

Introduction

TMX Grapevine provides high resolution analytics-ready data sets and leverages Amazon Web Services (AWS) cloud technology to deliver an out-of-the-box managed computing environment that enables advanced analytics capabilities. It seamlessly integrates data sets from multiple sources, both TMX proprietary data as well as all other Canadian markets, with the latest machine learning libraries, statistical modules, and various big data tools such as Spark and Presto into a single user-friendly ecosystem. This guide is meant to help familiarize you with the platform’s various capabilities.

TMX Grapevine is the core product of TMX Global Analytics that provides programmatic access to our underlying Global Data Lake in a manner that provides maximum flexibility for various use cases including but not limited to: querying or aggregating data, building trading algorithms, backtesting a strategy, applying machine learning models against our data or building custom reporting and looking to integrate those analytics back into your own systems. TMX Grapevine is designed for users with technical proficiency in SQL or Python.

At a high level, each client is provided with a TMX Grapevine Cluster consisting of multiple nodes (5 by default) on their own secure Virtual Private Cloud (VPC). This cluster is provisioned to access the TMX Grapevine Global Data Lake as well as their own S3 private storage (250GB by default).

Canada (Equities) - Core

Trade

Contains all trades across all Canadian venues

Specifications

Particular Value
Grapevine Table Name trades
Data Available Since 6/30/2016
Field name Data Type Description
Time Timestamp Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds.
Symbol String Identifies the Ticker symbol of the security
Listing Exchange String Identifies the exchange on which the transaction occurred
Trade Size Bigint Identifies the size of the trade
Price Decimal (28, 5) Identifies the price of the trade
Venue String Identifies the venue where the trade occurred
Buy Broker Integer Identifies the broker on the buy side of the transaction
Sell Broker Integer Identifies the broker on the sell side of the transaction
Record Type Integer Record type indicator:
1 = Trade
2 = Tick
3 = BBO_Quote
4 = Trade Correction
5 = Trade Cancel
6 = Trade non Regular"""
Vendor Time Timestamp Time vendor observed the record (UTC)
Trade Count Bigint Identifies the cumulative count of the trade from the start of the day
Cumulative Price Decimal (28, 5) Running vwap from start of day
Cumulative Value Decimal (28, 5) Total value traded from start of day
Cumulative Trade Size Bigint Total volume traded from start of day
Trade ID String Unique trade id
Localseq Integer Used to sort orders on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
Trade Condition String The trade condition field consists of 0 to 4 ASCII characters:
0 - Exchange Not Eligible To Set Last Price (from Sep-2019)
A - Conditionals Book Trade
B - Delayed Delivery Trade
C - Contingent Cross
D - Cash Today Trade
E - Non Board Lot Trade
F - Cash Trade
G - VWAP Cross
H - Contra Midpoint Only Trade (from 2018-06-04)
I - Derivative-Related Cross
J - Regular Cross
K - Sets the Last Price *
L - Next Day Trade
M - Derivatives-Related Contingent Equity Trade
N - Future Trade
O - Basis Cross
P - Intentional Cross
Q - MOC Trade
R - Non-Resident
S - Special Trading Session Cross
T - Bulk Auction
V - National Cross
W - By-Pass Trade
X - Internal Cross
Y - Non Net Trade
Z - Dark Trade
* All trades that update the last price will contain trade condition K.
Date String String Identifies the local date of the trade

Orderbook TSX

Contains all messages that update the orderbook across TSX/TSXV/Alpha

Specifications

Particular Value
Grapevine Table Name orderbook_tsx
Data Available Since 1/3/2017
Column Type Description
time timestamp Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds. (UTC)
time_nanos bigint Identifies timing of orders with precision in nanoseconds
book varchar Identifies whether the order was a Boardlot or an Oddlot
symbol varchar Identifies the Ticker symbol of the security
venue varchar Identifies the venue where the order was placed
broker_id varchar Identifies the ID number of the broker who initiated the order
side varchar Identifies the action of the order (buy or sell)
book_change integer Identifies the net change in the book as a result of the order
price decimal(28,5) Identifies the price of the order
order_id varchar Identifies the order identification sequence of the order
seq bigint Identifies the sequence in which orders are received.
localseq bigint Used to sort orders on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
reason varchar "Possible values are:
1) New Order
2) Cancelled
3) Filled
4) Partial Fill
5) Pre-open
6) Changed"
date_string varchar Identifies the local date on which the order was placed

Orderbook CAD

Contains all messages that update the orderbook across all venues

Specifications

Particular Value
Grapevine Table Name orderbook_cad
Data Available Since 6/22/2016
Field name Data Type Description
Time Timestamp Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds.
Time Nanos Bigint Identifies timing of orders with precision in nanoseconds
Book String Identifies whether the order was a Board lot or an Odd lot
Symbol String Identifies the Ticker symbol of the security
Venue String Identifies the venue where the order was placed
Broker ID String Identifies the ID number of the broker who initiated the order
Side String Identifies the action of the order (buy or sell)
Book Change Int Identifies the net change in the book as a result of the order
Price Decimal(28,5) Identifies the price of the order
Order ID String Identifies the order identification sequence of the order
Seq Bigint Identifies the sequence in which orders are received.
Local seq Bigint Used to sort orders on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
Reason String Affects the BOOK_CHANGE column
Date String String Identifies the local date on which the order was placed

Venue BBO

Specifications

Particular Value
Grapevine Table Name venue_bbo

Contains top of book (level 1) quotes from each Canadian visible venue. This differs from cbbo since a venue’s top of book quotes may be inferior to the consolidated best bid/offer.

Field name Data Type Description
Time Timestamp Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds.
Symbol Varchar(10) Identifies the Ticker symbol of the security
Venue Varchar(10) Identifies the exchange on which the transaction occurred
Bid Price Decimal(28,5) Identifies the price of the bid
Bid Size Bigint Identifies the size of the bid
Ask Price Decimal(28,5) Identifies the price of the ask
Ask Size Bigint Identifies the size of the ask
Vendor time Timestamp Time vendor observed the record (UTC)
Local Seq Bigint Used to sort orders on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
Date String String Identifies the local date on which the order was placed

CBBO

Contains consolidated best quote updates from all visible venues

Specifications

Particular Value
Grapevine Table Name cbbo
Field name Data Type Description
Time Timestamp Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds.
Symbol Varchar(10) Identifies the Ticker symbol of the security
Bid Venue Varchar(10) Identifies the venue where the quote was placed
Bid Price Decimal(28,5) Identifies the price of the bid
Bid Size Varchar(10) Identifies the size of the bid
Ask Venue Varchar(10) Identifies the venue where the ask quote was placed
Ask Price Decimal(28,5) Identifies the price of the ask
Ask Size Bigint Identifies the size of the ask
Vendortime Timestamp Time vendor observed the record (UTC)
Localseq Bigint Used to sort orders on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
Date String String Identifies the local date on which the quote was placed

TAQ Venue BBO

Contains Canadian trades and each visible venue's top of book quotes prevailing at the time of the trade in one data set

Specifications

Particular Value
Grapevine Table Name taq_venue_bbo
Data Available Since 6/30/2016
Field name Data Type Description
Symbol Varchar(10) Identifies the Ticker symbol of the security
Trade Time Timestamp Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds.
Trade Local seq Boolean Used to sort trades on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
Venue Varchar(10) Identifies the venue where the message was placed
Record_type Int Record type indicator:
1 = Trade
2 = Tick
3 = BBO_Quote
4 = Trade Correction
5 = Trade Cancel
6 = Trade non Regular"""
Bid Size Bigint Identifies the size of the bid
Bid Price Decimal(28,5) Identifies the price of the bid
Ask Size Bigint Identifies the size of the ask
Ask Price Decimal(28,5) Identifies the price of the ask
Listing Exchange Varchar(10) Identifies the exchange on which the security has been listed
Trade Size Bigint Identifies the size of the trade
Trade Price Decimal(28,5) Identifies the price of the trade
Buy Broker Int Identifies the broker on the buy side of the transaction
Sell Broker Int Identifies the broker on the sell side of the transaction
Trade ID Varchar(50) Unique trade id
Trade Condition String The trade condition field consists of 0 to 4 ASCII characters:
0 - Exchange Not Eligible To Set Last Price (from Sep-2019)
A - Conditionals Book Trade
B - Delayed Delivery Trade
C - Contingent Cross
D - Cash Today Trade
E - Non Board Lot Trade
F - Cash Trade
G - VWAP Cross
H - Contra Midpoint Only Trade (from 2018-06-04)
I - Derivative-Related Cross
J - Regular Cross
K - Sets the Last Price *
L - Next Day Trade
M - Derivatives-Related Contingent Equity Trade
N - Future Trade
O - Basis Cross
P - Intentional Cross
Q - MOC Trade
R - Non-Resident
S - Special Trading Session Cross
T - Bulk Auction
V - National Cross
W - By-Pass Trade
X - Internal Cross
Y - Non Net Trade
Z - Dark Trade
* All trades that update the last price will contain trade condition K.
Date String String Identifies the local date on which the order was placed

Broker Metadata

Enlists brokers and their associated broker ID

Specifications

Particular Value
Grapevine Table Name broker_metadata
Column Type Description
broker_id integer Broker ID
name varchar Name of associated broker

Canada (Equities) - Analytical

One-minute Bars for Trades

Canadian trades data from all marketplaces aggregated in one minute bars with metrics such as open, high, low, close, vwap, number of trades excluding blocks etc. for each one minute bar

Specifications

Particular Value
Grapevine Table Name trade_bar_1min
Data Available Since 1/2/2018
Name Type Required Restrictions Description
» barstarttime string false none Identifies timestamp at which one-minute time bin starts (UTC). The minute bars format is HHMM. Example: One minute bar 1104 is from time greater than 110400.000 to 110459.999
» date_string string false none Local Date
» firsttradeprice number false none Price of First Trade in the associated time bin
» highbidprice number false none Price of Highest Trade in the associated time bin
» lasttradeprice string false none Price of Last Trade in the associated time bin
» lowtradeprice number false none Price of Lowest Trade in the associated time bin
» numtrades number false none Total number of trades
» numtradesexblock number false none Total number of trades excluding blocks. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» numtradesexint number false none Total number of trades excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross.
» symbol string false none Ticker Symbol of the security
» value number false none Total Size from all Exchange with Close Bid Price
» valueexblock number false none Total number of shares traded excluding blocks. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» valueexint number false none Total value traded excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross.
» volume number false none Total number of shares traded
» volumeexblock number false none NBBO Bid Price at bar Close
» volumeexint number false none Total number of shares traded excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross.
» vwap number false none Trade Volume weighted average price. Sum((Trade1Shares*Price)+(Trade2Shar es*Price)+…) /TotalShares.
» vwapexblock number false none Trade Volume weighted average price excluding blocks. Sum((Trade1Shares*Price)+(Trade2Shar es*Price)+…) /TotalShares. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» vwapexint number false none Trade Volume weighted average price excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross. Sum((Trade1Shares*Price)+(Trade2Shar es*Price)+…) /TotalShares.

One-minute Bars for Quotes

Canadian quotes data from all marketplaces aggregated in one minute bars with metrics such as open, high, low, close, number of quotes etc. for each one minute bar

Specifications

Particular Value
Grapevine Table Name quote_bar_1min
Data Available Since 1/2/2018
Name Type Required Restrictions Description
» barstarttime string false none Identifies timestamp at which one-minute time bin starts (UTC). The minute bars format is HHMM. Example: One minute bar 1104 is from time greater than 110400.000 to 110459.999
» closeaskprice number false none NBBO Ask Price at bar Close
» closeasksize number false none Total Size from all Exchange with Close Ask Price
» closebartime string false none Close Time of the Bar, for example one minute: 11:03:59.999
» closebidprice number false none NBBO Bid Price at bar Close
» closebidsize number false none Total Size from all Exchange with Close Bid Price
» date_string string false none Local Date
» highbidprice number false none Highest NBBO Bid Price of barPrice of Highest Trade in the associated time bin
» lowaskprice number false none Lowest NBBO Ask price of bar
» numquotes number false none Number of Quotes in associated time bin
» openaskprice number false none NBBO Ask Price as of bar Open
» openasksize number false none Total Size from all Exchange with OpenAskPrice
» openbartime string false none Open Time of the Bar, for example one minute: 11:03:00.000
» openbidprice number false none NBBO Bid Price as of bar Open
» openbidsize number false none Total Size from all Exchanges with Open Bid Price
» symbol string false none Ticker symbol of the security

One-second Bars for Trades

Canadian trades data from all marketplaces aggregated in one second bars with metrics such as open, high, low, close, vwap, number of trades excluding blocks etc. for each one second bar.

Specifications

Particular Value
Grapevine Table Name trade_bar_1sec
Data Available Since 1/2/2018
Name Type Required Restrictions Description
» barstarttime string false none Identifies timestamp at which one-second time bin starts (EST). For second bars is HHMMSS. Example: One second bar 130302 is from time greater than 130302.000 to 130302.999. The second level granularity is optional. Time can be entered in minutes as well, for example 09:30
» date_string string false none Local Date
» firsttradeprice number false none Price of First Trade in the associated time bin
» hightradeprice number false none Price of Highest Trade in the associated time bin
» lasttradeprice number false none Price of Last Trade in the associated time bin
» lowtradeprice number false none Price of Lowest Trade in the associated time bin
» numtrades number false none Total number of trades
» numtradesexblock number false none Total number of trades excluding blocks. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» numtradesexint number false none Total number of trades excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross
» symbol string false none Ticker Symbol of the security
» value number false none Total value traded
» valueexblock number false none Total value traded excluding blocks. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» valueexint number false none Total value traded excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross
» volume number false none Total number of shares traded
» volumeexblock number false none Total number of shares traded excluding blocks. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» volumeexint number false none Total number of shares traded excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross
» vwap number false none Trade Volume weighted average price - Sum((Trade1Shares*Price)+(Trade2Shar es*Price)+…) /TotalShares
» vwapexblock number false none Trade Volume weighted average price excluding blocks - Sum((Trade1Shares*Price)+(Trade2Shar es*Price)+…) /TotalShares. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» vwapexint number false none Trade Volume weighted average price excluding Intentional Crosses, Special Trading Session Cross, Internal Cross, Contingent Cross, VWAP Cross and National Cross - Sum((Trade1Shares*Price)+(Trade2Shar es*Price)+…) /TotalShares

One-second Bars for Quotes

Canadian quotes data from all marketplaces aggregated in one second bars with metrics such as open, high, low, close, number of quotes etc. for each one second bar

Specifications

Particular Value
Grapevine Table Name quote_bar_1sec
Data Available Since 1/2/2018
Name Type Required Restrictions Description
» barstarttime string false none Identifies timestamp at which one-minute time bin starts (UTC). The minute bars format is HHMM. Example: One minute bar 1104 is from time greater than 110400.000 to 110459.999
» closeaskprice number false none NBBO Ask Price at bar Close
» closeasksize number false none Total Size from all Exchange with Close Ask Price
» closebartime string false none Close Time of the Bar, for example one minute: 11:03:59.999
» closebidprice number false none NBBO Bid Price at bar Close
» closebidsize number false none Total Size from all Exchange with Close Bid Price
» date_string string false none Local Date
» highbidprice number false none Highest NBBO Bid Price of barPrice of Highest Trade in the associated time bin
» lowaskprice number false none Lowest NBBO Ask price of bar
» numquotes number false none Number of Quotes in associated time bin
» openaskprice number false none NBBO Ask Price as of bar Open
» openasksize number false none Total Size from all Exchange with OpenAskPrice
» openbartime string false none Open Time of the Bar, for example one minute: 11:03:00.000
» openbidprice number false none NBBO Bid Price as of bar Open
» openbidsize number false none Total Size from all Exchanges with Open Bid Price
» symbol string false none Ticker symbol of the security

TAQ NBBO

Includes Canadian trades and National Best Bid and Offer pricing prevailing at the time of the trade in one data set. Covers all Canadian marketplaces.

Specifications

Particular Value
Grapevine Table Name taq_nbbo
Data Available Since 6/30/2016
Name Type Required Restrictions Description
» bestask number false none National Best Ask
» bestbid number false none National Best Bid
» buy_broker integer false none Identifies the broker on the buy side of the transaction
» date_string string false none Local date
» listing_exchange string false none Identifies the exchange on which the security has been listed
» record_type integer false none Record type indicator:(1 = Trade,2 = Tick,3 = BBO_Quote,4 = Trade Correction,5 = Trade Cancel,6 = Trade non Regular)
» sell_broker integer false none Identifies the broker on the sell side of the transaction
» symbol string false none Ticker symbol of the security
» totalasksize integer false none Total available national best ask volume from all venues
» totalbidsize integer false none Total available national best bid volume from all venues
» trade_condition string false none (0 - Exchange Not Eligible To Set Last Price (from Sep-2019),A- Conditionals Book Trade,B - Delayed Delivery Trade,C - Contingent Cross,D - Cash Today Trade,E - Non Board Lot Trade,F - Cash Trade,G - VWAP Cross,H - Contra Midpoint Only Trade (from 2018-06-04),I - Derivative-Related Cross,J - Regular Cross,K - Sets the Last Price ,L - Next Day Trade,M - Derivatives-Related Contingent Equity Trade,N - Future Trade,O - Basis Cross,P - Intentional Cross,Q - MOC Trade,R - Non-Resident,S - Special Trading Session Cross,T - Bulk Auction,V - National Cross,W - By-Pass Trade,X - Internal Cross,Y - Non Net Trade,Z - Dark Trade,) All trades that update the last price will contain trade condition
» trade_id string false none Unique trade id
» trade_localseq integer false none Used to sort trades on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
» trade_price string false none Identifies the price of the trade
» trade_size integer false none Identifies the size of the trade
» trade_time string false none Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds.
» trade_venue string false none Identifies the venue where the trade occurred

Premium CBBO

Includes multi-market Best Bid and Offer pricing data that will allow clients to price orders at or between the best bid and best offer among multiple Canadian marketplaces. Lists all venues and size for each venue at CBBO and includes pre-open hours for multiple marketplaces.

Specifications

Particular Value
Grapevine Table Name ca_cbbo
Data Available Since 1/4/2016
Field name Data Type Description
Time Timestamp "Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds. (UTC)"
Symbol Varchar Identifies the Ticker symbol of the security
Bid Double Identifies the price of the national best bid across all venues
Ask Double Identifies the price of the national best ask across all venues
Bid_venues Array(varchar) List of venues at best bid
Ask_venues Array(varchar) List of venues at best ask
Bid_sizes Array(varchar) Bid size offered by each venue in same order as list of bid_venues
Ask_sizes Array(varchar) Ask size offered by each venue in same order as list of bid_venues
Vendortime Timestamp Time vendor observed the record (UTC)
Localseq Bigint Used to sort quotes on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
Date_string Varchar Identifies the local date

Liquidity Summary

Contains pre-calculated spread with the following specifications:
1) Metrics are calculated using the consolidated order book from all Canadian venues
2) The bid/ask is calculated as the volume weighted average price that would be realized assuming the execution of a $50,000 marketable sell/buy order
3) The effective spread is calculated at each one-second interval between 9:45 - 15:45 ET
4) The reported average bid-ask spread is computed by taking the time-weighted average of all one second effective spreads for each day.
Covers trading activity across all Canadian marketplaces. Symbol coverage extends to all Canadian symbols as well.

Specifications

Particular Value
Grapevine Table Name liquidity_summary
Field name Data Type Description
Symbol Varchar Identifies the Ticker symbol of the security
Spread Double "Contains pre-calculated spread with the following specifications:
1) Metrics are calculated using the consolidated order book from all Canadian venues
2) The bid/ask is calculated as the volume weighted average price that would be realized assuming the execution of a $50,000 marketable sell/buy order
3)The effective spread is calculated at each one-second interval between 9:45 - 15:45 ET
4)The reported average bid-ask spread is computed by taking the time-weighted average of all one second effective spreads for each day.
Covers trading activity across all Canadian marketplaces. Symbol coverage extends to all Canadian symbols as well."
Date_string Varchar Lowest non-crosses board lot transaction price between 9:30 am EST and 4:00 pm EST

Trades Summary

Derived table containing summary statistics on total trade volume and value split by symbol and date_string

Specifications

Particular Value
Grapevine Table Name trades_summary
Field name Data Type Description
Symbol String Identifies the Ticker symbol of the security
Venue String Identifies the venue where the message was placed
Total Volume Int Total volume of shares traded for the associated ticker on the mentioned date_string
Total Value Decimal(28,5) Total value of shares traded for the associated ticker on the mentioned date_string
Date String String Identifies the local date on which the order was placed

Basic Daily Stats

Contains essential daily statistics such as open, high, low, close, trade count aggregations, trade volume aggregations, trade value aggregations, vwap, volatility metrics, shares outstanding and market capitalization.
Covers trading activity across all Canadian marketplaces. Symbol coverage extends to all Canadian symbols as well.

Specifications

Particular Value
Grapevine Table Name basic_dailystats_ca
Data Available Since 6/30/2016
Name Type Description
» avg_30day_daily_value number Average daily value traded ie excl odd lots, include blocks auctions, account for cancelled trades over the previous 30 calendar days
» avg_30day_daily_volume number Average per day traded volume ie excl odd, include blocks, auctions, account for cancelled trades over the previous 30 calendar days
» avg_30day_trade_count number Average daily number of trades per day, over previous 30 days ie excl odd lots, include blocks, auctions, account for cancelled trades over the previous 30 calendar days
» date_string string Local Date
» first_observed_price number The first board-lot trade as of standard open time (9:30 am) using logic:
1) Open auction price based on auction flag ,
2) if no auction price occurrs, then take the first observed trade price on all marketplaces/ATS's, ignoring any pre-market trades (e.g. 8:00-9:30)
» intraday_high number Intra-day high price across all venues between 9:30 am and 4:00 pm excluding oddlots including crosses
» intraday_low number Intra-day low price across all venues between 9:30 am and 4:00 pm excluding oddlots inlcuding crosses
» last_observed_price number The last board-lot trade as of standard close time (4:00 pm) using logic: 1) closing auction price, (MOC) 2) if no auction price occurrs, then take the last observed trade price on all marketplaces/ATS's, ignoring any after-market/extended trading session trades (e.g. 4-5pm in Cda, 4-8pm in the US)
» london_4pm_price number The observed market-wide trade price as at 4:00PM London time to be used by European firms who are marking-to-market
» mkt_cap number Show Shares Outstanding * Most recent Official Closing Price
» shares_outstanding number Shares outstanding refer to a company's stock currently held by all its shareholders, including share blocks held by institutional investors and restricted shares owned by the company’s officers and insiders.
» symbol string Ticker symbol of the security
» total_daily_value number For each trading day, total traded value excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» total_daily_volume number For each trading day, total traded volume excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» total_primary_exchange_volume number For each trading day, total traded volume at primary exchange excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» total_trade_count number For each trading day, no. of trades excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» twap_30day number Average of the adjusted OHLC price over previous 21 trading days.
» twap_60day number Average of the adjusted OHLC price over previous 42 trading days.
» volatility30_pct number 1 standard deviation, calculate across all observations across all marketplaces - commonly used industry view of short term volatility
» volatility60_pct number 1 standard deviation, calculate across all observations across all marketplaces - most commonly industry accepted view of 'long term volatility'

Daily Stats

Contains daily statistics such as open, high, low, close, total volume, volume_moo, volume_moc, volume_dark, vwap, volatility30_pct, volatility60_pct.
Covers trading activity across all Canadian marketplaces. Symbol coverage extends to all Canadian symbols as well.

Specifications

Particular Value
Grapevine Table Name dailystats_ca
Data Available Since 6/30/2016
Name Type Description
» avg_advolume30 integer Average per day traded volume excluding blocks, odd lots, crosses(i.e. , accounting for cancelled trades over the previous 30 calendar days
» date_string string Identifies the local date of the record
» first_observed_price number The first board-lot trade as of standard open time (9:30 am) using logic: 1) Open auction price based on auction flag , 2) if no auction price occurrs, then take the first observed trade price on all marketplaces/ATS's, ignoring any pre-market trades (e.g. 8:00-9:30)
» fop_time_eastern string The exchange-published timestamp (milliseconds or nanoseconds) from the FOP
» fop_venue string The venue for which is supplying the FOP for that day
» intraday_high number Intra-day high price across all venues between 9:30 am and 4:00 pm excluding oddlots excluding crosses
» intraday_low number Intra-day low price across all venues between 9:30 am and 4:00 pm excluding oddlots excluding crosses
» intraday_volatility_pct number 1 standard deviation, calculate across all observations across all marketplaces - will not be relevant for illiquid securities that trade infrequently --- will use mid-point for this calculation to circumvent the illquid issue, taking 1- minute snapshot to estimate 1-day volatility in percent
» last_observed_price number The last board-lot trade as of standard close time (4:00 pm) using logic: 1) closing auction price, (MOC) 2) if no auction price occurrs, then take the last observed trade price on all marketplaces/ATS's, ignoring any after-market/extended trading session trades (e.g. 4-5pm in Cda, 4-8pm in the US)
» lop_time_eastern string The exchange-published timestamp (milliseconds or nanoseconds) from the LOP (e.g. 3:49 pm)
» lop_venue string The venue for which is supplying the LOP for that day
» symbol string Ticker Symbol
» total_adjcount integer For each trading day, Total adjusted count of trades
» total_adjvalue number For each trading day, Total adjusted value traded adjusted for crosses, blocks and oddlots
» total_adjvolume integer For each trading day, Total adjusted volume
» volume_block integer Total number of shares traded in blocks Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» volume_dark integer by symbol each day - based on flag from Trades table
» volume_moc integer For each trading day, total closing auction volume, excluding all crosses
» volume_moo integer For each trading day, total opening auction volume. No flag is available. MOO vol is inferred by the volumn in the 1st 10 ms excluding all crosses
» volume_odd_lot integer For each trading day, total odd lot volume across all venues during regular trading hours
» vwap30 number volume-weighted mean of price observations over the specified time period, calculate across all observations across all marketplaces
» vwap60 number volume-weighted mean of price observations over the specified time period, calculate across all observations across all marketplaces

Advanced Daily Stats

Contains advanced daily statistics such as seconday close price, avgerage top of the book bid/ask volume, quoted spreads, effective spreads and trading volumes/count/value metrics across Canadian and US venues. Metrics pertaining to Canada - Covers trading activity across all Canadian marketplaces. Symbol coverage extends to all Canadian symbols as well.

Specifications

Particular Value
Grapevine Table Name adv_dailystats_ca
Data Available Since 01/02/2018
Name Type Description
» avg_sprd_bps number Average daily quoted spread. Spread bps = (ask price-bid price) / midpoint *10000 based on 1 second buckets when there are valid quotes for both bid & ask
» avg_sprd_cent number Average daily quoted spread (spread = ask price-bid price) based on 1 second buckets when there are valid quotes for both bid & ask
» avgaskvol number Total average offer volume (NBO) across all Canadian marketplaces on a symbol at any given time, average taken over previous 30 days using 1 second snapshots
» avgbidvol number Total average bid volume at top price level (NBB) across all Canadian marketplaces on a symbol at any given time, average taken over previous 30 days using 1 second snapshots
» daily_trading_value_ca number For each trading day, total traded value across all Canadian venues excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» daily_trading_value_us number For each trading day, total traded value across all US venues excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» daily_volume_ca number For each trading day, total traded volume across all Canadian venues excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» daily_volume_us number For each trading day, total traded volume across all US venues excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» date_string string Identifies the local date
» effective_sprd_bps number Effective Spread (bps) = Effective spread/midpoint *10000. For example, if NBBO is 1.00 - 1.05 and a trade occurs at 1.03 --> Eff spread (bps) = 2 X (1.03-1.025)/1.025 x10000 = 1bps
» effective_sprd_cent number Effective Spread = 2 X /Trade Price - Nbbo Midpoint /NBBO midpoint x 100. For example: if NBBO is 1.00 - 1.05 and a trade occurs at 1.03 --> Eff spread = 2 X (1.03-1.025) = $0.01
» secondaryclose number Secondary close price identified as midpoint of the NBBO at 3:59.00.0000 PM EST
» symbol string Ticker symbol of the security
» trade_count_ca number For each trading day, number of trades across all Canadian venues excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» trade_count_us number For each trading day, number of trades across all US venues excluding oddlots, account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» us_symbol string Identifies the ticker of the security on the US exchange

TSX Daily Stats

Contains premium TSX/V specific daily statistics such as close price, open price, time of price movement extension, time of market state change and time of market imbalance message.
Covers trading activity across TSX/TSXV and Alpha. Symbol coverage extends to all TSX/V listed symbols.

Name Type Required Restrictions Description
» date_string string false none Identifies the local date of the record
» exchange string false none Identifies the venue for the applicable statistics
» key_value string false none Identifies the ticker symbol of the security for example, 'AC' for Air Canada
» stat string false none Identifies the various statistics that can be obtained. Possible values are available in Reference Guide for stat for TSX Daily Stats CA
» time string false none Identifies the timestamp for the applicable stat in terms of date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds.
» time_nanos number false none Identifies the nanosecond precision (nanosecond only) of the applicable timestamp
» value string false none Identifies the value of the relevant stat. More details can be found in the Reference Guide for Stat section along with TSX API Details
» value2 string false none Identifies the secondary value of the relevant stat where applicable. More details can be found in the Reference Guide for Stat section along with TSX API Details
» value3 string false none Identifies the tertiary value of the relevant stat where applicable. More details can be found in the Reference Guide for Stat section along with TSX API Details
» value4_to_n array false none Identifies the MOC imbalance metrics
"'PairedVolume','MarketOrderImbalanceVolume','MarketOrderImbalanceSide','NearIndicativeClosingPrice','FarIndicativeClosingPrice','PriceVariation'" for the stat 'moc' in an array format
» year string false none Identifies the year of the record

Reference Guide for stat for TSX Daily Stats CA

stat keyvalue value time value2 value3
ccp <symbol> Close price for symbol on associated exchange Market close time for symbol on associated exchange N/A N/A
cop <symbol> Open price for symbol on associated exchange Market open time for symbol on associated exchange Boardlot size of symbol N/A
pme <symbol> N/A Time of price movement extension on associated exchange N/A N/A
msc <symbol> Market state on associated exchange Time of market state change on associated exchange N/A N/A
moc <symbol> Imbalance volume on associated exchange Time of market imbalance message on associated exchange Imbalance side on associated exchange Imbalance price on associated exchange

Broker Summary

Contains spread and volume metrics broker down by broker.

Specifications

Particular Value
Grapevine Table Name broker_summary
Data Available Since 2019
Field Name Type Description
symbol varchar Identifies the Ticker symbol of the security
broker integer Identifies the broker ID
time_period varchar "Identifies the time period of the associated metrics.
Possible values are:
Pre Opening (9:00 - 9:30)
Post Opening (9:30 - 10:00)
Regular Market (10:00 - 15:00)
Closing (15:00 - 16:00)"
notional integer "Identifies the notional amount the metrics are associated with.
Possible values are:
'Top of Book' - Refers to each broker's own best bid and best ask
$100,000 - Measures the point at which the brokers bid/ask volume crosses $100,000 in value
$200,000 - Measures the point at which the brokers bid/ask volume crosses $200,000 in value"
bid_ratio double Calculates the % of time where the broker had a bid in the book satisfying the level drilled
bid_volume double Time-weighted average of shares quoted by the broker at or to the price level that satisfies the drilled depth level.
bid_value double Time-weighted average of value quoted by the broker at or to the price level that satisfies the drilled depth level.
ask_ratio double Calculates the % of time where the broker had an ask in the book satisfying the level drilled
ask_volume double Time-weighted average of shares quoted by the broker at or to the price level that satisfies the drilled depth level.
ask_value double Time-weighted average of value quoted by the broker at or to the price level that satisfies the drilled depth level.
spread double Difference in dollars of the bid and ask weighted by the value quoted at the price level(s) in the broker’s book where the drilled notional depth was achieved for each side
spread_bps double Spread measured in basis points relative to the midpoint of the broker’s identified bid/ask for the brokers’ book snapshot, and subject to the drilled depth level.
date_string varchar Identifies the local date

Liquidity Analytics

Provides a market-wide view of the total displayed (onbook) liquidity available by symbol each day at multiple price levels beyond the top of book. The dataset aggregates the consolidated market-wide orderbook to build these calculations and is meant to provide a robust input into assessing market-wide quoted liquidity and determining an appropriate order/trade execution strategy. It can also be used to help detect when material changes occurr to a symbol's liquidity profile.

Specifications

Particular Value
Grapevine Table Name liquidity_ca
Data Available Since 01/02/2020
Field Name Type Description
symbol string Ticker symbol of the security
venue string Venue for associated metrics. Consolidated view can be obtained under 'All'
pct_time_bid_10b_deep decimal(28,5) Percent time valid bid was available at midpoint and up until 10 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
bidsize10b_impact bigint Total number of shares of visible liquidity at midpoint up until10 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until 10 bps.
bidvalue10b_impact bigint Total value of visible liquidity at midpoint up until at least 10 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until at least 10 bps.
pct_time_bid_25b_deep decimal(28,5) Percent time valid bid was available at midpoint and up until 25 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
bidsize25b_impact bigint Total number of shares of visible liquidity at midpoint up until 25 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until 25 bps.
bidvalue25b_impact bigint Total value of visible liquidity at midpoint up until at least 25 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until at least 25 bps.
pct_time_ask_10b_deep decimal(28,5) Percent time valid ask was available at midpoint and up until 10 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
asksize10b_impact bigint Total number of shares of visible liquidity at midpoint up until10 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until 10 bps.
askvalue10b_impact bigint Total value of visible liquidity at midpoint up until at least 10 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until at least 10 bps.
pct_time_ask_25b_deep decimal(28,5) Percent time valid ask was available at midpoint and up until 25 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
asksize25b_impact bigint Total number of shares of visible liquidity at midpoint up until 25 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until 25 bps.
askvalue25b_impact bigint Total value of visible liquidity at midpoint up until at least 25 bps away across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until at least 25 bps.
pct_time_bidask_25k_deep decimal(28,5) Percent time there was a valid two sided quote satisfying the notional amount ($25,000) available on both the bid and the ask side.
sprd_25k_bps decimal(28,5) Volume weighted average spread (in bps) to execute at least a $25,000 order across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($25,000) was available on both the bid and ask side.
pct_time_bidask_50k_deep decimal(28,5) Percent time there was a valid two sided quote satisfying the notional amount ($50,000) available on both the bid and the ask side.
sprd_50k_bps decimal(28,5) Volume weighted average spread (in bps) to execute at least a $50,000 order across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($50,000) was available on both the bid and ask side.
pct_time_bidask_100k_deep decimal(28,5) Percent time there was a valid two sided quote satisfying the notional amount ($100,000) available on both the bid and the ask side.
sprd_100k_bps decimal(28,5) Volume weighted average spread (in bps) to execute at least a $100,000 order across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($100,000) was available on both the bid and ask side.
pct_time_bidask_200k_deep decimal(28,5) Percent time there was a valid two sided quote satisfying the notional amount ($200,000) available on both the bid and the ask side.
sprd_200k_bps decimal(28,5) Volume weighted average spread (in bps) to execute at least a $200,000 order across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($200,000) was available on both the bid and ask side.
pct_time_bidask_500k_deep decimal(28,5) Percent time there was a valid two sided quote satisfying the notional amount ($500,000) available on both the bid and the ask side.
sprd_500k_bps decimal(28,5) Volume weighted average spread (in bps) to execute at least a $500,000 order across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($500,000) was available on both the bid and ask side.
pct_time_bidask_1m_deep decimal(28,5) Percent time there was a valid two sided quote satisfying the notional amount ($1,000,000) available on both the bid and the ask side.
sprd_1m_bps decimal(28,5) Volume weighted average spread (in bps) to execute at least a $1,000,000 order across all venues/each venue as per venue column. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($1,000,000) was available on both the bid and ask side.
time_wgt_bidvalue10b_impact_component_score decimal(2,1) Weighted score attributable to this component to be used in the Liquidty_Score field
time_wgt_bidvalue25b_impact_component_score decimal(2,1) Weighted score attributable to this component to be used in the Liquidty_Score field
time_wgt_askvalue10b_impact_component_score decimal(2,1) Weighted score attributable to this component to be used in the Liquidty_Score field
time_wgt_askvalue25b_impact_component_score decimal(2,1) Weighted score attributable to this component to be used in the Liquidty_Score field
time_wgt_sprd_25k_bps_component_score decimal(2,1) Weighted score attributable to this component to be used in the Liquidty_Score field
time_wgt_sprd_50k_bps_component_score decimal(2,1) Weighted score attributable to this component to be used in the Liquidty_Score field
time_wgt_sprd_100k_bps_component_score decimal(2,1) Weighted score attributable to this component to be used in the Liquidty_Score field
time_wgt_sprd_200k_bps_component_score decimal(2,1) Weighted score attributable to this component to be used in the Liquidty_Score field
time_wgt_sprd_500k_bps_component_score decimal(2,1) Weighted score attributable to this component to be used in the Liquidty_Score field
time_wgt_sprd_1m_bps_component_score decimal(2,1) Weighted score attributable to this component to be used in the Liquidty_Score field
liquidity_score decimal(2,1) LiquidityScore aims to provide a simplified view into the amount of displayed liquidity at multiple price levels deep on each symbol. It draws from other reported fields in this table and uses a weighted average to create a summarized 1-5 scoring system, with 1 representing low levels of displayed liquidity, and 5 representing high levels of displayed liquidity.
date_string string Identifies the local date

Broker Liquidity

Contains broker-specific quoting analytics at multiple orderbook levels beyond the top of book. This unique dataset provides an enhanced view into displayed liquidity by broker to help understand liquidity dynamics and market share contributed by each broker, subject to broker attribution. One-minute orderbook snapshots are taken throughout the trading day (9:45 AM - 15:45 PM ET/EST) and then the time-weighted average is used to represent an end of day value

Please also refer to Broker Daily Stats table for additional analytics on volume traded by broker

Specifications

Particular Value
Grapevine Table Name broker_liquidity
Data Available Since 01/02/2020
Field Name Type Description
symbol string Ticker symbol of the security
broker string Identifier of the broker
asksize10b_impact bigint Total number of shares of visible liquidity at midpoint up until 10 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until 10 bps.
bidsize10b_impact bigint Total number of shares of visible liquidity at midpoint up until 10 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until 10 bps.
asksize25b_impact bigint Total number of shares of visible liquidity at midpoint up until 25 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until 25 bps.
bidsize25b_impact bigint Total number of shares of visible liquidity at midpoint up until 25 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until 25 bps.
askvalue10b_impact bigint Total value of visible liquidity at midpoint up until at least 10 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until at least 10 bps.
bidvalue10b_impact bigint Total value of visible liquidity at midpoint up until at least 10 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until at least 10 bps.
askvalue25b_impact bigint Total value of visible liquidity at midpoint up until at least 25 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid ask was available up until at least 25 bps.
bidvalue25b_impact bigint Total value of visible liquidity at midpoint up until at least 25 bps away across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid bid was available up until at least 25 bps.
avgnbb_value bigint Time-weighted value at Market NBB
avgnbb_volume bigint Time-weighted volume at Market NBB
avgnbo_value bigint Time-weighted volume at Market NBO
avgnbo_volume bigint Time-weighted value at Market NBO
pct_time_atnbb decimal(28,5) Percent of time (time-weighted) that broker had a quote at the NBB
pct_time_atnbo decimal(28,5) Percent of time (time-weighted) that broker had a quote at the NBO
pct_time_2sides_avail decimal(28,5) Percent time there was a valid two sided quote available on both the bid and the ask side.
pct_time_ask_10b_deep decimal(28,5) Percent time valid ask was available at midpoint and up until 10 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
pct_time_bid_10b_deep decimal(28,5) Percent time valid bid was available at midpoint and up until 10 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
pct_time_ask_25b_deep decimal(28,5) Percent time valid ask was available at midpoint and up until 25 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
pct_time_bid_25b_deep decimal(28,5) Percent time valid bid was available at midpoint and up until 25 bps away from midpoint. Time range considered is 09:45 EST to 15:45 EST.
pct_time_bidask_25k_deep decimal(28,5) Percent time there was a valid two sided quote satisfying the notional amount ($25,000) available on both the bid and the ask side.
pct_time_bidask_50k_deep decimal(28,5) Percent time there was a valid two sided quote satisfying the notional amount ($50,000) available on both the bid and the ask side.
pct_time_bidask_100k_deep decimal(28,5) Percent time there was a valid two sided quote satisfying the notional amount ($100,000) available on both the bid and the ask side.
pct_time_bidask_200k_deep decimal(28,5) Percent time there was a valid two sided quote satisfying the notional amount ($200,000) available on both the bid and the ask side.
pct_time_bidask_500k_deep decimal(28,5) Percent time there was a valid two sided quote satisfying the notional amount ($500,000) available on both the bid and the ask side.
pct_time_bidask_1m_deep decimal(28,5) Percent time there was a valid two sided quote satisfying the notional amount ($1,000,000) available on both the bid and the ask side.
sprd_25k_bps decimal(28,5) Volume weighted average spread (in bps) to execute at least a $25,000 order across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($25,000) was available on both the bid and ask side.
sprd_50k_bps decimal(28,5) Volume weighted average spread (in bps) to execute at least a $50,000 order across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($50,000) was available on both the bid and ask side.
sprd_100k_bps decimal(28,5) Volume weighted average spread (in bps) to execute at least a $100,000 order across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($100,000) was available on both the bid and ask side.
sprd_200k_bps decimal(28,5) Volume weighted average spread (in bps) to execute at least a $200,000 order across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($200,000) was available on both the bid and ask side.
sprd_500k_bps decimal(28,5) Volume weighted average spread (in bps) to execute at least a $500,000 order across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($500,000) was available on both the bid and ask side.
sprd_1m_bps decimal(28,5) Volume weighted average spread (in bps) to execute at least a $1,000,000 order across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote satisfying the notional amount ($1,000,000) was available on both the bid and ask side.
sprd_tob_bps decimal(28,5) Volume weighted average spread (in bps) at dealer's top of book across all venues. Averaged per minute from 09:45 EST to 15:45 EST when valid two-sided quote was available on both the bid and ask side.
date_string string Identifies the local date

Broker Daily Stats

Provides insights into market share by broker through a more detailed view into trade volume by broker for various trading sessions and order types, subject to broker attribution

Please also refer to Broker Liquidity analytics table for additional insights into quoting behaviour by broker

Specifications

Particular Value
Grapevine Table Name broker_dailystats
Data Available Since 2016
Field Name Type Description
symbol string Ticker symbol of the security
broker string Identifier of the broker
volume_buy bigint For each trading day, total buy volume attributable to each broker
volume_sell bigint For each trading day, total sell volume attributable to each broker
value_buy bigint For each trading day, total buy value attributable to each broker
value_sell bigint For each trading day, total sell value attributable to each broker
count_buy bigint For each trading day, total buy count attributable to each broker
count_sell bigint For each trading day, total sell count attributable to each broker
volume_block_buy bigint Total number of shares traded in blocks attributable to each broker on buy side
Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
If symbol contains NT, NO, NS, DB, WA, WR, WS or WT then abs(volume)/10 >= 10000 and abs (value)/100 >= 100000
volume_block_sell bigint Total number of shares traded in blocks attributable to each broker on sell side
Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
If symbol contains NT, NO, NS, DB, WA, WR, WS or WT then abs(volume)/10 >= 10000 and abs (value)/100 >= 100000
volume_moc_buy bigint For each trading day, total closing auction volume inferred as trades flagged as MOC trades attributable to each broker on buy side. Excludes all crosses
volume_moc_sell bigint For each trading day, total closing auction volume inferred as trades flagged as MOC trades attributable to each broker on sell side. Excludes all crosses
volume_moo_buy bigint For each trading day, total opening auction volume attributable to each broker on buy side. MOO volume is inferred as the volume in the first 10 milliseconds after 9:30 am EST excluding all crosses
volume_moo_sell bigint For each trading day, total opening auction volume attributable to each broker on sell side. MOO volume is inferred as the volume in the first 10 milliseconds after 9:30 am EST excluding all crosses
volume_odd_lot_buy bigint For each trading day, total odd lot volume across all venues attributable to each broker on buy side
volume_odd_lot_sell bigint For each trading day, total odd lot volume across all venues attributable to each broker on sell side
volume_dark_buy bigint Dark Volume by symbol each day attributable to each broker on buy side - based on trade condition flag
volume_dark_sell bigint Dark Volume by symbol each day attributable to each broker on sell side - based on trade condition flag
volume_cross_buy bigint Volume for trades with trade conditon flag - P, S, X, C, O, G V, I attributable to each broker on buy side
Trade Condition Flags :
P - Intentional Cross
S - Special Trading Session Cross
X - Internal Cross
C - Contingent Cross
O - Basis Cross
G - VWAP Cross
V - National Cross
I - Derivative-Related Cross
volume_cross_sell bigint Volume for trades with trade conditon flag - P, S, X, C, O, G V, I attributable to each broker on sell side
Trade Condition Flags :
P - Intentional Cross
S - Special Trading Session Cross
X - Internal Cross
C - Contingent Cross
O - Basis Cross
G - VWAP Cross
V - National Cross
I - Derivative-Related Cross
volume_premarket_buy bigint For each trading day, total buy volume attributable to each buy broker between 8:00 am and 9:30 am EST
volume_premarket_sell bigint For each trading day, total sell volume attributable to each buy broker between 8:00 am and 9:30 am EST
volume_postmarket_buy bigint For each trading day, total buy volume attributable to each buy broker between 4:00 pm and 5:00 pm EST
volume_postmarket_sell bigint For each trading day, total sell volume attributable to each buy broker between 4:00 pm and 5:00 pm EST
date_string string Identifies the local date

Open High Low Close

Provides a variety of open, high, low, and close prices including daily, yearly and 52 weeks time frames

Specifications

Particular Value
Grapevine Table Name ohlc_ca
Data Available Since 2022
Field Name Type Description
symbol string Ticker symbol
venue string Identifies the venue where the trade occurred
listing_exchange string Identifies the exchange where the security is listed
entity_type integer 0 = none
1 = equity
2 = equity_option
3 = index_option
4 = currency_option
5=index
6 = corporate_bond
7 = future
8 = future_option
9 = forex
10 = mutual_fund
11 = money_market_fund
12 = bond
13 = market_maker_quote
14 = government_bond
15 = spot
16 = corporate_action
17 = unit_investment_trust
18 = exchange_traded_fund
19 = company
20 = security
21 = convertible
22 = debenture
23 = preference
24 = warrant
25 = news
26 = analytics
27 = order
28 = option_root
29 = future_root
30 = future_option_root
31 = news_headline
32 = statistics
33 = rankings
34 = bbo_quote
35 = futures_spread
36 = exchange
37 = forex_forward
38 = structured_product
39 = bbo_depth
40 = non_standard_option
41 = strategy
42 = strategy_leg
45 = rights
46 = loan_stock
47 = non_convertible_loan
48 = exchange_traded_note
49 = annuity
50 = contract_for_difference
51 = closed_end_fund
52 = exchange_traded_vehicle
53 = fixed_income_index
54 = sector
55 = depositary_receipt
56 = forward
57 = agency_bond
58 = equity_linked_note
59 = church_bond
60 = municipal_bond
61 = exchange_traded_managed_fund
62 = exchange_traded_commodity
close decimal(28,5) Identifies the closing price
close_status integer 1 = calculated_unofficial
2 = calculated_official
3 = exchange_unofficial
4 = exchange_official
0 = none
close_date string The date associated with the close field.
previous_close_date string The previous day's closing date. Updated after reset if the instrument received closing prices the previous day. See close_date for current day's closing value. This date could differ from the previous trading date if an exchange disseminates a closing price even though an instrument hasn't traded.
closing_bid decimal(28,5) The last bid price at the close of the exchange. Never cleared down so will either contain the previous day's last bid or, if after today's close, will contain the current day's last bid. Use with closing_quote_date to determine which. Updated after close each day.
closing_ask decimal(28,5) The last ask price at the close of the exchange. Never cleared down so will either contain the previous day's last bid or, if after today's close, will contain the current day's last bid. Use with closing_quote_date to determine which. Updated after close each day.
closing_quote_date string The date associated with the closing_bid and closing_ask fields.
open decimal(28,5) Identifies the open price
open_time string Identifies the open price time
high decimal(28,5) Identifies the high price
high_time string Identifies the high price time
low decimal(28,5) Identifies the low price
low_time string Identifies the low price time
f52week_high decimal(28,5) Identifies the 52 week high
f52week_high_date string Identifies the date of 52 week high
f52week_low decimal(28,5) Identifies the 52 week low
f52week_low_date string Identifies the date of 52 week low
year_high decimal(28,5) The highest price achieved during the current year, i.e. 1st Jan - 31st Dec.
year_high_date string The date that the year_high occurred.
year_low decimal(28,5) The lowest price achieved during the current year, i.e. 1st Jan - 31st Dec.
year_low_date string The date that the year_low occurred.
date_string string Identifies the local date

Venue Analytics Quotes

This table is structured by venue and by symbol allowing clients to drill into each metric and compare across venues. Includes key comparables performed against each venue's quotes, including quote to trade ratios, various spread metrics, and contirbution to the Canadian consolidated best bid and ask (CBBO).

Specifications

Particular Value
Grapevine Table Name venue_analytics_quotes_ca
Data Available Since 6/30/2016
Field Name Type Description
symbol varchar Identifies Ticker symbol of the security
venue varchar Venue for associated metrics. Consolidated view can be obtained under 'All'
quote_trade_ratio double Quote-to-trade ratio by day, by venue, by symbol
quoting_pct double The percentage of time in that trading day where there are valid quotes (i.e. has both bid_price and ask_price)
median_sprd double Median daily quoted spread (spread = ask price-bid price) when there are valid quotes for both bid & ask
median_sprd_bps double Median daily quoted spread. Spread bps = (ask price-bid price) / midpoint *10000 when there are valid quotes for both bid & ask
time_wgt_sprd double Time-weighted Average daily quoted spread (spread = ask price-bid price) when there are valid quotes for both bid & ask
time_wgt_sprd_bps double Time weighted Average daily quoted spread. Spread bps = (ask price-bid price) / midpoint *10000 when there are valid quotes for both bid & ask
effective_sprd double Effective Spread = 2 X
effective_sprd_bps double Effective Spread (bps) = Effective spread/midpoint *10000. Using same example as above: if NBBO is 1.00 - 1.05 and a trade occurs at 1.03 --> Eff spread (bps) = 2 X (1.03-1.025)/1.025 x10000 = 1bps
median_effective_sprd double Effective Spread = 2 X
median_effective_sprd_bps double Effective Spread (bps) = Effective spread/midpoint *10000. Using same example as above: if NBBO is 1.00 - 1.05 and a trade occurs at 1.03 --> Eff spread (bps) = 2 X (1.03-1.025)/1.025 x10000 = 1bps
pct_time_bb double Percent time at CBB
pct_time_bo double Percent time at CBO
time_wgt_CBBvolume int Time-weighted Average Volume at CBB
time_wgt_CBOvolume int Time-weighted Average Volume at CBO
time_wgt_CBBvalue int Time-weighted Average Value at CBB
time_wgt_CBOvalue int Time-weighted Average value at CBO
time_wgt_pct_CBBvolume double Time-weighted Average Pct of CBB Volume
time_wgt_pct_CBOvolume double Time-weighted Average Pct of CBO Volume
date_string varchar Identifies the local date

Venue Analytics Trades

This table allows clients to drill into venue market share by volume and value at the symbol level to allow for customized market share groupings.

Specifications

Particular Value
Grapevine Table Name venue_analytics_trades_ca
Data Available Since 6/30/2016
Field Name Type Description
symbol varchar Identifies Ticker symbol of the security
venue varchar Venue for associated metrics
total_trade_count bigint Total number of trades
total_volume bigint Total trade share volume
total_trade_value bigint Total trade value volume
avg_tradesize int Running average trade size. Calculated by (total_volume / total_trade_count) over the last 33 days from current date, while ignoring the first 20 trades of the chosen interval
volume_dark_flagged bigint Share volume of the trades that have flag H or Z, or venue in (ICX,TCM,CXD,LIQ,AQD)
volume_dark_calculated bigint The volume of dark trades that do not have conditions applied in volume_dark_flagged. Calculated by capture the trade_size when trade price is not equal to either bid or ask, and the volume difference between trade_size and ask_size/bid_size when trade_price is equal to ask/bid.
dark_improvement_cent decimal(28,5) If the sum of above two dark metrics is not 0, then (100% * (the lesser of price difference between trade_price and ask/bid) * trade_size / the sum of above two dark metrics)
percent_trade_volume decimal(28,5) Percentage of total value volume of that symbol in one venue over all venue.
percent_trade_count decimal(28,5) Percentage of trade count of that symbol in one venue over all venue.
average_trade_size decimal(28,5) Average share volume of each trade in that day
average_trade_value decimal(28,5) Average value volume of each trade in that day
date_string varchar Identifies the local date

Vendor Analytics Map

Specifications

Particular Value
Grapevine Table Name vendor_venue_map
Data Available Since
Field Name Type Description
vela varchar Name of the venue in vela
activ varchar Name of the venue in activ
edi varchar Name of the venue in edi
mic varchar Name of the venue in mic
description varchar Description of the venue
effective_date varchar The earliest date that the row is or will be effective
inactive_date varchar The date after which the row is no longer effective

Vendor Analytics Map Ext

Specifications

Particular Value
Grapevine Table Name vendor_venue_map_ext
Data Available Since
Field Name Type Description
vela varchar Name of the venue in vela
activ varchar Name of the venue in activ
edi varchar Name of the venue in edi
mic varchar Name of the venue in mic
description varchar Description of the venue
effective_date varchar The earliest date that the row is or will be effective
inactive_date varchar The date after which the row is no longer effective

Venue Order Book

This table provides a tick by tick view into each venue's orderbook alongside the Canadian consolidated best bid and best offer. It is used to recreate a venue-attributed (level 2) market-by-order orderbook

Specifications

Particular Value
Grapevine Table Name venue_ob
Data Available Since 01/02/2018
Name Type Description
» ask_levels array<
struct <
price: decimal(28,5)
brokers: array<String>
sizes: array<BIGINT>
Identifies the ask price broken down by broker and order size
» bid_levels array<
struct <
price: decimal(28,5)
brokers: array<String>
sizes: array<BIGINT>
Identifies the bid price broken down by broker and order size
» localseq bigint Used to sort orders on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
» nbbo_ask decimal(28,5) Identifies the national best ask for the ticker symbol
» nbbo_bid decimal(28,5) Identifies the national best bid for the ticker symbol
» symbol varchar Identifies Ticker symbol of the security
» time timestamp Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds. (UTC)
» time_nanos bigint Identifies timing of orders with precision in nanoseconds
» venue varchar Identifies the exchange on which the transaction occurred
» date_string varchar Identifies the local date

Canada (Derivatives) - Core

MX Trades

Trades are normally announced via the OrderExecution (OX) or OrderExecutionAtPrice (OP) messages.

Field Name Data Type Description
External Symbol String The instrument external symbol.
Instrument Group String The instrument group the instrument belongs to.
Instrument Id String The instrument identifier
Is Implied Trade String Defines whether the trade results from a strategy legs.
Is Order at Market Price String Describes whether the current order is at market price. Possible Value: yes,no
Is Other Trade Side Reported String When this flag is set to Yes, it means that the opposite side of the trade is also reported. Possible Value: yes,no
Is Strategy String Defines whether the instrument that trades is a strategy.
Message Type String The message name. Possible Value Obf Trade
Milli Seconds String The millisecond component of the field Time. Possible Format
Order Id String Defines the identifer of the booked order that trades.
Order Price Decimal(21,5) The price at which the order was booked.
Order Verb String The trade market side.
Ref Msg Type String References the Itch message. Possible Value Trade, TradeCancel, TradeCorrection, OrderExecution, OrderExecutionAtPrice
Sequence Number Int Unique Id to identify a record in the log file.
Time String The time at which the message the message is created. Possible Format HHMMSS
Time Elapse String The microsecond component of the field Time.
Trade Identifier String The identier of the trade that is created, cancelled or corrected.
Trade_Marker String This flag provides the context in which the trade was executed. Possible Value: Regular Trade, As-of-Trade, Block Trade, Contingent Trade, Crossed, Exchange For Physical, Riskless Basis Cross, Delta Trade, Committed Block, Late Trade, Exchange for Risk, Committed, Basis On Close, Trade Correction, Price-Volume Adjustment Trade.
Trade Price Decimal(21,5) The price at which the trade is executed.
Trade Quantity Int The traded volume.
Updated High Price Decimal(21,5) The updated highest trade price at which the instrument has traded when a trade is cancelled.
Updated Last Price Decimal(21,5) The updated last price at which the instrument has traded when a trade is cancelled.
Updated Low Price Decimal(21,5) The updated lowest trade price at which the instrument has traded when a trade is cancelled.
Updated Opening Price Decimal(21,5) The updated instrument opening price when a trade is cancelled.
H Date Time Timestamp #N/A
Date String String #N/A

MX Order

This table refers to all order types including: OrderNew, Order Replace, Order Cancel, OrderIn Book

Field Name Data Type Description
Displayed Quantity Int Defines the order displayed quantity.
External_symbol String The instrument external symbol.
Instrument Group String The instrument group the instrument belongs to
Instrument Id String The instrument identifier
Is Order at Market Price String Describes whether the current order is at market price.
Is Previous order at Market Price String Describes whether the previous order was at market price.
Keep Priority String Describes whether the replacing order keeps its priority in the order book.
Message Type String The message name. Possible Value Obf Price Order
Milli Seconds String The millisecond component of the field Time. Possible Format MMM
Order Id String The order identifier.
Order Verb String The order market side.
Previous Order Id String The previous order identifier.
Previous Price Decimal(21,5) The previous order price.
Previous Quantity Int The previous order displayed quantity.
Price Decimal(21,5) Defines the order price.
Priority String Defines the priority of the order.
Ref Msg Type String References the Itch message. Possible Value OrderNew,OrderReplace,OrderCancel, OrderInBook.
Sequence Number Int Unique Id to identify a record in the log file.
Time String The time at which the message the message is created. Possible Format HHMMSS
Time Elapse String The microsecond component of the field Time.
H Date Time Time stamp #N/A
Date String String #N/A

MX OB Deltas

Field Name Data Type Description
Time Timestamp The time at which the message the message is created. Possible Format:HHMMSS
Time Nanos Int
Instrument Group String The Instrument group the instrument belongs to.
Instrument Id String The Instrument identifier
External Symbol String The Instrument external symbol
Side String
Price Decimal(21,5)
Book Change Int
Order Id String
Reason String
Seq Bigint
Localseq Bigint
Date String String

MX OB Quotes

Field Name Data Type Description
Time Timestamp The time at which the message the message is created. Possible Format:HHMMSS
Time Nanos Int
Instrument Group String The Instrument group the instrument belongs to.
Instrument Id String The Instrument identifier
External Symbol String The Instrument external symbol
Bid Size Bigint
Bid Price Decimal(21,5)
Ask Size Bigint
Ask Price Decimal(21,5)
Seq Bigint
Localseq Bigint Internal
Date String String

MX Instrument Summary

This table provides trading summary for an instrument.

Field Name Data Type Description
External Price Decimal(21,5) External Underlying Price for a Basis Future
External Symbol String The instrument external symbol.
High Price Decimal(21,5) Instrument highest trading price
Historical Coupon Decimal(21,5) Instrument historical coupon
Instrument Group String The instrument group the instrument belongs to.
Instrument Id String The instrument identifier
Last Price Decimal(21,5) Instrument last trading price: Possible Value Theoretical Opening Price, Assigned Market On Open Price
Low price Decimal(21,5) Instrument lowest trading price
Message Type String The message name. Possible Value Obf Price Update
Milli Second String The millisecond component of the field Time. Possible Format MMM
Net Present Value Decimal(21,5) Instrument net present value of all cash flows in the future (Floating - Fixed)
Opening Price Decimal(21,5) Instrument opening price
Open Interest Int Instrument open interest
Previous Day Settlement Pice Decimal(21,5) Instrument previous settlement price
Price Alignment Interest Decimal(21,5) Cumulative daily interest adjustment
Reason String The event that triggers the summary message. Possible Value Start Of Day, Opening, Update, End Of Day
Ref Msg Type String Instrument Summary
Sequence Number Int Unique Id to identify a record in the log file.
Settlement Price Decimal(21,5) Instrument settlement price
Time String The time at which the message the message is created. Possible Format HHMMSS
Time Elapse String The microsecond component of the field Time.
Trade Volume Int Instrument total traded volume. Possible Value Price Update
H Date Time Time stamp #N/A
Date String String #N/A

MX Instruments

Instrument Definition messages are sent at start of day for each tradable instrument.

Field Name Data Type Description
Associated Group String Used along the field Associated Instrument Id to identify the instrument the future is based on.
Associated Instrument String Used along the field Associated Instrument Id to identify the instrument the future is based on.
Call Put Code String Defines whether the option is call or a put option.
Class Symbol String The instrument class symbol.
Contract Size Int The instrument contract size
Contract Size Multiplier Decimal(21,5) The instrument contract size multiplier.
Currency String ISO 4217 Currency code
Delivery Type String ISO 4217 Currency code : Possible Values Cash, Physical
Expiration Date Date The instrument expiration date (if applicable).
External Symbol String The external symbol of the instrument.
Instrument Group String Used along the field Instrument Id to identify an instrument.
Instrument Id String Used along the field Group Id to identify an instrument.
Is Flex String Defines whether the instrument is a Flex or not.
Leg Instrument Group 01 String Instrument group of strategy leg 1
Leg Instrument Group 02 String Instrument group of strategy leg 2
Leg Instrument Group 03 String Instrument group of strategy leg 3
Leg Instrument Group 04 String Instrument group of strategy leg 4
Leg Instrument Group 05 String Instrument group of strategy leg 5
Leg Instrument Group 06 String Instrument group of strategy leg 6
Leg Instrument Group 07 String Instrument group of strategy leg 7
Leg Instrument Group 08 String Instrument group of strategy leg 8
Leg Instrument Group 09 String Instrument group of strategy leg 9
Leg Instrument Group 10 String Instrument group of strategy leg 10
Leg Instrument Group 11 String Instrument group of strategy leg 11
Leg Instrument Group 12 String Instrument group of strategy leg 12

MX Instrument State

This table refers to an instrument state. In general, Instruments are in the "Normal" state, which means that they are following their Group's State. In that case, no Instrument State Message is Sent.
Instrument tate messages will only be sent when the Instrument State is different from the Group State (i.e., when the Instrument State is not "Normal"), or when an Instrument previously in a non-Normal State returns to "Normal".

Field Name Data Type Description
External Symbol String The instrument external symbol.
Instrument Group String The instrument group the instrument belongs to
Instrument Id String The instrument identifier
Message Type String The message name. Possible Value Obf Instrument State
Milli Seconds String The millisecond component of the field Time. Possible Format MMM
Ref Msg Type String References the Itch message. Possible Value Instrument State
Sequence Number Int Unique Id to identify a record in the log file.
State String The trading state the instrument toggles to. Possible Value Normal (N), Forbidden (F), PreOpening (R), NotTrading (C), Suspended (S)
Time String The time at which the message the message is created. Possible Format HHMMSS
Time Elapse String The microsecond component of the field Time.
H Date Time Timestamp #N/A
Date String String #N/A

MX Group State

This table refers to a group state.

Field Name Data Type Description
Instrument Group String Used along the field InstrumentId to identify an instrument.
Message Type String The Message Name : Possible Value Obf Group State
Milli Seconds String The millisecond component of the field Time : Possible Format MMM
Ref Msg Type String References the ITCH instrument : Possible Value GroupState
Scheduled Time String The scheduled time the group state change occurs.
Sequence Number Int Unique Id to identify a record in the log file.
State String Possible Value : PostSession (B), Start of Consultation (C), Intervention before opening(E), Forbidden (I), Preopening (P), Opening (O), Continuous trading (S), EndOfConsultation (F), MiniBatch (M), Surveillance Intervention (N), Interrupted(Z)
Time String The time at which the message the message is created. Possible Format HHMMSS
Time Elapse String The microsecond component of the field Time.
H Date Time Timestamp #N/A
Date String String #N/A

Canada (Derivatives) - Analytical

MX Daily Stats

Contains daily statistics on MX data such as Roll Volume, Put Call Ratio, Implied Volalitity, Delta, Gamma, Rho, Vega, Theta, Reference Price, Last Price, Last Bid, Last Ask, Open Interest, Trade Count, Trade Volume, Trade Value.

Name Type Description
» call_put_code string Identifies between Call Options and Put Options
» date_string string Identifies the local date
» delta number Identifies the change of option price with respect to $1 change in the underlying price
» expiration_date string Expiration in YYYYMMDD
» external_symbol string Symbol of the derivative instrument
» gamma number Identifies the measures the rate of change of its delta given $1 move in the underlying.
» implied_vol_by_expiration number Implied Volatility by Expiration
» implied_vol_extsymbol number Implied Volatility by External Symbol
» instrumentgroup string Instrument Key
» instrumenttype string Identifies the type of instrument. Possible values are Future, EquityOption, Strategy, FutureOption
» last_ask_extsymbol number Last ask price of external symbol
» last_bid_extsymbol number Last bid price of external symbol
» last_observed_price_underlying number Last observed price of underying security
» last_price_extsymbol number Last price of external symbol
» london_4pm_ask number The observed market-wide ask as at 4:00PM GMT or 11:00 ET / 12:00 EST to be used by European firms who are marking-to-market
» london_4pm_bid number The observed market-wide bid as at 4:00PM GMT or 11:00 ET / 12:00 EST to be used by European firms who are marking-to-market
» london_4pm_price number The observed market-wide price as at 4:00PM GMT or 11:00 ET / 12:00 EST to be used by European firms who are marking-to-market
» open_interest integer Total number of outstanding derivative contracts that have not been settled for an asset.
» option_input_price number Option price used as input for greeks and Implied Volatility calculation
» option_type string Identifies between American and European Options
» putcallratio_byoi number Put Call Ratio by Open Interest
» putcallratio_byvolume number Put Call Ratio by Volume
» referenceprice string Reference Price
» rho number Identifies the measures the change of the option price with respect to 1% increase in volatility
» roll_volume integer Volume Activity for Roll Activity per instrument group. The metric is only available to futures roll actitivities identified by 'Strategy' in the 'intrumenttype' column.
» settlement_price number Settlement Price
» strike_price number Strike Price of Option
» theta number Identifies the measures the loss of the option value with passage of one day
» trade_count integer For each trading day, number of trades during regular market session (9:30 am to 4:00 pm)
» trade_value number For each trading day, trade value during regular market session (9:30 am to 4:00 pm)
» trade_volume integer For each trading day, trade volume during regular market session (9:30 am to 4:00 pm)
» underlying_symbol string Underlying Symbol (if applicable) For SSF: ticker of the Underlying Stock or ETF
» vega number Identifies the measures the change of the option price with respect to 100 bp increase in interest rate

US (Equities) - Core

Trades

Contains all trades across all the covered US venues

Field Name Data Type Description
Time Timestamp Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds.
Time Nanos Bigint Identifies timing of the message with precision in nanoseconds
Symbol Varchar Identifies the Ticker symbol of the security
Venue Varchar Identifies the venue where the trade occurred
Listing_exchange Varchar Identifies the exchange on which the security has been listed
Price Decimal(28,5) Identifies the price of the trade
Trade Size Bigint Identifies the size of the trade
Trade Seq Num Bigint Identifies the Sequence number for the event type.
Trade ID Varchar Identifies the Unique identifier for the Trade within the current trading period. This is typically the unique sequence number of the trade.
Trade Condition Varchar Identifies the Qualifier or qualifiers for the Trade, as reported by the Source.
Currency Varchar Represents the currency of the trade
Localseq Bigint Used to sort orders on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
Record_type Integer "Record type indicator:
1 = Trade
2 = Tick
3 = BBO_Quote
4 = Trade Correction
5 = Trade Cancel
6 = Trade non Regular"
Date String Varchar Identifies the UTC date on which the trade was executed
Source Varchar Identifies the source feed of the data

Quotes

Contains top of book (level 1) quotes from each visible US venue

Field Name Data Type Description
Time Timestamp Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds.
Time Nanos Bigint Identifies timing of the message with precision in nanoseconds
Symbol Varchar Identifies the Ticker symbol of the security
Venue Varchar Identifies the venue where the quote was placed
Bid Size Bigint Identifies the size of the bid
Bid Price Decimal(28,5) Identifies the price of the bid
Ask Price Decimal(28,5) Identifies the price of the ask
Ask Size Bigint Identifies the size of the ask
Quote Qualifier Varchar Normalized set of qualifiers for this Quote.
Quote Condition Varchar wCondition (specific to CTA/UTP) - Feed-specific condition, usually normalized to the wSecurityStatus, wQuoteQualifier and/or wTradeQualifier fields.
Quote Seq Num Integer Sequence number for the event type, typically provided by the Source.
Localseq Bigint Used to sort orders on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
Date String Varchar Identifies the UTC date on which the order was placed
Source Varchar Identifies the UTC date on which the trade was executed
Quote Record Type Varchar Identifies the source feed of the data

NBBO

Column Type Description
time timestamp "Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds. (UTC)"
symbol varchar Identifies the Ticker symbol of the security
bid_price decimal(28,5) Identifies the price of the national best bid across all venues
ask_price decimal(28,5) Identifies the price of the national best ask across all venues
localseq bigint Used to sort quotes on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
time_nanos bigint Identifies time with precision in nanoseconds
date_string varchar Identifies the local date

US (Equities) - Analytical

One-minute Bars for Trades

US trades data aggregated in one minute bars with metrics such as open, high, low, close, vwap, number of trades excluding blocks etc. for each one minute bar.

Specifications

Particular Value
Grapevine Table Name us_trades_1min
Data Available Since 01/02/2018
Name Type Description
» bin_end string Identifies timestamp at which one-minute time bin ends (UTC)
» bin_start string Identifies timestamp at which one-minute time bin starts (UTC)
» close number Price of Last Trade in the associated time bin
» date_string string Local Date
» high string Price of Highest Trade in the associated time bin
» low number Price of Lowest Trade in the associated time bin
» open number Price of First Trade in the associated time bin
» symbol string Ticker symbol of the security
» volume number Total number of shares traded in the associated time bin
» volume_ex_block number Total number of shares traded in the associated time bin excluding block trades defined as trades where (traded value > $500,000) OR (traded volume > 10,000 shares AND traded value > $100,000 )
» vwap number Trade Volume weighted average price Sum((Trade1Shares*Price)+(Trade2Shares*Price)+…) /TotalShares.
» vwap_ex_block number Trade Volume weighted average price Sum((Trade1Shares*Price)+(Trade2Shares*Price)+…) /TotalShares excluding block trades defined as trades where (traded value > $500,000) OR (traded volume > 10,000 shares AND traded value > $100,000 )

One-second Bars for Trades

US trades data from all marketplaces aggregated in one second bars with metrics such as open, high, low, close, vwap, number of trades excluding blocks etc. for each one second bar.

Specifications

Particular Value
Grapevine Table Name us_trades_1sec
Data Available Since 01/03/2017
Name Type Description
» symbol string Ticker symbol of the security
» bin_start timestamp Identifies timestamp at which one-second time bin starts (UTC). For second bars is HHMMSS
» bin_end timestamp Identifies timestamp at which one-second time bin ends (UTC).For second bars is HHMMSS
» open double Price of First Trade in the associated time bin
» high double Price of Highest Trade in the associated time bin
» low double Price of Lowest Trade in the associated time bin
» close double Price of Last Trade in the associated time bin
» volume bigint Total number of shares traded in the associated time bin
» volume_ex_block bigint Total number of shares traded excluding blocks. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» vwap double Trade Volume weighted average price. Sum((Trade1Shares*Price)+(Trade2Shar es*Price)+…) /TotalShares.
» vwap_ex_block double Trade Volume weighted average price excluding blocks - Sum((Trade1Shares*Price)+(Trade2Shar es*Price)+…) /TotalShares. Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000
» date_string string Identifies the local date

One-minute Bars for Quotes

US quotes data from all marketplaces aggregated in one minute bars with metrics such as open, high, low, close, number of quotes etc. for each one minute bar.

Specifications

Particular Value
Grapevine Table Name us_quote_bar_1min
Data Available Since 01/02/2018
Name Type Description
» symbol varchar Ticker symbol of the security
» barstarttime varchar Open Time of the Bar, for example one minute: 11:03:00.000
» highbidprice decimal(28,5) Highest NBBO Bid Price of bar
» lowaskprice decimal(28,5) Lowest NBBO Ask price of bar
» openbartime timestamp Open Time of the Bar, for example one minute: 11:03:00.000
» openbidprice decimal(28,5) NBBO Bid Price as of bar Open
» openaskprice decimal(28,5) NBBO Ask Price as of bar Open
» closebartime timestamp Close Time of the Bar, for example one minute: 11:03:59.999
» closebidprice decimal(28,5) NBBO Bid Price at bar Close
» closeaskprice decimal(28,5) NBBO Ask Price at bar Close
» numquotes bigint Number of Quotes in associated time bin
» date_string varchar Identifies the local date

One-second Bars for Quotes

US quotes data from all marketplaces aggregated in one second bars with metrics such as open, high, low, close, number of quotes etc. for each one second bar

Specifications

Particular Value
Grapevine Table Name us_quote_bar_1sec
Data Available Since 01/02/2018
Name Type Description
» symbol varchar Ticker symbol of the security
» barstarttime varchar Identifies timestamp at which one-second time bin starts (EST). For second bars is HHMMSS. Example: One second bar 130302 is from time greater than 130302.000 to 130302.999
The second level granularity is optional. Time can be entered in minutes as well, for example 09:30
» highbidprice decimal(28,5) Highest NBBO Bid Price of bar
» lowaskprice decimal(28,5) Lowest NBBO Ask price of bar
» openbartime timestamp Open Time of the Bar
» openbidprice decimal(28,5) NBBO Bid Price as of bar Open
» openaskprice decimal(28,5) NBBO Ask Price as of bar Open
» closebartime timestamp Close Time of the Bar
» closebidprice decimal(28,5) NBBO Bid Price at bar Close
» closeaskprice decimal(28,5) NBBO Ask Price at bar Close
» numquotes bigint Number of Quotes in associated time bin
» date_string varchar Identifies the local date

TAQ NBBO

Includes US trades data from all marketplaces and National Best Bid and Offer pricing prevailing at the time of the trade in one data set

Specifications

Particular Value
Grapevine Table Name us_taq_nbbo
Data Available Since 01/02/2018
Name Type Description
» symbol varchar(10) Ticker symbol of the security
» trade_time timestamp Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds.
» trade_localseq bigint Used to sort trades on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
» trade_venue string Identifies the venue where the trade occurred
» record_type int Record type indicator:
1 = Trade
2 = Tick
3 = BBO_Quote
4 = Trade Correction
5 = Trade Cancel
6 = Trade non Regular
» total_bid_size bigint Total available national best bid volume from all venues
» best_bid decimal(28,5) National Best Bid prevailing at the time of trade
» total_ask_size bigint Total available national best ask volume from all venues
» best_ask decimal(28,5) National Best Ask prevailing at the time of trade
» trade_size bigint Identifies the size of the trade
» trade_price decimal(28,5) Identifies the price of the trade
» trade_count int Identifies the no. of trades prevailing at the time of trade
» trade_id string Unique trade identifier
» trade_condition string US trade conditions:
Trade Conditions
Key Description
@ Regular Trade
A - Acquisition *
B - Bunched Trade *
C - Cash Trade
D - Distribution *
F - Intermarket Sweep *
G - Bunched Sold Trade **
H - Price Variation Trade
I - Odd Lot Trade
K - Rule 155 Trade (AMEX) *
L - Sold Last *
M - Market Center Close Price **
N - Next Day
O - Opening Prints *
P - Prior Reference Price **
Q - Market Center Official Open **
R - Seller
S - Split Trade *
T - Form T
U - Extended Trading Hours (Sold Out Of Sequence)
V - Contingent Trade
W - Average Price Trade
X - Cross / Periodic Auction Trade *
Y - Yellow Flag Regular Trade *
Z - Sold (Out Of Sequence) **
1 Stopped Stock – Regular Trade *
2 Stopped Stock – Sold Last *
3 Stopped Stock – Sold (Out Of Sequence) **
4 Derivatively Priced **
5 Re-Opening Prints
6 Closing Prints *
7 Qualified Contingent Trade
9 Corrected Consolidated Last price (per listing market) ** xs
* These trade conditions will update the last price.
** These trade conditions will update the last price if it’s the only qualifying last.
*** These trades do not update the cumulative volume.
» time_nanos bigint Identifies the nanosecond precision (nanosecond only) of the applicable timestamp
» tradeunix bigint Identifies the trade time in UNIX timestamp
» date_string string Identifies the local date

CBBO

Includes multi-market Best Bid and Offer pricing data that will allow clients to price orders at or between the best bid and best offer among multiple US marketplaces. Lists all venues and size for each venue at CBBO and includes pre-open hours for multiple marketplaces.

Specifications

Particular Value
Grapevine Table Name us_cbbo
Data Available Since 01/02/2018
Name Type Description
» time timestamp Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds. (UTC)
» symbol string Ticker symbol of the security
» bid decimal(28,5) Identifies the price of the national best ask across all venues
» bid_venues array List of venues at best bid
» ask_venues array List of venues at best ask
» bid_sizes array Bid size offered by each venue in same order as list of bid_venues
» ask_sizes array Ask size offered by each venue in same order as list of ask_venues
» time_nanos bigint Identifies the nanosecond precision (nanosecond only) of the applicable timestamp
» localseq bigint Used to sort quotes on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
» date_string varchar Identifies the local date

Advanced Daily Stats

Contains advanced daily statistics such as seconday close price, avgerage top of the book bid/ask volume, quoted spreads, effective spreads and trading volumes/count/value metrics across Canadian and US venues. Metrics pertaining to Canada - Covers trading activity across all Canadian marketplaces. Symbol coverage extends to all Canadian symbols as well.

Specifications

Particular Value
Grapevine Table Name us_adv_dailystats
Data Available Since 01/02/2018
Name Type Description
» symbol string Ticker symbol of the security
» ca_symbol string Identifies the ticker symbol of the security on the Canadian exchange
» secondaryclose decimal(28,5) Secondary close price identified as midpoint of the NBBO at 3:59.00.0000 PM EST
» avgbidvol decimal(28,5) Total average bid volume at top price level (NBB) across all US marketplaces on a symbol at any given time, average taken over previous 30 days using 1 second snapshots
» avgaskvol decimal(28,5) Total average offer volume (NBO) across all US marketplaces on a symbol at any given time, average taken over previous 30 days using 1 second snapshots
» avg_sprd_cent decimal(28,5) Average daily quoted spread (spread = ask price-bid price) based on 1 second buckets when there are valid quotes for both bid & ask
» avg_sprd_bps decimal(28,5) Average daily quoted spread. Spread bps = (ask price-bid price) / midpoint *10000 based on 1 second buckets when there are valid quotes for both bid & ask
» effective_sprd_cent decimal(28,5) Effective Spread = 2 X
» effective_sprd_bps decimal(28,5) Effective Spread (bps) = Effective spread/midpoint *10000. Using same example as above: if NBBO is 1.00 - 1.05 and a trade occurs at 1.03 --> Eff spread (bps) = 2 X (1.03-1.025)/1.025 x10000 = 1bps
» trade_count_ca bigint For each trading day, number of trades across all Canadian venues account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» daily_volume_ca bigint For each trading day, total traded volume across all Canadian venues account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» daily_trading_value_ca bigint For each trading day, total traded value across all Canadian venues account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» trade_count_us bigint For each trading day, total traded volume across all US venues account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» daily_volume_us bigint For each trading day, total traded volume across all US venues account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» daily_trading_value_us bigint For each trading day, total traded value across all US venues account for cancelled trades during regular market session (9:30 am to 4:00 pm)
» date_string string Identifies the local date

Daily Stats

Contains daily statistics such as open, high, low, close, total volume, volume_moo, volume_moc, vwap, volatility30_pct, volatility60_pct. Covers trading activity across all US marketplaces. Symbol coverage extends to all US symbols as well

Specifications

Particular Value
Grapevine Table Name us_dailystats
Data Available Since 01/03/2017
Name Type Description
» symbol string Ticker symbol of the security
» volume_block bigint Total number of shares traded in blocks
Block definition: abs(volume) >= 10,000 shares & abs(value) >= $100,000. Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» volume_moo bigint For each trading day, total opening auction volume. MOO volume is inferred as the volume in the first 10 milliseconds after 9:30 EST excluding all crosses
» volume_moc bigint For each trading day, total closing auction volume inferred as trades flagged as MOC trades, excluding all crosses
» volume_odd_lot bigint For each trading day, total odd lot volume across all venues during regular trading hours. Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» total_adjvolume bigint For each trading day during regular market session(9.30 - 16:00), total adjusted volume adjusted for crosses, blocks and oddlots
Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» total_adjvalue decimal(28,5) For each trading day during regular market session(9.30 - 16:00), Total adjusted value traded adjusted for crosses, blocks and oddlots. Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» total_adjcount bigint For each trading day during regular market session(9.30 - 16:00), Total adjusted count of trades adjusted for crosses, blocks and oddlots. Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» intraday_high decimal(28,5) Intra-day high price across all venues between 9:30 and 16:00 excluding oddlots excluding crosses
» intraday_low decimal(28,5) Intra-day low price across all venues between 9:30 and 16:00 excluding oddlots excluding crosses
» first_observed_price decimal(28,5) The first board-lot trade as of standard open time (9:30 am) using logic:
1) Open auction price based on auction flag,
2)if no auction price occurrs, then take the first observed trade price on all marketplaces/ATS's, ignoring any pre-market trades
» fop_venue string The venue for which is supplying the FOP for that day
» fop_time_eastern timestamp The exchange-published timestamp (milliseconds or nanoseconds) from the FOP
» last_observed_price decimal(28,5) The last board-lot trade as of standard close time (16:00) using logic:
1) closing auction price, (MOC)
2) if no auction price occurrs, then take the last observed trade price on all marketplaces/ATS's, ignoring any after-market/extended trading session trades (e.g.16:00 - 17:00 in Canada,16:00 -20:00 in the US) which are often mis-priced
» lop_venue string The venue for which is supplying the LOP for that day
» lop_time_eastern timestamp The exchange-published timestamp (milliseconds or nanoseconds) from the LOP
» avg_advolume30 bigint Average per day traded volume excluding blocks, odd lots, crosses(i.e. , accounting for cancelled trades over the previous 30 calendar days
» vwap30 decimal(28,5) volume-weighted mean of price observations over previous 21 trading days, calculate across all observations across all marketplaces
» vwap60 decimal(28,5) volume-weighted mean of price observations over previous 42 trading days, calculate across all observations across all marketplaces
» intraday_volatility_pct decimal(28,5) 1 standard deviation, calculate across all observations across all marketplaces - will not be relevant for illiquid securities that trade infrequently --- will use mid-point for this calculation to circumvent the illquid issue, taking 1- minute snapshot to estimate 1-day volatility in percent
» volume_cross bigint For each trading day, total cross volume across all venues during regular hours (09:30 - 16:00). Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» volume_pre_market bigint For each trading day, total volume across all venues during pre-market hours (06:30 - 9:30). Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» volume_post_market bigint For each trading day, total volume across all venues during postmarket hours (16:00 - 20:00). Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» total_trade_count bigint For each trading day, number of trades across all US venues account for cancelled trades during regular market session (9:30 - 16:00)
» total_daily_volume bigint For each trading day, total traded volume across all US venues account for cancelled trades during regular market session (9:30 - 16:00)
» total_daily_value bigint For each trading day, total traded value across all US venues account for cancelled trades during regular market session (9:30 - 16:00)
» date_string string Identifies the local date

Basic Daily Stats

Contains essential daily statistics such as open, high, low, close, trade count aggregations, trade volume aggregations, trade value aggregations, vwap, volatility metrics, shares outstanding and market capitalization. Covers trading activity across all US marketplaces. Symbol coverage extends to all US symbols as well.

Specifications

Particular Value
Grapevine Table Name us_basic_dailystats
Data Available Since 01/03/2017
Name Type Description
» symbol string Ticker symbol of the security
» first_observed_price decimal(28,5) The first trade as of standard open time (9:30 am) using logic::
1) Trade with trade_condition 'O'
2)if no trade with trade condition 'O' found, then take the first observed trade price on all marketplaces/ATS's, ignoring any pre-market trades (e.g. 8:00-9:30)
» intraday_high decimal(28,5) Intra-day high price across all venues between 9:30 am and 4:00 pm excluding oddlots including crosses
» intraday_low decimal(28,5) Intra-day low price across all venues between 9:30 am and 4:00 pm excluding oddlots including crosses
» last_observed_price decimal(28,5) The last trade as of standard close time (4:00 pm) using logic:
1) closing Print (trade condition = 6)
2) if no closing print available, then take the last observed trade price on all marketplaces/ATS's, ignoring any after-market/extended trading session trades (e.g. 4-5pm in Cda, 4-8pm in the US) which are often mis-priced
» london_4pm_price decimal(28,5) The observed market-wide trade price as at 4:00PM London time to be used by European firms who are marking-to-market
» total_trade_count bigint For each trading day, no. of trades including oddlots, account for cancelled trades during regular market session (6:30 am to 8:00 pm). Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» total_daily_volume bigint For each trading day, total traded volume including oddlots, account for cancelled trades during regular market session (6:30 am to 8:00 pm). Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» total_daily_value bigint For each trading day, total traded value including oddlots, account for cancelled trades during regular market session (6:30 am to 8:00 pm). Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» avg_30day_trade_count bigint Average daily number of trades per day, over previous 30 days ie including odd lots, include blocks, auctions, account for cancelled trades over the previous 30 calendar days. Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» avg_30day_daily_volume bigint Average per day traded volume ie including odd, include blocks, auctions, account for cancelled trades over the previous 30 calendar days. Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» avg_30day_daily_value bigint Average daily value traded ie including odd lots, include blocks, auctions, account for cancelled trades over the previous 30 calendar days. Exclude trade conditions that do not update cumulative volumes such as : M, Q, 9.
» twap_30day decimal(28,5) Average of the adjusted OHLC price over previous 21 trading days.
» twap_60day decimal(28,5) Average of the adjusted OHLC price over previous 42 trading days.
» volatility30_pct decimal(28,5) 1 standard deviation, calculate across all observations across all marketplaces - commonly used industry view of short term volatility
» volatility60_pct decimal(28,5) 1 standard deviation, calculate across all observations across all marketplaces - most commonly industry accepted view of long term volatility
» shares_outstanding bigint Shares outstanding refer to a company's stock currently held by all its shareholders, including share blocks held by institutional investors and restricted shares owned by the company’s officers and insiders.
» mkt_cap bigint Show Shares Outstanding * Most recent Official Closing Price
» date_string string Identifies the local date

Corp Action & Ref Data

Issuers

Contains list of securities issued on TSX and TSXV

Name Type Description
» company_name string Name of the company issuing the security
» cusip string Identifies the nine character alphanumeric code that identifies a North American financial security for the purpose of facilitating clearing and settlement of trades
» date_string string Identifies the date on which the issue continued to be listed on the exchange
» fund_family string Identifies the fund family an ETF belongs to
» interlisted_exchange string Identifies the secondary listing exchange if the security is interlisted
» is_etf number Flag for identifying if the security being issued is an etf or not
» is_fund_of_funds string Boolean to identify if an ETF is a fund of funds
» issue_list_date string Identifies the date the security was issued
» issue_long_name string Entire name of the security
» issue_short_name string Truncated name of the security being issued
» listing_exchange string Identifies the exchange on which the security being issued has been listed
» security_type string Identifies the type of the security being issued
» segment string Identifies the segment (industry) of the security being issued
» symbol string Identifies the Ticker symbol of the security
» timeseries_id string Unique identifier for security, stays consistent across time even if the underlying symbol changes
» us_symbol string Identifies the ticker of the security on the US exchange
» year number Identifies the year in which the record was added to the dataset

Global Corporate Actions

Contains corporate actions data for a global universe of securities

Field name Data Type Description
Action String Event Level Action Status
Changed Date String Date event updated.
CIK String Central Index Key
Country of Incorp String ISO Country of Incorporation of Issuer
Created Date String Date event first entered
Currency String ISO Currency Code
Date String String Identifies the local date
Dates Map<String, String> Type of calendar date
Default Opt String Paytype flag
Defunct String BOOLEAN
Event Code String Event type code
Event ID String Unique global Event Identifier combined with Event type code
Exchange Code String EDI maintained Exchange code. Equivalent to the MIC code but necessary as MIC might not be available in a timely fashion.
Exchange Country String Country of Exchange where listed
Fields Map<String, String> Name of Event specific Field
Fractions String Fractions
Indus ID String Proprietary Industry Sector Code
Instrument Exchange ID String Unique global level Listing ID
Isin String ISIN code (global level identifier)
Iss ID String Indicates whether a security is Listed on an Exchange or Unlisted Indicates Exchange
List Status String Indicates whether a security is Listed on an Exchange or Unlisted Indicates Exchange Listing Status
Issuer Name String Name of Issuer
Localseq Bigint Used to sort orders on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
Mic String ISO standard Market Identification Code
Mic Seg String ISO standard Market Identification Code
Option ID String Multiple Payment Option ID - Groups together multiple elements that comprise a complete payment option e.g. Part Cash, part Stock
Outturn isin String ISIN code outturn. These can be resultant OR successor codes
Outturn sec ID String Security ID for an outturn security if any. Where successor the outturn SecID will be the same as the parent SecID
Par Value String Security par value
Par Value Currency String Security par value Currency
Pay Type String Paytype flag
Primary Exchange Code String Exchange code for the primary listing (empty if unknown)
Priority String Indicates order of events where record date is shared
Rates Map<String, String> Type of of pay rate
Ratio New String Number of new shares
Ratio Old String Number of old shares. Number of New Securities the shareholder receives as a proportion of Old Securities surrendered
Rd ID String Record Date ID. Useful to link to other records sharing the same record date
Sec ID String Unique global level Security ID (can be used to link all multiple listings together
Security Code String Type of Equity Instrument
Security Description String Security Description
Sedol String The UK National Security Identification Number
Sedol Currency String Sedol Currency
Sedol ID String EDI Internal unique ID for latest Sedol
Sedol Reg Country String Registered Country of Sedol
Serial ID String Multiple Payment Serial ID - Enumerates each element of an option from a multiple payment so the combination of OptionID and SerialID
Sic String Standard Industrial Classification Code
Satus String Inactive at the global level else security is active. Not to be confused with delisted which is inactive at the exchange level
Struct Code String
Symbol String Local code unique at Market level - a ticker or number
US Code String USCode (global level identifier)

Global Security Reference

Contains security reference data for a global universe of securities

Field name Data Type Description
Action String Event Level Action Status
Changed Date String Date event updated.
CIK String Central Index Key
Country of Incorp String ISO Country of Incorporation of Issuer
Created_date String Date event first entered
Date String Bigint Identifies the local date of the transaction
Defunct String BOOLEAN
Exchange Code String EDI maintained Exchange code. Equivalent to the MIC code but necessary as MIC might not be available in a timely fashion.
Exchange Country String Country of Exchange where listed
Indus ID String EDI Proprietary Industry Sector Code
Instrument Exchange Id String Unique global level Listing ID
Isin String ISIN code (global level identifier)
Iss ID String Unique global level Issuer ID (can be used to link all securities of a company together)
Issuer Name String Name of Issuer
List Status String Indicates whether a security is Listed on an Exchange or Unlisted Indicates Exchange Listing Status
Local Seq Bigint Used to sort orders on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
Mic String ISO standard Market Identification Code
Mic Seg String ISO standard Market Identification Code
Par Value String Par value
Par Value Currency String Par value Currency
Primary Exchange Code String Exchange code for the primary listing (empty if unknown)
Sec ID String Unique global level Security ID (can be used to link all multiple listings together
Security Code String Type of Equity Instrument
Security Description String Security Description
Sedol String The UK National Security Identification Number
Sedol Currency String Sedol Trading Currency
Sedol ID String EDI Internal unique ID for latest Sedol
Sedol Red Country String Registered Country of Sedol
SIC String Standard Industrial Classification Code
Status String Inactive at the global level else security is active. Not to be confused with delisted which is inactive at the exchange level
Struct Code String Unique global level Listing ID
Symbol String Local code unique at Market level - a ticker or numbe
US Code String USCode (global level identifier)

FTSE Russell Industry Classification Benchmark (ICB)

FTSE Russell’s ICB is a comprehensive, rules-based, and transparent classification methodology based on research and market trends and designed to support investment solutions. It was launched in 2005 and enhanced in 2019 with the integration of the Russell Global Sectors (RGS) classification scheme and additional structural enhancements.

Industry Classification Benchmark (ICB) data is available for trading desks, asset managers and investment product teams looking for sector-specific data and insights.

For more information on ICB methodology/ICB Structure & Codes please visit:
ICB page on FTSE Russell's website
ICB Structure & Definitions
ICB Codes & Descriptions

Specifications

Particular Value
Grapevine Table Name ftse_icb
Data Available Since 05/31/2019
Name Type Description
uid string Security unique identification code. Example : C73150
isin string Security ISIN code. Example: ES0148396007
sedol string Security ticker. Example: BP9DL90
cusip string Security CUSIP code for North American companies. Example: 92342Y109
ticker string Local exchange code. Example: ITX
name string Name of security. Example: Inditex S.A.
entity_id string Unique company code. Example: 134970
country string FTSE Nationality, Country code. Example: ES
domicile string Country of domicile code. Example: ES
mic string Market Segment MIC code. Example: XMAD
industry string ICB Industry classification code. Example: 15
supersector string ICB Supersector classification code. Example: 1510
sector string ICB Sector classification code. Example: 151020
subsector string ICB Subsector classification code. Example: 15102015
ticker_and_exchange string Bloomberg Ticker followed by Bloomberg Exchange Code with a space in between. Example: ITX SQ
date_string string Identifies the local date

Global Symbols

Contains security reference and corporate actions data such as dividends and splits.

Name Type Description
» country_code string Identifies the country the security trades in
» currency string ISO Currency Code
» cusip string Identifies the nine character alphanumeric code that identifies a North American financial security for the purpose of facilitating clearing and settlement of trades. (This will only be available to client having license to access this column)
» date_string string Identifies the local date
» exchange string Identifies the trading venue
» isin string ISIN code (global level identifier). (This will only be available to client having license to access this column)
» price_offset number Identifies the dividend on the ex-dividend date (ex-dividend date can be isolated by searching for non-zero values)
» price_ratio number Identifies the price ratio for splits (can be used for volume transformations as well)
» primary_exchange string Identifies the exchange on which the security being issued has been listed
» rev_price_ratio number Identifies the price ratio to adjust for splits going back in time (can be used for volume transformations as well)
» security_type string Identifies the type of the security being issued
» sedol string The UK National Security Identification Number. (This will only be available to client having license to access this column)
» shares_outstanding number Identifies the number of shares outstanding
» symbol string Identifies the Ticker symbol of the security
» timeseries_id string Unique identifier for security, stays consistent across time even if the underlying symbol changes
» year string Identifies the year

Global Symbols Delta

Name Type Description
» date_string string Identifies the local date
» exchange string Identifies the trading venue
» new_cusip string Identifies the nine character alphanumeric code that identifies a North American financial security for the purpose of facilitating clearing and settlement of trades
» new_isin string ISIN code (global level identifier)
» new_price_ratio number Identifies the price ratio for splits (can be used for volume transformations as well)
» new_primary_exchange string Identifies the exchange on which the security being issued has been listed
» new_rev_price_ratio number Identifies the price ratio to adjust for splits going back in time (can be used for volume transformations as well)
» new_sedol string The UK National Security Identification Number
» new_shares_outstanding number Identifies the number of shares outstanding
» new_symbol string Identifies the Ticker symbol of the security
» price_offset number Identifies the dividend on the ex-dividend date (ex-dividend date can be isolated by searching for non-zero values)
» symbol string Identifies the Ticker symbol of the security
» timeseries_id string Unique identifier for security, stays consistent across time even if the underlying symbol changes

Corporate Action Adjustments

The feature provides greater ease of use for users by automatically applying our corporate actions adjustment ratio to the respective data set. Users may optionally identify whether they would like adjusted or unadjusted data and the end date in which the adjustment will be applied when calling data from the following tables:

  • 1 sec orders CA
  • 1 sec trades CA
  • 1 sec quotes US
  • 1 min orders CA
  • 1 min trades CA
  • 1 min quotes US
  • TAQ_nbbo CA
  • TAQ_nbbo US

By default, all our data is unadjusted to capture the original state of the order book at that point in time, unless the user specifies a value in the boolean parameter as follows:

adjusted = True/False
adjustedForDate = date string YYYY-MM-DD

For clients building queries in Grapevine Notebooks, all clients have access to our Global Symbols table, and users may incorporate the rev_price_ratio adjustment factor into their queries where appropriate. If the adjustment ratio (rev_price_ratio) is 0 though, the value remains unadjusted for that day.

Adjusted:

Unadjusted:

FX

Foreign Exchange

Contains FX rates for 24 currencies. A total of five “rate” tiers are provided, with quantity, bid and ask information for each tier. Each of the tiers represent the available quantity as expressed in the first currency of the pair.

For example:

Qty Represented Interpretation using EUR/USD as an example
1,000,000 1 million Euro available at the advertised EUR/USD bid/ask
5,000,000 5 million Euro available at the advertised EUR/USD bid/ask
10,000,000 10 million Euro available at the advertised EUR/USD bid/ask
20,000,000 20 million Euro available at the advertised EUR/USD bid/ask
40,000,000 40 million Euro available at the advertised EUR/USD bid/ask

To fill a Tier 5 order (40 million quantity), multiple smaller orders would have to be sweeped, so the price you see in Tier 5, is the average price you'd get from multiple smaller orders.

The following notation can be used to identify the FX pair:
to_curr: Price currency (numerator)
from_curr: Base currency (denominator)

We have 552 FX pairs spanning the 24 currencies listed underneath

Supported FX Currencies

Currency ID
Australian Dollar AUD
Canadian Dollar CAD
Swiss Franc CHF
Chinese Yuan (offshore) CNH
Czech Koruna CZK
Danish Krone DKK
Euro EUR
Pound Sterling GBP
Hong Kong Dollar HKD
Forint HUF
Israeli New Sheqel ILS
Japanese Yen JPY
Mexican Peso MXN
Norwegian Krone NOK
New Zealand Dollar NZD
Polish Zloty PLN
Romanian Leu RON
Russian Ruble RUB
Swedish Krona SEK
Singapore Dollar SGD
Thai Baht THB
Turkish Lira TRY
United States Dollar USD
South African Rand ZAR



Field name Data Type Description
To Curr String Identifies the Price currency
Time Timestamp Identifies date, hours, minutes, seconds and milliseconds in the following format: ‘YYYY-MM-DD HH:MI:SS.Milliseconds‘ (UTC)
Local seq Bigint Used to sort orders on a sequential basis. It is used as a secondary filter after time and time_nanos (if available).
Tier1 Qty Int Represents the available Quantity as expressed in the First Currency of the pair
Tier1 Bid Decimal(20,5) Bid price for Tier 1
Tier1 Ask Decimal(20,5) Ask price for Tier 1
Tier2 Qty Int Represents the available Quantity as expressed in the First Currency of the pair
Tier2 Bid Decimal(20,5) Bid price for Tier 2
Tier2 Ask Decimal(20,5) Ask price for Tier 2
Tier3 Qty Int Represents the available Quantity as expressed in the First Currency of the pair
Tier3 Bid Decimal(20,5) Bid price for Tier 3
Tier3 Ask Decimal(20,5) Ask price for Tier 3
Tier4 Qty Int Represents the available Quantity as expressed in the First Currency of the pair
Tier4 Bid Decimal(28,5) Bid price for Tier 4
Tier4 Ask Decimal(28,5) Ask price for Tier 4
Tier5 Qty Int Represents the available Quantity as expressed in the First Currency of the pair
Tier5 Bid Decimal(28,5) Bid price for Tier 5
Tier5 Ask Decimal(28,5) Ask price for Tier 5
Date String String Partition Key
From Curr String Identifies the Base currency. Partition key

Cluster Management

Logging in & Launching Your Cluster

Central Login

Go to https://apps.tmxanalytics.com

If you have subscribed to multiple TMX Global Analytics products, use the left side drop down menu, and select Grapevine

New users must first turn on or ‘launch’ their cluster of nodes. Under Actions, click on the icon to launch the cluster. If you have multiple clusters, you will see each cluster listed in the rows of this table.

Upon launch, you will be redirected to our Zeppelin notebook environment, which should look like the screenshot shown underneath. Use the same login credentials as used for the TMX Analytics login.

Zeppelin Notebooks is a programmatic interface that allows users to conveniently access the TMX Global Analytics data lake. If you are not familiar with notebook environments, the Zeppelin user guide provides many helpful tips.

Default Cluster Configuration

A TMX Global Analytics subscription by default consists of 1 cluster of 5 CPU nodes, which together provide the minimal acceptable performance for most functions and use cases.

If you are on a free trial, your cluster size and datasets may be limited. Please speak to your TMX Global Analytics representative if you aren’t sure what you are enabled for.

Adding/Managing Nodes

As the complexity of your use grows, you may experience slower performance as your nodes begin competing for resources. Or, if you are temporarily processing large jobs, you may wish to add additional nodes in order to facilitate a faster processing time. Nodes can be managed using the gear icon underneath the Actions column on the Grapevine tab on TMX Analytics.

Clicking on the gear icon should show you the following page where you can customize the number of nodes that you want at any given point of time.

In the example above, our cluster size has currently been set to 2 nodes. This can be adjusted by scrolling the blue pointer to the right which increases the number of active nodes to a maximum of 20. Please allow approximately 15-20 minutes for the nodes to get activated or deactivated (based on the change you make). If you wish to run more than 20 nodes, please contact datasupport@tmx.com. While efforts will be made to process these requests immediately, please allow 1 business day to process your request.

* Important *
TMX Grapevine allows you to manage your expenses by managing your nodes according to your budget. Turning them on/off according to your use is the responsibility of the client.

Launching the Cluster

Click on the box with the diagonal arrow in the row with the relevant cluster (identifiable by the cluster name) as shown in the image underneath.

Turning off the Cluster

From the main login page, under Actions, simply click on the ‘X’ in the row of the relevant cluster.

* Important *
All work in your notebook is automatically saved however any data residing on your nodes/cluster, including work completed via SSH access are lost each time the cluster is reset. If you wish to save this data for a future time, please see the next section ‘Storing Data in S3’.

Using Notebooks

As an interface to TMX Global Analytics data,TMX Grapevine leverages Apache Zeppelin, a web-based notebook that enables interactive data analytics. With this notebook, you can create data-driven, interactive and collaborative documents using SQL or Python, and the compute used to process these functions is provided by your assigned cluster of nodes.

Getting Started Notebook

If it is your first time logging in, we recommend you review the pre-installed “Getting Started with TMX Analytics” notebook, by selecting it from the drop down menu.

This provides an outline of all relevant tables, global list of columns, and metadata.

As you scroll down the notebook, you will see numerous examples of queries you may be interested in. These examples are designed to illustrate various ways you can access data from our data lake.

Each notebook consists of ‘paragraphs (boxes)’ that each run their own code base in the editor, and can display the results/output in the same box. You can easily view the code snippet for each paragraph by clicking on the Show/Hide Editor icon in the top right corner of each paragraph, and can similarly Show/Hide the Output using the icon .

Creating a New Note

You may create a new note by clicking on the drop down menu.

Defining an Interpreter / Programming Language

TMX Global Analytics supports SQL and Python programming languages. SQL is recommended for simple statistics calculations including data aggregation, filtering, calculating averages, etc. while Python is recommended for more advanced or complex queries.

In order to use a specific programming language, a paragraph needs an associated Interpreter, which will instruct the environment how to run the content of the paragraph. In order to specify the interpreter, the first line of a paragraph must be a directive that starts with “%” followed by the interpreter to use. There are several interpreters available, but the most commonly used ones are %presto for SQL, and either %python or %pyspark for Python. The table below describes what they offer.

Supported Interpreter When to Use It
%presto Use for SQL
%python Use for Python
%pyspark Use for Python optimized for Spark - there is very little difference in this interpreter from the python interpreter, but we recommend using this by default in python
%md Use for documentation (in the markdown format)

When you are done creating the new paragraph, simply click the play icon at the top right corner to run the code base.

Scheduling Recurring Jobs

If you are using Notebooks to provide recurring dashboards, you will need to schedule the dashboard to run regularly to provide updated information.

You can schedule your notebooks to run at predefined time intervals using the ‘Run scheduler’ button on Grapevine notebooks.

You can choose either from the preset time intervals such as 1m, 5m, 1h, 3h, 6h, 12h, 1d or define your own expression in cron format for the time interval. You will also need to enter the username (email address) of the person you’d like to execute the notes under. Lastly, you have the option of auto-restarting the interpreter on the scheduled run. We recommend switching on the auto-restart of the interpreter for enhanced performance.

Note: Please ensure that your cluster is running in the time period where you schedule the jobs on the Notebook. If the cluster has been switched off, the notebooks will not run even if they have been scheduled to.

Storing Data

Any data residing on your cluster is considered temporary, and will be lost upon restarting/turning off your cluster. For permanent storage, all TMX Global Analytics clients have 250GB of AWS Simple Scalable Storage (S3) storage space included with their service subscription. Excess storage consumption will be billed in accordance with your service agreement.

There are three methods to read/write data to your S3 bucket through Grapevine:

  1. Through the AWS Command Line Interface (CLI)
    AWS CLI can be used for managing multiple AWS services (if you use others beyond TMX Grapevine), as well as for automating common service and resource actions through scripts.
    For installation instructions, please refer to https://aws.amazon.com/cli

  2. Through an AWS S3 Software Development Kit (SDK)
    For more information, please refer to https://aws.amazon.com/getting-started/tools-sdks

  3. Using one of many web-based tools available on the market.
    We recommend:

Name Link Service
WinSCP https://winscp.net/eng/docs/guide_amazon_s3 Free

Security

TMX Grapevine is built with a strict security philosophy and complies with a multitude of industry standards as outlined below. Each cluster environment is fully isolated in terms of network, compute, and storage from other cluster environments. Additional risk mitigation arises from programmatic infrastructure practices that create ephemeral (a.k.a. shortly-lived) components that are designed to be reprovisioned at any time. This allows us to patch and update software quickly, and also greatly limits long-term security vulnerabilities by discouraging dataset accumulation and the use of stale packages on a long-lived cluster environment. While one side effect to this approach is that customers are required to store their work/data on S3, the end result is an environment that remains up-to-date and more secure.

Encryption

TMX Grapevine’s infrastructure footprint on Amazon Web Services is continuously measured against a number compliance standards such as:

  • ISO/IEC 27001
  • NIST 800-171r1
  • NIST 800-53r4 and
  • CIS AWS Foundations Benchmark

TMX Grapevine Clusters are backed by provisioned Elastic Compute Cloud (EC2) instances.
EC2 instances are provisioned in their own isolated EC2 subnets in a client-dedicated Virtual Private Cloud (VPC).

All TMX Global Analytics Cloud web applications including Grapevine Notebooks are accessed through HTTPS.

TMX Policy for Accessing Client Data

Similar to TMX access to clients’ private order data sent to any TMX marketplace, only staff responsible for directly supporting TMX Global Analytics products shall maintain the ability to access any client-dedicated cluster strictly for support, product development and compliance purposes. Aggregated statistics around compute and storage usage is monitored and tracked for billing purposes and this information is shared across TMX Global Analytics, Datalinx and finance divisions.

Clients may request to retain exclusive access to their cluster, however in this scenario, TMX staff would maintain the ability to monitor compute and download size rates for purposes of billing, and compliance. Client support is limited in these cases.

Billing

Invoices will be sent on a monthly basis reflecting client usage in the prior month. TMX has the capability to report mid-month on usage rates - please inquire through your TMX Global Analytics sales representative or datasupport@tmx.com.

For the latest TMX Grapevine Fee Schedule or any questions, please contact your TMX Global Analytics sales representative.

Venue Coverage

Canada

Available Data sets

  • cbbo: Contains consolidated best quote updates from all visible venues.
  • venue_bbo: Contains top of book (level 1) quotes from each Canadian visible venue. This differs from cbbo since a venue’s top of book quotes may be inferior to the consolidated best bid/offer.
  • trades: Contains all trades across all Canadian venues.
  • issuers: Contains list of securities issued on TSX and TSXV.
  • orderbook_cad: Contains all messages that update the orderbook across all venues.
Marketplace ID
Toronto Stock Exchange TSX
TSX Venture TSXV
TSX Alpha ALPHA
Nasdaq CX2 CX2
Nasdaq CXC (previously Chi-X Canada) CHIC
Nasdaq CXD (Trades Only) CXD
Aequitas - Lit AQL
Aequitas - Neo AQN
CSE - All Canadian Listed (previosly Pure Trading) PT
CSE - Listed Securities CQ
Omega OMG
Lynx LYX
Instinet Canada Cross (Trades Only) ICX
Liquidnet Canada (Trades Only) LIQ
Triact Match Now (Trades Only) TCM

US

Available Data sets

  • trades: Contains all trades across all the venues listed underneath
  • quotes: Contains top of book (level 1) quotes from each visible venue.
Marketplace ID
CBOE BYX BY
CBOE BZX BT
CBOE EDGA DA
CBOE EDGX DX
Chicago Stock Exchange MW
FINRA Alternative Display Facility QD
FINRA/Nasdaq TRF Other OTC QO
IEX Market IX
Nasdaq Q
Nasdaq BX B
Nasdaq PSX X
NYSE N
NYSE American A
NYSE Arca PA
NYSE National C

Support

The Help widget at the bottom right page can be used to raise concerns or report any issues with Grapevine. Issues can also be reported via email to TMX Support .