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 NameAPI DescriptionAPI NamePlanMonthly Call LimitSymbol CoverageLookback Days
Equity Intraday TradesOne-minute Bars for Trades (Canada)Trades - 1min CAFree100,00050Current-30
One-second Bars for Trades (Canada)Trades - 1sec CA
One-minute Bars for Trades (US)Trades - 1min US
OHLC (Canada)OHLC CA
Equity Intraday TradesOne-minute Bars for Trades (Canada)Trades - 1min CAStarter500,000100Current-30
One-second Bars for Trades (Canada)Trades - 1sec CA
One-minute Bars for Trades (US)Trades - 1min US
OHLC (Canada)OHLC CA
Equity Intraday TradesOne-minute Bars for Trades (Canada)Trades - 1min CAPremium2,000,000ALLALL
One-second Bars for Trades (Canada)Trades - 1sec CA
One-minute Bars for Trades (US)Trades - 1min US
OHLC (Canada)OHLC CA
Equity Intraday QuotesOne-minute Bars for Quotes (Canada)Quotes - 1min CAStarter500,000100Current-30
One-second Bars for Quotes (Canada)Quotes - 1sec CA
Equity Intraday QuotesOne-minute Bars for Quotes (Canada)Quotes - 1min CAPremium2,000,000ALLALL
One-second Bars for Quotes (Canada)Quotes - 1sec CA
Trades & Quotes Tick DataPremium Trades and Quotes CBBO (Canada)TAQ NBBO CAPremium100,000ALLCurrent-30
Essential Analytics for Options & FuturesMX Daily StatsMX Daily Stats CAPremium100,000ALLALL
Corporate Actions & Reference DataIssuers CAIssuers CAPremium100,000ALLALL
Global SymbolsGlobal Symbols
Global Symbols DeltaGlobal Symbols Delta
Essential Analytics for EquitiesAdvanced Daily Stats CAAdvanced Daily Stats CAPremium100,000ALLALL
Basic Daily Stats CABasic Daily Stats CA
Daily Stats CADaily Stats CA
TSX Daily Stats CATSX Daily Stats CA

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.

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 .

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 authenticateRequest 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
429 Too Many Requests 429 response None
500 Internal Server Error 500 response None

Change Password

Code samples

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Authorization' => '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',
  'Authorization': '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 'Authorization: API_KEY'

const inputBody = '{
  "confirmPassword": "string",
  "newPassword": "string",
  "oldPassword": "string"
}';
const headers = {
  'Content-Type':'application/json',
  'Authorization':'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"},
        "Authorization": []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",
  "newPassword": "string",
  "oldPassword": "string"
}

Parameters

Name In Type Required Description
body body changePasswordReq true none
confirmPassword body string true Re-enter new password
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
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 dataavailabilityCaRequest 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 Trades - 1min CA
apiName Trades - 1sec CA
apiName Trades - 1min US
apiName Quotes - 1min CA
apiName Quotes - 1sec CA
apiName TAQ NBBO CA
apiName Advanced Daily Stats CA
apiName Basic Daily Stats CA
apiName Daily Stats CA
apiName Global Symbols
apiName Global Symbols Delta
apiName Issuers
apiName MX Daily Stats
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 dataavailabilityCaResponse
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 forgotPasswordRequest 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 revokeRequest 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 advanceddailystatsCaRequest 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 advanceddailystatsCaResponse
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 basicdailystatsallCaRequest 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 basicdailystatsallCaResponse
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 dailystatsCaRequest 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 dailystatsCaResponse
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 tsxdailystatsCaRequest 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 stat
columns key_value
columns time
columns time_nanos
columns value
columns value2
columns value3
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",
      "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 tsxdailystatsCaResponse
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 basicdailystatsCaRequest 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

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 basicdailystatsCaResponse
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 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 = '{
  "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

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

Parameters

Name In Type Required Description
body body tradebar1minCaRequest true none
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

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 tradebar1minCaResponse
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 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 = '{
  "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

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

