Free currency exchange rate API

Time:2021-10-16

Link to API documentation first:https://www.juhe.cn/docs/api/…, support the query of RMB exchange rate and foreign exchange rate; The data is for reference only, and the transaction price at the bank counter shall prevail.

RMB price

Interface address:http://web.juhe.cn:8080/finan…
Supported format: JSON
Request method: get
Request example:http://web.juhe.cn:8080/finan…Appkey you applied for
Interface remarks: 100 foreign currency to RMB
JSON return example:

{  
"resultcode":"200",  
"reason":"SUCCESSED!",  
"result":[  
    {  
    "data1":{  
        "Name": "pound sterling", / * currency name*/  
        "Fbuypri": "1001.430", / * spot exchange purchase price*/  
        "Mbuypri": "970.510", / * cash purchase price*/  
        "Fsellpri": "1009.480", / * spot exchange selling price*/  
        "Msellpri": "1009.480", / * selling price of cash*/  
        "Bankconversionpri": "1014.870", / * bank conversion price / middle price*/  
        "Date": "2012-12-13", / * release date:*/  
        "Time": "16:25:49" / * release time:*/  
    },  
    "data2":{  
        "Name": "Hong Kong dollars",  
        "fBuyPri":"80.210",  
        "mBuyPri":"79.570",  
        "fSellPri":"80.520",  
        "mSellPri":"80.520",  
        "bankConversionPri":"81.140",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    },  
    "data3":{  
        "Name": "USD",  
        "fBuyPri":"621.650",  
        "mBuyPri":"616.670",  
        "fSellPri":"624.150",  
        "mSellPri":"624.150",  
        "bankConversionPri":"628.870",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    },  
    "data4":{  
        "Name": "Swiss francs",  
        "fBuyPri":"670.310",  
        "mBuyPri":"649.620",  
        "fSellPri":"675.700",  
        "mSellPri":"675.700",  
        "bankConversionPri":"674.350",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    },  
    "data5":{  
        "Name": "Singapore dollar",  
        "fBuyPri":"508.300",  
        "mBuyPri":"492.610",  
        "fSellPri":"512.390",  
        "mSellPri":"512.390",  
        "bankConversionPri":"512.000",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    },  
    "data6":{  
        "Name": "SEK",  
        "fBuyPri":"93.340",  
        "mBuyPri":"90.450",  
        "fSellPri":"94.090",  
        "mSellPri":"94.090",  
        "bankConversionPri":"93.770",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    },  
    "data7":{  
        "Name": "DKK",  
        "fBuyPri":"108.920",  
        "mBuyPri":"105.550",  
        "fSellPri":"109.790",  
        "mSellPri":"109.790",  
        "bankConversionPri":"109.430",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    },  
    "data8":{  
        "Name": "Norwegian Krona",  
        "fBuyPri":"110.490",  
        "mBuyPri":"107.080",  
        "fSellPri":"111.380",  
        "mSellPri":"111.380",  
        "bankConversionPri":"111.060",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    },  
    "data9":{  
        "Name": "Japanese yen",  
        "fBuyPri":"7.431",  
        "mBuyPri":"7.201",  
        "fSellPri":"7.483",  
        "mSellPri":"7.483",  
        "bankConversionPri":"7.531",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    },  
    "data10":{  
        "Name": "Canadian dollars",  
        "fBuyPri":"630.950",  
        "mBuyPri":"611.470",  
        "fSellPri":"636.010",  
        "mSellPri":"636.010",  
        "bankConversionPri":"638.800",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    },  
    "data11":{  
        "Name": "Australian dollars",  
        "fBuyPri":"654.900",  
        "mBuyPri":"634.680",  
        "fSellPri":"660.160",  
        "mSellPri":"660.160",  
        "bankConversionPri":"663.300",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    },  
    "data12":{  
        "Name": "euro",  
        "fBuyPri":"812.520",  
        "mBuyPri":"787.430",  
        "fSellPri":"819.040",  
        "mSellPri":"819.040",  
        "bankConversionPri":"821.960",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    },  
    "data13":{  
        "Name": "Macao dollars",  
        "fBuyPri":"77.910",  
        "mBuyPri":"75.300",  
        "fSellPri":"78.210",  
        "mSellPri":"80.720",  
        "bankConversionPri":"78.320",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    },  
    "data14":{  
        "Name": "Philippine pesos",  
        "fBuyPri":"15.100",  
        "mBuyPri":"14.640",  
        "fSellPri":"15.220",  
        "mSellPri":"15.690",  
        "bankConversionPri":"15.220",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    },  
    "data15":{  
        "Name": "Thai baht",  
        "fBuyPri":"20.240",  
        "mBuyPri":"19.620",  
        "fSellPri":"20.400",  
        "mSellPri":"21.030",  
        "bankConversionPri":"20.390",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    },  
    "data16":{  
        "Name": "New Zealand dollars",  
        "fBuyPri":"524.400",  
        "mBuyPri":"0.000",  
        "fSellPri":"528.610",  
        "mSellPri":"0.000",  
        "bankConversionPri":"526.770",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    },  
    "data17":{  
        "Name": "Korean won",  
        "fBuyPri":"0.000",  
        "mBuyPri":"0.560",  
        "fSellPri":"0.000",  
        "mSellPri":"0.608",  
        "bankConversionPri":"0.586",  
        "date":"2012-12-13",  
        "time":"16:25:49"  
    }  
    }  
    ]  
}

