PHP — Cotação de Moedas Diversas
Olá Gente!
Obter a cotação de moedas é algo que deveria ser super simples, mas encontrar uma API boa e gratuita é complicado.
Para isto, iremos utilizar a API:
Esta API permite que você faça até 1500 requisições por mês de forma gratuita.
Com isto, basta consulta algumas vezes por dia e deixar em cache.
Antes de tudo, precisamos criar uma API KEY, para isto, faça seu cadastro abaixo:
Sua API KEY será exibida ao lado de “Your API Key”:

Antes de obtermos a cotação de uma moeda, precisamos checar quais as moedas que eles tem cotação, para isto, acesse:
Em nosso exemplo, iremos buscar a cotação do DÓLAR, que possui sigla USD.
Para obtermos os dados deste moeda, iremos fazer uma GET para:
https://v6.exchangerate-api.com/v6/[API_KEY]/latest/[MOEDA]
Observe que aqui, precisamos preencher:
- API_KEY: Sua API KEY gerada no painel da Exchange
- MOEDA: A Sigla da moeda que verificamos na lista de moedas suportadas
Exemplo:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://v6.exchangerate-api.com/v6/7a9671e7d6e765698a60b6ad/latest/USD",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => false
));
$response = curl_exec($curl);
$response2 = json_decode($response, true);
curl_close($curl);
var_dump($response2);
?>
Será retornado um array com os dados da Moeda:
{
"result":"success",
"documentation":"https://www.exchangerate-api.com/docs",
"terms_of_use":"https://www.exchangerate-api.com/terms",
"time_last_update_unix":1706572801,
"time_last_update_utc":"Tue, 30 Jan 2024 00:00:01 +0000",
"time_next_update_unix":1706659201,
"time_next_update_utc":"Wed, 31 Jan 2024 00:00:01 +0000",
"base_code":"USD",
"conversion_rates":{
"USD":1,
"AED":3.6725,
"AFN":73.2580,
"ALL":96.7955,
"AMD":403.3222,
"ANG":1.7900,
"AOA":837.1182,
"ARS":825.2500,
"AUD":1.5142,
"AWG":1.7900,
"AZN":1.6995,
"BAM":1.8068,
"BBD":2.0000,
"BDT":109.6160,
"BGN":1.8068,
"BHD":0.3760,
"BIF":2847.3133,
"BMD":1.0000,
"BND":1.3408,
"BOB":6.8450,
"BRL":4.9122,
"BSD":1.0000,
"BTN":83.1571,
"BWP":13.6783,
"BYN":3.1878,
"BZD":2.0000,
"CAD":1.3430,
"CDF":2725.8259,
"CHF":0.8624,
"CLP":919.5529,
"CNY":7.1848,
"COP":3990.8186,
"CRC":515.2000,
"CUP":24.0000,
"CVE":101.8609,
"CZK":22.8978,
"DJF":177.7210,
"DKK":6.8869,
"DOP":57.3759,
"DZD":134.1501,
"EGP":30.8936,
"ERN":15.0000,
"ETB":56.5600,
"EUR":0.9236,
"FJD":2.2347,
"FKP":0.7873,
"FOK":6.8932,
"GBP":0.7871,
"GEL":2.6694,
"GGP":0.7873,
"GHS":12.3569,
"GIP":0.7873,
"GMD":65.4107,
"GNF":8575.0702,
"GTQ":7.7438,
"GYD":209.3641,
"HKD":7.8139,
"HNL":24.4245,
"HRK":6.9602,
"HTG":131.7862,
"HUF":359.3421,
"IDR":15820.6210,
"ILS":3.6654,
"IMP":0.7873,
"INR":83.1595,
"IQD":1308.8119,
"IRR":42028.4106,
"ISK":137.2128,
"JEP":0.7873,
"JMD":155.3624,
"JOD":0.7090,
"JPY":147.6165,
"KES":162.1614,
"KGS":89.3429,
"KHR":4099.6510,
"KID":1.5143,
"KMF":454.4711,
"KRW":1335.0534,
"KWD":0.3058,
"KYD":0.8333,
"KZT":449.9201,
"LAK":20383.0453,
"LBP":15000.0000,
"LKR":317.8679,
"LRD":189.2299,
"LSL":18.7957,
"LYD":4.8161,
"MAD":10.0061,
"MDL":17.7357,
"MGA":4529.3791,
"MKD":56.7230,
"MMK":2081.4886,
"MNT":3426.2765,
"MOP":8.0478,
"MRU":39.5775,
"MUR":44.9528,
"MVR":15.4213,
"MWK":1691.4282,
"MXN":17.2143,
"MYR":4.7339,
"MZN":63.8816,
"NAD":18.7957,
"NGN":893.0747,
"NIO":36.2327,
"NOK":10.4314,
"NPR":133.0514,
"NZD":1.6332,
"OMR":0.3845,
"PAB":1.0000,
"PEN":3.8022,
"PGK":3.6870,
"PHP":56.4024,
"PKR":278.7576,
"PLN":4.0328,
"PYG":7293.8181,
"QAR":3.6400,
"RON":4.6013,
"RSD":108.3293,
"RUB":89.4815,
"RWF":1307.2231,
"SAR":3.7500,
"SBD":8.5066,
"SCR":13.5232,
"SDG":454.2660,
"SEK":10.4639,
"SGD":1.3405,
"SHP":0.7873,
"SLE":22.4799,
"SLL":22479.9107,
"SOS":571.6542,
"SRD":36.9043,
"SSP":1105.2015,
"STN":22.6327,
"SYP":12766.5229,
"SZL":18.7957,
"THB":35.4942,
"TJS":10.9252,
"TMT":3.4999,
"TND":3.1154,
"TOP":2.3350,
"TRY":30.3612,
"TTD":6.7083,
"TVD":1.5143,
"TWD":31.1570,
"TZS":2543.7517,
"UAH":37.8757,
"UGX":3807.0967,
"UYU":38.9870,
"UZS":12354.7016,
"VES":36.1418,
"VND":24466.6521,
"VUV":119.8510,
"WST":2.7395,
"XAF":605.9615,
"XCD":2.7000,
"XDR":0.7529,
"XOF":605.9615,
"XPF":110.2368,
"YER":247.6332,
"ZAR":18.7947,
"ZMW":27.0249,
"ZWL":9805.2621
}
}
A informação mais importante aqui esta no elemento “conversion_rates” onde consta a cotação do DÓLAR para várias outras moedas.
Neste caso, para REAL, iremos buscar o elemento “BRL”:
{
“BRL”:4.9122
}
Você pode também, fazer uma busca de conversão direta, ou seja “Quanto é 1 dólar para 1 real”, para isto, iremos faer uma GET para:
https://v6.exchangerate-api.com/v6/[API_KEY]/pair/[MOEDA_ORIGEM]/[MOEDA_DESTINO]
Observe que aqui, precisamos preencher:
- API_KEY: Sua API KEY gerada no painel da Exchange
- MOEDA_ORIGEM: A moeda de origem, neste exemplo, “USD”
- MOEDA_DESTINO: A moeda de destino, neste caso, “BRL”
Exemplo:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://v6.exchangerate-api.com/v6/7a9671e7d6e765698a60b6ad/pair/USD/BRL",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => false
));
$response = curl_exec($curl);
$response2 = json_decode($response, true);
curl_close($curl);
var_dump($response2);
?>
Será retornado um array onde o valor da conversão esta em “conversion_rate”:
{
"result": "success",
"documentation": "https://www.exchangerate-api.com/docs",
"terms_of_use": "https://www.exchangerate-api.com/terms",
"time_last_update_unix": 1706572801,
"time_last_update_utc": "Tue, 30 Jan 2024 00:00:01 +0000",
"time_next_update_unix": 1706659201,
"time_next_update_utc": "Wed, 31 Jan 2024 00:00:01 +0000",
"base_code": "USD",
"target_code": "BRL",
"conversion_rate": 4.9122
}
Neste caso:
{
“conversion_rate”: 4.9122
}
Por hoje é isto, queridos desenvolvedores! 👩💼
Até logo! 👋
Leia também
API Mágica: notificações Web Push no navegador com PHP
Web Push com a API Mágica em PHP puro: o navegador se inscreve, o seu site envia a notificação e a API conta o clique. Sem Composer e sem biblioteca.
IndexNow: avisando o Bing e o Yandex mais rápido
Como criar a chave do IndexNow e avisar Bing e Yandex das suas páginas novas com Node.js e PHP: as requisições, os erros reais e as armadilhas.
llms.txt: por que importa e como gerar em PHP
Por que o llms.txt importa para quem quer ser citado pela IA, e como gerar o seu em PHP puro lendo o sitemap.xml que voce ja tem.