Parameters

Name In Type Required Description
body body tradebar1secCaRequest true none
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

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 tradebar1secCaResponse
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 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 = '{
  "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

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

Parameters

Name In Type Required Description
body body tradebar1minUsRequest true none
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

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 tradebar1minUsResponse
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 issuersCaRequest 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 issuersCaResponse
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 globalsymbolsRequest 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 globalsymbolsResponse
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 globalsymbolsdeltaRequest 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 globalsymbolsdeltaResponse
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 mxdailystatsCaRequest 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

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 mxdailystatsCaResponse
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 = '{
  "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

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

Parameters

Name In Type Required Description
body body quotesbar1minCaRequest true none
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

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 quotesbar1minCaResponse
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 = '{
  "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

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

Parameters

Name In Type Required Description
body body quotesbar1secCaRequest true none
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

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 quotesbar1secCaResponse
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 = '{
  "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

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

Parameters

Name In Type Required Description
body body taqnbboCaRequest true none
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

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 taqnbboCaResponse
400 Bad Request 400 response None
401 Unauthorized 401 response None
403 Forbidden 403 response None
500 Internal Server Error 500 response None

DS-UI Payments

Create Invoice No

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/payments/invoiceno',
  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/payments/invoiceno', headers = headers)

print(r.json())

URL obj = new URL("https://analyticsapi.tmxanalytics.com/v1/payments/invoiceno");
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/payments/invoiceno \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY'

const inputBody = 'false';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

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

POST https://analyticsapi.tmxanalytics.com/v1/payments/invoiceno 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/payments/invoiceno", data)
    req.Header = headers

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

POST /v1/payments/invoiceno

Create Invoice No

Body parameter

false

Example responses

200 Response

{
  "items": [
    {
      "invoiceNo": 0
    }
  ]
}

Responses

Detailed description of error codes is explained in section Errors.

Status Meaning Description Schema
200 OK 200 response createInvoiceNoResponse
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

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

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

Change Password

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

Change Password

Properties

Name Type Required Restrictions Description
confirmPassword string true none Re-enter new password
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

Create Billing Info

[
  {
    "billGeneratedBy": "string",
    "billGeneratedDate": "string",
    "billUpdatedBy": "string",
    "billUpdatedDate": "string",
    "billingEndDate": "string",
    "billingStartDate": "string",
    "calculatedBillAmount": 0,
    "createdAt": "string",
    "createdBy": "string",
    "finalAmount": 0,
    "firstTimeData": "string",
    "inputBillAmount": 0,
    "invoiceNo": "string",
    "noOfUsers": 0,
    "paymentDate": "string",
    "paymentId": 0,
    "remarks": "string",
    "status": "string",
    "taxAmount": 0,
    "taxPercentage": 0,
    "totalBeforeTax": 0,
    "updatedAt": "string",
    "updatedBy": "string",
    "usageAmount": 0
  }
]

Create Billing Info

Properties

Name Type Required Restrictions Description
Create Billing Info [object] false none Create Billing Info Details
billGeneratedBy string false none The person who initiated the bill
billGeneratedDate string false none Bill generation date
billUpdatedBy string false none The person who modified the bill
billUpdatedDate string false none Bill modified Date
billingEndDate string false none Billing End Date
billingStartDate string true none Billing Start Date
calculatedBillAmount number false none Calculated Bill Amount
createdAt string false none Date of creation
createdBy string false none Name of the person who created the payment
finalAmount number false none Final Amount
firstTimeData string false none Flag to check the Data
inputBillAmount number false none Input Bill Amount
invoiceNo string false none Invoice no belongs to the bill
noOfUsers integer false none No of users subscribed to the Product
paymentDate string false none Payment Created On Date
paymentId integer true none ID of the payment belongs to the subscribed product
remarks string false none Remarks
status string true none Status of the payment
taxAmount number false none Tax Amount
taxPercentage number false none Tax Percentage
totalBeforeTax number false none Total Amount before Tax
updatedAt string false none Date of updation
updatedBy string false none Name of the person who created the payment
usageAmount number false none Usage Amount