Foreign exchange rate

Interface address:http://web.juhe.cn:8080/finan…
Supported format: JSON
Request method: get
Request example:http://web.juhe.cn:8080/finan…Appkey you applied for
JSON return example:

{  
        "error_code":0,  
    "resultcode":"200",  
    "reason":"SUCCESSED!",  
    "result":[  
    {  
        "data1":{  
            "Code": "JPY", / * currency code*/  
            "Currency": "USD and JPY", / * currency name*/  
            "Closepri": "83.41", / * latest price*/  
            "Diffper": "0.19%", / * rise / fall%*/  
            "Diffamo": "0.16", / * rise and fall amount*/  
            "Openpri": "83.25" / * opening price*/  
            "Highpic": "83.67", / * highest price*/  
            "Lowpic": "83.1", / * lowest price*/  
            "Range": "0.68%", / * amplitude%*/  
            "Buypic": "83.41", / * purchase price*/  
            "Sellpic": "83.45", / * selling price*/  
            "Color": "red", / * up and down colors*/  
                        "Date": "July 29, 2016", / * date:*/  
            "DataTime": "08:58:39" / * data time*/  
        },  
        "data2":{  
            "code":"CHF",  
            "Currency": "USD / CHF",  
            "closePri":"0.9241",  
            "diffPer":"0.06%",  
            "diffAmo":"0.0006",  
            "openPri":"0.9234",  
            "highPic":"0.9243",  
            "lowPic":"0.9231",  
            "range":"0.13%",  
            "buyPic":"0.9241",  
            "sellPic":"0.9246",  
            "color":"Red",  
                         "date":"2016-07-29",  
            "datatime":"09:40:54"  
        },  
            ......  
    }  
    ]  
}

Sample code

Code example of currency exchange rate interface call based on PHP

<!--?php  
// +----------------------------------------------------------------------  
// | JuhePHP [ NO ZUO NO DIE ]  
// +----------------------------------------------------------------------  
// | Copyright (c) 2010-2015 http://juhe.cn All rights reserved.  
// +----------------------------------------------------------------------  
// | Author: Juhedata <[email protected]>  
// +----------------------------------------------------------------------  
   
//----------------------------------  
//Currency exchange rate call example code - aggregate data  
//Online interface documentation: http://www.juhe.cn/docs/23  
//----------------------------------  
   
