A Short & Free PHP Script To Return A Currency Conversion Rate

I was looking for a free / public API in which I could query a currency conversion rate just once per day, so no need for a large volume of requests. All of the major API’s looked great and offered a basic free account, however, none allowed one to specify the base rate, which made them useless, unless going for the paid option.

After almost giving up, I stumbled across the below free service, that suited my requirements and was very simple to use:

https://free.currencyconverterapi.com/

Now that I have a viable API to use, it was time to knock together a PHP script which would return a conversion rate for use in the larger application.

The JSON Get Function

Firstly, here is the JSON PHP function which uses CURL to return arrays from API’s. I have used a bunch of times and found it very helpful.

function jsonget($url, $headers) {

 $curl = curl_init();
 curl_setopt_array($curl, array(
 CURLOPT_URL => $url,
 CURLOPT_RETURNTRANSFER => true,
 CURLOPT_ENCODING => "",
 CURLOPT_MAXREDIRS => 10,
 CURLOPT_TIMEOUT => 60,
 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
 CURLOPT_CUSTOMREQUEST => "GET",
 CURLOPT_HTTPHEADER => $headers
 ));

 $response = curl_exec($curl);
 $err = curl_error($curl);
 
 curl_close($curl);

 if ($err) {
   echo "cURL Error #:" . $err;
 } else {
   return $response;
 }
}

You could place this function into an includes file for reuse throughout your web app. Next, lets use the function to make a query of the API.

Returning the Currency Conversion Rate

Now, running the code is fairly straight forward in a few lines:

// Set URL, no headers are required
$currencyconv_url = "http://free.currencyconverterapi.com/api/v5/convert?q=AUD_NZD&compact=y";

// Run function and return results
$currencyconv = jsonget($currencyconv_url, $currencyconv_headers);
$currencyconv_details = json_decode($currencyconv, true);

// Pull the currency rate out of the array
$nz_currency_rate = $currencyconv_details['AUD_NZD']['val'];

echo $nz_currency_rate;

You might notice from the above code that the currencies are both set in the url variable, in the ?q= parameter using their 3 character abbreviations such as AUD and NZD.

If you wanted use a different currencies, there are just two places need to make the change, basically the first and last variables. So the AUD_NZD will become AUD_USD like below:

// Set URL, no headers are required
$currencyconv_url = "http://free.currencyconverterapi.com/api/v5/convert?q=AUD_USD&compact=y";

// Run function and return results
$currencyconv = jsonget($currencyconv_url, $currencyconv_headers);
$currencyconv_details = json_decode($currencyconv, true);

// Pull the currency rate out of the array
$usd_currency_rate = $currencyconv_details['AUD_USD']['val'];

echo $usd_currency_rate;

I hope this helps someone 🙂