Create Billing Info Response

{
  "items": [
    {
      "packageId": 0
    }
  ]
}

Create Billing Info Response

Properties

Name Type Required Restrictions Description
items [object] false none Create Billing Info responses object
» packageId integer false none ID of the package that the client belongs to

Create Card Info

[
  {
    "authCode": "string",
    "cardCurrency": "string",
    "cardNo": "string",
    "cardType": "string",
    "clientId": 0,
    "createdAt": "string",
    "createdBy": "string",
    "expiryDate": "string",
    "issuerId": "string",
    "oneTimeCard": "string",
    "referenceNum": "string",
    "respDataKey": "string",
    "respMessage": "string",
    "respNote": "string",
    "respReceiptId": "string",
    "respResSuccess": "string",
    "respTransDate": "string",
    "responseCode": "string",
    "status": "string",
    "transTime": "string",
    "transType": "string",
    "txnComplete": "string",
    "txnNumber": "string",
    "updatedAt": "string",
    "updatedBy": "string"
  }
]

Create Card Info

Properties

Name Type Required Restrictions Description
Create Card Info [object] false none Create Card Info Details
authCode string false none Authentication Code
cardCurrency string false none Card Currency
cardNo string true none Card No
cardType string false none Card Type
clientId integer true none Client Id
createdAt string false none Date of creation
createdBy string true none Name of the person who created the payment
expiryDate string false none Expiry Date
issuerId string true none Issuer Id
oneTimeCard string true none One Time Card
referenceNum string false none Reference Number
respDataKey string true none Moneris Token
respMessage string false none Response message
respNote string false none Response Note
respReceiptId string false none Response Receipt ID
respResSuccess string false none Response Success
respTransDate string false none Response Transaction Date
responseCode string false none Response code from Moneris
status string false none Timestamp for creation of package within the system
transTime string false none Transaction Time
transType string false none Transaction Type
txnComplete string false none Check whether transaction is complete
txnNumber string false none Transaction Number
updatedAt string false none Date of updation
updatedBy string false none Name of the person who created the payment

Create Card Info Response

{
  "items": [
    {
      "cardId": 0
    }
  ]
}

Create Card Info Response

Properties

Name Type Required Restrictions Description
items [object] false none Create Card Info responses object
» cardId integer false none ID of the Card

Create Invoice no response

{
  "items": [
    {
      "invoiceNo": 0
    }
  ]
}

Create Invoice no response

Properties

Name Type Required Restrictions Description
items [object] false none Create Invoice no responses object
» invoiceNo integer false none ID of the package that the client belongs to

Create Create Payment Info

[
  {
    "billCycle": "string",
    "clientId": 0,
    "comments": "string",
    "createdAt": "string",
    "createdBy": "string",
    "currency": "string",
    "freeProduct": "string",
    "productId": "string",
    "productPrice": 0,
    "status": "string",
    "subscribedOn": "string",
    "subscriptionEndDate": "string",
    "trialDays": 0,
    "updatedAt": "string",
    "updatedBy": "string"
  }
]

Create Create Payment Info

Properties

Name Type Required Restrictions Description
Create Create Payment Info [object] false none Create Create Payment Info Details
billCycle string true none Bill Cycle
clientId integer true none Client Id of the Person who makes the payment
comments string false none Product Comments
createdAt string false none Date of creation
createdBy string true none Name of the person who created the payment
currency string false none Currency Value
freeProduct string false none Is it a free product or not
productId string true none ID of the product subscribed to the User
productPrice number false none Price
status string true none Current product status
subscribedOn string true none Date of subscription
subscriptionEndDate string false none Subscription End Date
trialDays integer false none Free trial days, if set explicitly for a client subscription
updatedAt string false none Date of updation
updatedBy string false none Name of the person who created the payment