header('Content-type:text/html;charset=utf-8');  
   
   
//Configure the appkey you applied for  
$appkey = "*********************";  
   
   
   
   
//************1. RMB price************  
$url = "http://web.juhe.cn:8080/finance/exchange/rmbquot";  
$params = array(  
      "key" => $appkey,//APP Key  
      "Type" = > "", // two formats (0 or 1, 0 by default)  
);  
$paramstring = http_build_query($params);  
$content = juhecurl($url,$paramstring);  
$result = json_decode($content,true);  
if($result){  
    if($result['error_code']=='0'){  
        print_r($result);  
    }else{  
        echo $result['error_code'].":".$result['reason'];  
    }  
}else{  
    Echo "request failed";  
}  
//**************************************************  
   
   
   
   
//************2. Foreign exchange rate************  
$url = "http://web.juhe.cn:8080/finance/exchange/frate";  
$params = array(  
      "key" => $appkey,//APP Key  
      "Type" = > "", // two formats (0 or 1, 0 by default)  
);  
$paramstring = http_build_query($params);  
$content = juhecurl($url,$paramstring);  
$result = json_decode($content,true);  
if($result){  
    if($result['error_code']=='0'){  
        print_r($result);  
    }else{  
        echo $result['error_code'].":".$result['reason'];  
    }  
}else{  
    Echo "request failed";  
}  
//**************************************************  
   
   
   
   
   
/**  
 *Request interface return content  
 *@ param string $URL [requested URL address]  
 *@ param string $params [requested parameter]  
 *@ param int $ipost [post or not]  
 * @return  string  
 */  
function juhecurl($url,$params=false,$ispost=0){  
    $httpInfo = array();  
    $ch = curl_init();  
   
    curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );  
    curl_setopt( $ch, CURLOPT_USERAGENT , 'JuheData' );  
    curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );  
    curl_setopt( $ch, CURLOPT_TIMEOUT , 60);  
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );  
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);  
    if( $ispost )  
    {  
        curl_setopt( $ch , CURLOPT_POST , true );  
        curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );  
        curl_setopt( $ch , CURLOPT_URL , $url );  
    }  
    else  
    {  
        if($params){  
            curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );  
        }else{  
            curl_setopt( $ch , CURLOPT_URL , $url);  
        }  
    }  
    $response = curl_exec( $ch );  
    if ($response === FALSE) {  
        //echo "cURL Error: " . curl_error($ch);  
        return false;  
    }  
    $httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );  
    $httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );  
    curl_close( $ch );  
    return $response;  
}

Python based currency exchange rate interface calling code example

#!/usr/bin/python  
# -*- coding: utf-8 -*-  
import json, urllib  
from urllib import urlencode  
   
#----------------------------------  
#Currency exchange rate call example code - aggregate data  
#Online interface documentation: http://www.juhe.cn/docs/23  
#----------------------------------  
   
def main():  
   
    #Configure the appkey you applied for  
    appkey = "*********************"  
   
    #1. RMB price  
    request1(appkey,"GET")  
   
    #2. Foreign exchange rate  
    request2(appkey,"GET")  
   
   
   
#RMB price  
def request1(appkey, m="GET"):  
    url = "http://web.juhe.cn:8080/finance/exchange/rmbquot"  
    params = {  
        "key" : appkey, #APP Key  
        "Type": "", # two formats (0 or 1, 0 by default)  
   
    }  
    params = urlencode(params)  
    if m =="GET":  
        f = urllib.urlopen("%s?%s" % (url, params))  
    else:  
        f = urllib.urlopen(url, params)  
   
    content = f.read()  
    res = json.loads(content)  
    if res:  
        error_code = res["error_code"]  
        if error_code == 0:  
            #Successful request  
            print res["result"]  
        else:  
            print "%s:%s" % (res["error_code"],res["reason"])  
    else:  
        print "request api error"  
   
#Foreign exchange rate  
def request2(appkey, m="GET"):  
    url = "http://web.juhe.cn:8080/finance/exchange/frate"  
    params = {  
        "key" : appkey, #APP Key  
        "Type": "", # two formats (0 or 1, 0 by default)  
   
    }  
    params = urlencode(params)  
    if m =="GET":  
        f = urllib.urlopen("%s?%s" % (url, params))  
    else:  
        f = urllib.urlopen(url, params)  
   
    content = f.read()  
    res = json.loads(content)  
    if res:  
        error_code = res["error_code"]  
        if error_code == 0:  
            #Successful request  
            print res["result"]  
        else:  
            print "%s:%s" % (res["error_code"],res["reason"])  
    else:  
        print "request api error"  
   
   
   
if __name__ == '__main__':  
    main()

