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();
        }
      }
    }
} 
				
			
		