Create Payment Info Response

{
  "items": [
    {
      "packageId": 0
    }
  ]
}

Create Payment Info Response

Properties

Name Type Required Restrictions Description
items [object] false none Create Payment Info responses object
» packageId integer false none ID of the package that the client belongs to

Create Tax Info

[
  {
    "applicableAddressType": "string",
    "createdAt": "string",
    "createdBy": "string",
    "effectiveEndDate": "string",
    "effectiveStartDate": "string",
    "invoiceNo": "string",
    "taxAmount": 0,
    "taxAuthorityCode": "string",
    "taxAuthorityLevel": "string",
    "taxAuthorityName": "string",
    "taxAuthorityType": "string",
    "taxRate": 0,
    "taxRateType": "string",
    "updatedAt": "string",
    "updatedBy": "string"
  }
]

Create Tax Info

Properties

Name Type Required Restrictions Description
Create Tax Info [object] false none Create Tax Info Details
applicableAddressType string false none Applicable Address Type
createdAt string false none Date of creation
createdBy string true none Name of the person who created the payment
effectiveEndDate string false none Effective End Date
effectiveStartDate string false none Effective Start Date
invoiceNo string true none Invoice No
taxAmount number false none Tax Amount
taxAuthorityCode string false none Tax Authority Code
taxAuthorityLevel string false none Tax Authority Level
taxAuthorityName string false none Tax Authority Name
taxAuthorityType string false none Tax Authority Type
taxRate number false none Tax Rate
taxRateType string false none Tax Rate Type
updatedAt string false none Date of updation
updatedBy string false none Name of the person who created the payment

Create Tax Info Response

{
  "items": [
    {
      "taxId": 0
    }
  ]
}

Create Tax Info Response

Properties

Name Type Required Restrictions Description
items [object] false none Create Tax Info responses object
» taxId integer false none ID per tax record

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

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

Forgot Password Request

{
  "email": "string"
}

Forgot Password Request

Properties

Name Type Required Restrictions Description
email string true none Email for forgot password

Get Billing Info Response

{
  "items": [
    {
      "billGeneratedBy": "string",
      "billGeneratedDate": "string",
      "billId": 0,
      "billUpdatedBy": "string",
      "billUpdatedDate": 0,
      "billingEndDate": "string",
      "billingStartDate": "string",
      "calculatedBillAmount": 0,
      "createdAt": "string",
      "createdBy": "string",
      "finalAmount": 0,
      "firstTimeData": "string",
      "inputBillAmount": 0,
      "invoiceNo": "string",
      "noOfUsers": "string",
      "paymentDate": "string",
      "paymentId": 0,
      "remarks": "string",
      "status": "string",
      "taxAmount": 0,
      "taxPercentage": 0,
      "totalBeforeTax": 0,
      "updatedAt": "string",
      "updatedBy": "string",
      "usageAmount": "string"
    }
  ]
}

Get Billing Info Response

Properties

Name Type Required Restrictions Description
items [object] false none Get Billing Info responses object
» billGeneratedBy string false none Bill Generated By
» billGeneratedDate string false none Bill Generated Date
» billId integer false none Bill Id
» billUpdatedBy string false none Bill Updated By
» billUpdatedDate integer false none Bill Updated Date
» billingEndDate string false none Bill End Date
» billingStartDate string false none Bill Start Date
» calculatedBillAmount integer false none Calculated Bill Amount
» createdAt string false none Date of creation
» createdBy string false none Name of the person who created the payment
» finalAmount integer false none Final Amount
» firstTimeData string false none Flag to check the Data
» inputBillAmount integer false none Input Bill Amount
» invoiceNo string false none InVoice No
» noOfUsers string false none No Of users
» paymentDate string false none Name of the user whow creates the payment
» paymentId integer false none Payment Id
» remarks string false none Remarks
» status string false none Status of creation of package within the system
» taxAmount integer false none Tax Amount
» taxPercentage integer false none Tax Percentage
» totalBeforeTax integer false none Total Amount before Tax
» updatedAt string false none Date of updation
» updatedBy string false none Name of the person who created the payment
» usageAmount string false none Usage Amount