Java based currency exchange rate interface calling code example

import java.io.BufferedReader;  
import java.io.DataOutputStream;  
import java.io.IOException;  
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.HashMap;  
import java.util.Map;  
   
import net.sf.json.JSONObject;  
   
/** 
*Currency exchange rate call example code - aggregate data 
*Online interface documentation: http://www.juhe.cn/docs/23 
**/  
   
public class JuheDemo {  
    public static final String DEF_CHATSET = "UTF-8";  
    public static final int DEF_CONN_TIMEOUT = 30000;  
    public static final int DEF_READ_TIMEOUT = 30000;  
    public static String userAgent =  "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";  
   
    //Configure the key you requested  
    public static final String APPKEY ="*************************";  
   
    //1. RMB price  
    public static void getRequest1(){  
        String result =null;  
        String url =" http://web.juhe.cn:8080/finance/exchange/rmbquot ";// Request interface address  
        Map params = new HashMap();// Request parameters  
            params.put("key",APPKEY);//APP Key  
            params.put("type","");// Two formats (0 or 1, the default is 0)  
   
        try {  
            result =net(url, params, "GET");  
            JSONObject object = JSONObject.fromObject(result);  
            if(object.getInt("error_code")==0){  
                System.out.println(object.get("result"));  
            }else{  
                System.out.println(object.get("error_code")+":"+object.get("reason"));  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
   
    //2. Foreign exchange rate  
    public static void getRequest2(){  
        String result =null;  
        String url =" http://web.juhe.cn:8080/finance/exchange/frate ";// Request interface address  
        Map params = new HashMap();// Request parameters  
            params.put("key",APPKEY);//APP Key  
            params.put("type","");// Two formats (0 or 1, the default is 0)  
   
        try {  
            result =net(url, params, "GET");  
            JSONObject object = JSONObject.fromObject(result);  
            if(object.getInt("error_code")==0){  
                System.out.println(object.get("result"));  
            }else{  
                System.out.println(object.get("error_code")+":"+object.get("reason"));  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
   
   
   
    public static void main(String[] args) {  
   
    }  
   
    /** 
     * 
     *@ param strurl request address 
     *@ param params request parameters 
     *@ param method request method 
     *@ return network request string 
     * @throws Exception 
     */  
    public static String net(String strUrl, Map params,String method) throws Exception {  
        HttpURLConnection conn = null;  
        BufferedReader reader = null;  
        String rs = null;  
        try {  
            StringBuffer sb = new StringBuffer();  
            if(method==null || method.equals("GET")){  
                strUrl = strUrl+"?"+urlencode(params);  
            }  
            URL url = new URL(strUrl);  
            conn = (HttpURLConnection) url.openConnection();  
            if(method==null || method.equals("GET")){  
                conn.setRequestMethod("GET");  
            }else{  
                conn.setRequestMethod("POST");  
                conn.setDoOutput(true);  
            }  
            conn.setRequestProperty("User-agent", userAgent);  
            conn.setUseCaches(false);  
            conn.setConnectTimeout(DEF_CONN_TIMEOUT);  
            conn.setReadTimeout(DEF_READ_TIMEOUT);  
            conn.setInstanceFollowRedirects(false);  
            conn.connect();  
            if (params!= null && method.equals("POST")) {  
                try (DataOutputStream out = new DataOutputStream(conn.getOutputStream())) {  
                    out.writeBytes(urlencode(params));  
                }  
            }  
            InputStream is = conn.getInputStream();  
            reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET));  
            String strRead = null;  
            while ((strRead = reader.readLine()) != null) {  
                sb.append(strRead);  
            }  
            rs = sb.toString();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            if (reader != null) {  
                reader.close();  
            }  
            if (conn != null) {  
                conn.disconnect();  
            }  
        }  
        return rs;  
    }  
   
    //Change map type to request parameter type  
    public static String urlencode(Map<String,Object>data) {  
        StringBuilder sb = new StringBuilder();  
        for (Map.Entry i : data.entrySet()) {  
            try {  
                sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&");  
            } catch (UnsupportedEncodingException e) {  
                e.printStackTrace();  
            }  
        }  
        return sb.toString();  
    }  
}