BondMetric API
Introduction
This document describes how to access bond pricing data and analytics data through the API.
Key Features
- Files usually available by 7:00 am EST
- Files available for 30 days
- Simple HTTP interface to retrieve files
- Download files programmatically or with a web browser
Data Coverage
- Global
Key Data Points
API URL
https://api.bondmetric.com/api
Authentication
In order to authenticate with the API, you must provide your API key (Please refer to API Key) as the _api_key URL query string parameter during every HTTP request.
Request The Token
The token can be requested from the FactEntry Support Team (support@factentry.com) and should be replaced with XXXXX in the API key
Request Format
The request is passed in via HTTP request body. The only supported HTTP verb is POST/GET.
Query Parameter
- api_key – The API key provided to you by BondMetric
- _fields – A comma delimited list of metadata fields to return for each result
Example Query String
https://api.bondmetric.com/api?token=XXXXXXXXXXXXXXXX&ISIN=IT0006703208&fair_value_date=2019-01-14
Input Parameters
Response Format
- Search can be defined for the bond prices for last 7 calendar days
- Overall file size is nearly 22MB and hence it takes a longer time to download
Response Format (JSON)
{
"status": "ok",
"code": 200,
"count": 1,
"message": "Data found",
"data": [{
"ISIN": "IT0006703208",
"Entity Name": "Barclays Bank PLC",
"Credit Sector": "Banks",
"Country of Issuer": "United Kingdom",
"Issue Date": "2009-08-06",
"Maturity Date": "2019-07-21",
"Coupon(%)": "6.000",
"Currency": "EUR",
"FairValue Date": "2019-01-14",
"ZSpread(%)": "0.458",
"ASW(%)": "0.479",
"Clean Price": "103.047",
"Dirty Price": "105.931",
"Yield": "0.096",
"Modified Duration": "0.516",
"Macaulay Duration": "0.517",
"Convexity": "0.782",
"Accrued Interest": "2.883",
"BmkCountry": "Germany",
"BmkIsin": "",
"BmkYield": "",
"BmkSpread": "1.568"
}]
}
Output
Status Code
Python
import requests
response_json = requests.get('https://api.bondmetric.com/api?token=XXXXXXXXXXXXXXX&ISIN=IT0006703208&fair_value_date=2019-01-14')
print(response_json)
PHP
$url = "https://api.bondmetric.com/api";
$post = "token=XXXXXXXXXXXXXXX&ISIN=IT0006703208&fair_value_date=2021-04-14";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,false);
$content=curl_exec($curl);
curl_close($curl);
//print JSON data
echo $content;
JAVA
package javaapplication1;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.logging.Level;
import java.util.logging.Logger;
public class JavaApplication1 {
public static void main(String[] args) {
HttpURLConnection connection = null;
String urlParameters = null;
try {
urlParameters = "token=" + URLEncoder.encode("xxxxxxxxTOKENxxxxxxxxxxxx", "UTF-8")+
"&ISIN=" + URLEncoder.encode("IT0006703208", "UTF-8")+
"&fair_value_date=" + URLEncoder.encode("2019-01-14", "UTF-8");
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(JavaApplication1.class.getName()).log(Level.SEVERE, null, ex);
}
try {
//Create connection
URL url = new URL("https://www.caalerts.com/api/api.php");
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//connection.setRequestProperty("Content-Length", Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches(false);
connection.setDoOutput(true);
//Send request
DataOutputStream wr = new DataOutputStream (
connection.getOutputStream());
wr.writeBytes(urlParameters);
wr.close();
//Get Response
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
StringBuilder response = new StringBuilder(); // or StringBuffer if Java version 5+
String line;
while ((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
System.out.println(response.toString());
}
catch (Exception e) {
}
finally {
if (connection != null) {
connection.disconnect();
}
}
}
}