Get Card Info Response

{
  "items": [
    {
      "authCode": "string",
      "cardCurrency": "string",
      "cardId": 0,
      "cardNo": "string",
      "cardType": "string",
      "clientId": 0,
      "createdAt": "string",
      "createdBy": "string",
      "expiryDate": "string",
      "issuerId": "string",
      "oneTimeCard": "string",
      "referenceNum": "string",
      "respDataKey": "string",
      "respMessage": "string",
      "respNote": "string",
      "respReceiptId": "string",
      "respResSuccess": "string",
      "respTransDate": "string",
      "responseCode": "string",
      "status": "string",
      "transTime": "string",
      "transType": "string",
      "txnComplete": "string",
      "txnNumber": "string",
      "updatedAt": "string",
      "updatedBy": "string"
    }
  ]
}

Get Card Info Response

Properties

Name Type Required Restrictions Description
items [object] false none Get Card Info responses object
» authCode string false none Authentication Code
» cardCurrency string false none Card Currency
» cardId integer false none Card Id
» cardNo string false none Card No
» cardType string false none Card Type
» clientId integer false none Client Id
» createdAt string false none Date of creation
» createdBy string false none Name of the person who created the payment
» expiryDate string false none Expiry Date
» issuerId string false none Issuer Id
» oneTimeCard string false none One Time Card
» referenceNum string false none Reference Number
» respDataKey string false none Moneris Token
» respMessage string false none Response message
» respNote string false none Response Note
» respReceiptId string false none Response Receipt ID
» respResSuccess string false none Response Success
» respTransDate string false none Response Transaction Date
» responseCode string false none Response code from Moneris
» status string false none Timestamp for creation of package within the system
» transTime string false none Transaction Time
» transType string false none Transaction Type
» txnComplete string false none Check whether transaction is complete
» txnNumber string false none Transaction Number
» updatedAt string false none Date of updation
» updatedBy string false none Name of the person who created the payment

Get Country List

{
  "data": [
    {
      "countryName": "string",
      "shortCode": "string"
    }
  ]
}

Get Country List

Properties

Name Type Required Restrictions Description
data [object] false none Get Country List responses object
» countryName string false none Name of the country
» shortCode string false none Short code of the country name

Get Payment Info by Trail Days Response

{
  "items": [
    {
      "billCycle": "string",
      "clientId": 0,
      "comments": "string",
      "createdAt": "string",
      "createdBy": "string",
      "currency": "string",
      "freeProduct": "string",
      "packageId": 0,
      "productId": "string",
      "productPrice": 0,
      "status": "string",
      "subscribedOn": "string",
      "subscriptionEndDate": "string",
      "trialDays": 0,
      "updatedAt": "string",
      "updatedBy": "string"
    }
  ]
}

Get Payment Info by Trail Days Response

Properties

Name Type Required Restrictions Description
items [object] false none Get Payment Info by Trail Days responses object
» billCycle string false none Bill Cycle
» clientId integer false none ID per client
» comments string false none Product Comments
» createdAt string false none Date of creation
» createdBy string false none Name of the user whow creates the payment
» currency string false none Currency Value
» freeProduct string false none Is it a free product or not
» packageId integer false none ID per client Package
» productId string false none ID of the subscribed package
» productPrice number false none Price value of the subscribed product
» status string false none Product Status
» subscribedOn string false none Product Subscription Date
» subscriptionEndDate string false none Product Subscription End Date
» trialDays integer false none Product Trial Period
» updatedAt string false none Date of updation
» updatedBy string false none Name of the person who created the payment

Get Payment Info Response

{
  "items": [
    {
      "billCycle": "string",
      "clientId": 0,
      "comments": "string",
      "createdAt": "string",
      "createdBy": "string",
      "currency": "string",
      "freeProduct": "string",
      "packageId": 0,
      "productId": "string",
      "productPrice": 0,
      "status": "string",
      "subscribedOn": "string",
      "subscriptionEndDate": "string",
      "trialDays": 0,
      "updatedAt": "string",
      "updatedBy": "string"
    }
  ]
}

Get Payment Info Response

Properties

Name Type Required Restrictions Description
items [object] false none Get Payment Info responses object
» billCycle string false none Bill Cycle
» clientId integer false none ID per client
» comments string false none Product Comments
» createdAt string false none Date of creation
» createdBy string false none Name of the user whow creates the payment
» currency string false none Currency Value
» freeProduct string false none Is it a free product or not
» packageId integer false none ID per client Package
» productId string false none ID of the subscribed package
» productPrice number false none Price value of the subscribed product
» status string false none Product Status
» subscribedOn string false none Product Subscription Date
» subscriptionEndDate string false none Product Subscription End Date
» trialDays integer false none Product Trial Period
» updatedAt string false none Date of updation
» updatedBy string false none Name of the person who created the payment

Get Province List

{
  "data": [
    {
      "provinceCode": "string",
      "provinceName": "string",
      "referenceId": "string",
      "shortCode": "string"
    }
  ]
}

Get Province List

Properties

Name Type Required Restrictions Description
data [object] false none Get Province list by Country responses object
» provinceCode string false none Short code of the Province/State
» provinceName string false none Name of the Province/State
» referenceId string false none Reference ID of the province
» shortCode string false none Short code of the country name

Get Tax Info Response

{
  "items": [
    {
      "applicableAddressType": "string",
      "createdAt": "string",
      "createdBy": "string",
      "effectiveEndDate": "string",
      "effectiveStartDate": "string",
      "invoiceNo": "string",
      "taxAmount": 0,
      "taxAuthorityCode": "string",
      "taxAuthorityLevel": "string",
      "taxAuthorityName": "string",
      "taxAuthorityType": "string",
      "taxId": 0,
      "taxRate": 0,
      "taxRateType": "string",
      "updatedAt": "string",
      "updatedBy": "string"
    }
  ]
}

Get Tax Info Response

Properties

Name Type Required Restrictions Description
items [object] false none Get Tax Info responses object
» applicableAddressType string false none Applicable Address Type
» createdAt string false none Date of creation
» createdBy string false none Name of the person who created the payment
» effectiveEndDate string false none Effective End Date
» effectiveStartDate string false none Effective Start Date
» invoiceNo string false none Invoice No
» taxAmount number false none Tax Rate
» taxAuthorityCode string false none Tax Authority Code
» taxAuthorityLevel string false none Tax Authority Level
» taxAuthorityName string false none Tax Authority Name
» taxAuthorityType string false none Tax Authority Type
» taxId integer false none ID per tax record
» taxRate number false none Tax Rate
» taxRateType string false none Tax Rate Type
» updatedAt string false none Date of updation
» updatedBy string false none Name of the person who created the payment

undefined

{}

Properties

None

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

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

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

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

Quotes - 1min CA Request

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

Quotes - 1min 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
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

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 - 1sec CA Request

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

Quotes - 1sec 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
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

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

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

TAQ NBBO CA Request

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

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

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

Trade - 1min CA Request

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

Trade - 1min 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
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

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

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

Trade - 1min 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
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

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

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

Trade - 1sec 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
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

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

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",
      "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
» 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

unlock user request

{
  "email": "string"
}

unlock user request

Properties

Name Type Required Restrictions Description
email string true none Email for user to unlock

Update Card Info

[
  {
    "authCode": "string",
    "cardCurrency": "string",
    "cardId": 0,
    "cardNo": "string",
    "cardType": "string",
    "clientId": 0,
    "createdAt": "string",
    "createdBy": "string",
    "expiryDate": "string",
    "issuerId": "string",
    "oneTimeCard": "string",
    "referenceNum": "string",
    "respDataKey": "string",
    "respMessage": "string",
    "respNote": "string",
    "respReceiptId": "string",
    "respResSuccess": "string",
    "respTransDate": "string",
    "responseCode": "string",
    "status": "string",
    "transTime": "string",
    "transType": "string",
    "txnComplete": "string",
    "txnNumber": "string",
    "updatedAt": "string",
    "updatedBy": "string"
  }
]

Update Card Info

Properties

Name Type Required Restrictions Description
Update Card Info [object] false none Update Card Info Details
authCode string false none Authentication Code
cardCurrency string false none Card Currency
cardId integer false none Card Id
cardNo string false none Card No
cardType string false none Card Type
clientId integer true none Client Id
createdAt string false none Date of creation
createdBy string false none Name of the person who created the payment
expiryDate string false none Expiry Date
issuerId string false none Issuer Id
oneTimeCard string false none One Time Card
referenceNum string false none Reference Number
respDataKey string false none Moneris Token
respMessage string false none Response message
respNote string false none Response Note
respReceiptId string false none Response Receipt ID
respResSuccess string false none Response Success
respTransDate string false none Response Transaction Date
responseCode string false none Response code from Moneris
status string false none Timestamp for creation of package within the system
transTime string false none Transaction Time
transType string false none Transaction Type
txnComplete string false none Check whether transaction is complete
txnNumber string false none Transaction Number
updatedAt string false none Date of updation
updatedBy string false none Name of the person who created the payment

Update Card Info Response

{
  "items": [
    {
      "cardId": 0
    }
  ]
}

Update Card Info Response

Properties

Name Type Required Restrictions Description
items [object] false none Update Card Info responses object
» cardId integer false none ID of the Card that the client belongs to

Update Client

{
  "addressLine1": "string",
  "addressLine2": "string",
  "city": "string",
  "clientId": "string",
  "clientName": "string",
  "clientStatus": "string",
  "contactNumber": "string",
  "country": "string",
  "email": "string",
  "enablePromotionalEmails": true,
  "firstName": "string",
  "lastName": "string",
  "postalCode": "string",
  "productOrderNo": "string",
  "provinceState": "string",
  "referredBy": "string",
  "teamName": "string"
}

Update Client

Properties

Name Type Required Restrictions Description
addressLine1 string false none Address Line 1 for the Client Address
addressLine2 string false none Address Line 2 for the Client Address
city string false none City relevant for Billing Details
clientId string true none client Id
clientName string false none Name of the client
clientStatus string false none This is a business provisioned product order number provided to customers as a promotional offer
contactNumber string false none Contact Number for the team in the format +<1-digit code>
country string false none Country within Client Address
email string false none Email of client admin
enablePromotionalEmails boolean false none Would customer allow TMX-products related promotional emails
firstName string false none First Name relevant for Billing Details
lastName string false none Last Name relevant for Billing Details
postalCode string false none Postal Code within the Client Address
productOrderNo string false none This is a business provisioned product order number provided to customers as a promotional offer
provinceState string false none Province or State within the Client Address
referredBy string false none The source where the customer got to know about TMX from
teamName string false none Name of the team within the client

Update Client

{
  "data": [
    {
      "clientId": 0,
      "clientName": "string",
      "teamName": "string"
    }
  ]
}

Update Client

Properties

Name Type Required Restrictions Description
data [object] false none Update Client responses object
» clientId integer false none ID per client per team
» clientName string false none Name of the client
» teamName string false none Name of the team within the client

Update Package Info Response

{
  "items": [
    {
      "packageId": 0
    }
  ]
}

Update Package Info Response

Properties

Name Type Required Restrictions Description
items [object] false none Update Package Info responses object
» packageId integer false none ID of the package that the client belongs to

Update Tax Info

[
  {
    "applicableAddressType": "string",
    "createdAt": "string",
    "createdBy": "string",
    "effectiveEndDate": "string",
    "effectiveStartDate": "string",
    "invoiceNo": "string",
    "taxAmount": 0,
    "taxAuthorityCode": "string",
    "taxAuthorityLevel": "string",
    "taxAuthorityName": "string",
    "taxAutorityType": "string",
    "taxId": 0,
    "taxRate": 0,
    "taxRateType": "string",
    "updatedAt": "string",
    "updatedBy": "string"
  }
]

Update Tax Info

Properties

Name Type Required Restrictions Description
Update Tax Info [object] false none Update Tax Info Details
applicableAddressType string false none Applicable Address Type
createdAt string false none Date of creation
createdBy string true none Name of the person who created the payment
effectiveEndDate string false none Effective End Date
effectiveStartDate string false none Effective Start Date
invoiceNo string true none Invoice No
taxAmount number false none Tax Rate
taxAuthorityCode string false none Tax Authority Code
taxAuthorityLevel string false none Tax Authority Level
taxAuthorityName string false none Tax Authority Name
taxAutorityType string false none Tax Authority Type
taxId integer false none ID per tax record
taxRate number false none Tax Rate
taxRateType string false none Tax Rate Type
updatedAt string false none Date of updation
updatedBy string false none Name of the person who created the payment

Update Tax Info Response

{
  "items": [
    {
      "taxId": 0
    }
  ]
}

Update Tax Info Response

Properties

Name Type Required Restrictions Description
items [object] false none Update Tax Info responses object
» taxId integer false none ID per tax record

Update Transaction Info

[
  {
    "amountWithTax": 0,
    "amountWithoutTax": 0,
    "authCode": "string",
    "cardNo": "string",
    "clientId": 0,
    "createdAt": "string",
    "createdBy": "string",
    "currency": "string",
    "errorDetails": "string",
    "invoiceNo": "string",
    "paymentDate": "string",
    "paymentStatus": "string",
    "referenceNum": "string",
    "respMessage": "string",
    "respNote": "string",
    "respReceiptId": "string",
    "respResSuccess": "string",
    "respTransDate": "string",
    "responseCode": "string",
    "taxAmount": 0,
    "taxRatePercentage": 0,
    "transTime": "string",
    "transType": "string",
    "txnComplete": "string",
    "txnNumber": "string",
    "updatedAt": "string",
    "updatedBy": "string"
  }
]

Update Transaction Info

Properties

Name Type Required Restrictions Description
Update Transaction Info [object] false none Update Transaction Info Details
amountWithTax number false none Amount of the subscribed product including tax
amountWithoutTax number false none Amount of the subscribed product without tax
authCode string false none Authentication Code
cardNo string false none Credit Card No entered by the user
clientId integer false none ID of the product subscribed to the User
createdAt string false none Date of creation
createdBy string false none Name of the person who created the payment
currency string false none Currency
errorDetails string false none Error Details
invoiceNo string false none Invoice no belongs to the transaction
paymentDate string false none Payment Created On Date
paymentStatus string false none Status of the Product
referenceNum string false none Reference Number
respMessage string false none Response message
respNote string false none Response Note
respReceiptId string false none Response Receipt ID
respResSuccess string false none Response Success
respTransDate string false none Response Transaction Date
responseCode string false none Response code from Moneris
taxAmount number false none Tax rate amount
taxRatePercentage number false none Tax rate received from DataBP
transTime string false none Transaction Time
transType string false none Transaction Type
txnComplete string false none Check whether transaction is complete
txnNumber string false none Transaction Number
updatedAt string false none Date of updation
updatedBy string false none Name of the person who created the payment

Update Transaction Info Response

{
  "items": [
    {
      "transactionId": 0
    }
  ]
}

Update Transaction Info Response

Properties

Name Type Required Restrictions Description
items [object] false none Update Transaction Info responses object
» transactionId integer false none ID of the transaction

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

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

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

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

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

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

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

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

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

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

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.

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

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

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.

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.

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

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.

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.

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.

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

Column 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

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.

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 )

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)

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

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