
💰 API PHP para obter o preço atual do bitcoin em 2026: de um script simples a uma solução de produção
O site aceita criptomoeda e a taxa de câmbio oscila alguns pontos percentuais em meia hora. O cliente quer ver o preço atual do Bitcoin em moeda fiduciária diretamente na interface, não uma captura de ecrã de uma exchange, mas um número em tempo real obtido da API.
Monitorizar a taxa manualmente através de um separador do CoinMarketCap consome tempo e fornece dados desfasados. Entretanto, os plugins de criptomoedas prontos a usar são frequentemente pesados: anúncios, pedidos desnecessários, bloqueados a uma única fonte.
Abaixo estão duas formas de obter o preço atual do Bitcoin via PHP: desde um script básico de 10 linhas até uma solução pronta para produção com cache e seleção de fonte. Sem planos pagos, sem SDK de 40 megabytes.
💡 Visão geral rápida:
- Escolher uma fonte de API: Bitpay (gratuito, sem necessidade de chave) ou CoinGecko (mais dados, também gratuito)
- Escrever um script PHP com file_get_contents ou cURL, ambas as abordagens explicadas
- Adicionar tratamento de erros e cache em ficheiro durante 5 minutos para evitar consultar a API em cada carregamento de página
O que é uma API de cotação de criptomoedas e porque é que um programador PHP precisa dela
As APIs de exchanges e agregadores de criptomoedas devolvem a taxa atual via HTTP: faz um pedido GET e recebe JSON com um par "BTC/USD" e um número. Não é necessário WebSocket nem subscrição: um script PHP normal num alojamento barato trata disso perfeitamente.
Cenários típicos onde isto é útil:
- Gateway de pagamento. Mostrar ao utilizador: "Montante a pagar: 0,00031 BTC", com a taxa obtida de uma API em vez de ser inventada.
- Painel de controlo. Um painel de administração de loja online com um bloco "Taxas de criptomoedas".
- Rastreador de portefólio. Detém 5 moedas e um script atualiza o seu valor total uma vez por minuto.
Para este artigo, foram escolhidas duas fontes com acesso gratuito e sem registo: Bitpay e CoinGecko. Ambas funcionam sobre HTTPS, devolvem JSON e não requerem chave de API no nível básico.

Passo 1: obter a taxa via API da Bitpay
A Bitpay é um processador de pagamentos para Bitcoin. Tem um endpoint público /api/rates que devolve as taxas do BTC para mais de 150 moedas fiduciárias num único array JSON. Sem token, sem limites de pedidos para uso básico.
Abordagem simples: file_get_contents
O código funcional mais curto. Adicione-o a um ficheiro bitcoin-rates.php na raiz do seu site e abra-o num navegador:
1 <?php 2 $url = "https://bitpay.com/api/rates"; 3 $json = json_decode(file_get_contents($url), true); 4 5 foreach ($json as $item) { 6 if ($item['code'] === 'USD') { 7 echo '1 BTC = $' . $item['rate'] . "\n"; 8 } 9 if ($item['code'] === 'EUR') { 10 echo '1 BTC = €' . $item['rate'] . "\n"; 11 } 12 }
O script solicita o array completo de taxas, percorre-o e exibe apenas USD e EUR. O file_get_contents() com um URL HTTPS funciona se a diretiva allow_url_fopen = On estiver ativada no php.ini; na maioria dos fornecedores de alojamento está ativa por defeito.
Abordagem mais fiável: cURL
O file_get_contents não define timeouts e falha silenciosamente em erros de rede. Para um site real, o cURL é a melhor escolha:
1 <?php 2 $ch = curl_init(); 3 curl_setopt_array($ch, [ 4 CURLOPT_URL => 'https://bitpay.com/api/rates', 5 CURLOPT_RETURNTRANSFER => true, 6 CURLOPT_TIMEOUT => 10, 7 CURLOPT_SSL_VERIFYPEER => true, 8 ]); 9 $response = curl_exec($ch); 10 $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 11 curl_close($ch); 12 13 if ($httpCode !== 200 || !$response) { 14 echo 'API temporarily unavailable.'; 15 exit; 16 } 17 18 $data = json_decode($response, true); 19 20 foreach ($data as $item) { 21 if ($item['code'] === 'USD') { 22 echo '1 BTC = $' . number_format($item['rate'], 2) . "\n"; 23 } 24 }
Um timeout de 10 segundos, verificação do código HTTP e number_format para uma saída legível. Na prática, um script como este é suficiente para incorporar a taxa no rodapé ou na barra lateral de um site.
Passo 2: fonte alternativa, API CoinGecko
A Bitpay apenas fornece taxas para BTC e BCH. Se também precisar de Ethereum, Solana ou qualquer outro ativo do top 500, ligue-se à API CoinGecko. O plano gratuito permite 10 a 30 pedidos por minuto sem chave.
Pedido simples para preços do Bitcoin e Ethereum
O endpoint /api/v3/simple/price aceita uma lista de moedas e moedas fiduciárias separadas por vírgulas através do parâmetro vs_currencies:
1 <?php 2 $url = 'https://api.coingecko.com/api/v3/simple/price' 3 . '?ids=bitcoin,ethereum' 4 . '&vs_currencies=usd,eur,rub'; 5 6 $ch = curl_init(); 7 curl_setopt_array($ch, [ 8 CURLOPT_URL => $url, 9 CURLOPT_RETURNTRANSFER => true, 10 CURLOPT_TIMEOUT => 10, 11 ]); 12 $response = curl_exec($ch); 13 curl_close($ch); 14 15 $prices = json_decode($response, true); 16 17 echo 'BTC: $' . $prices['bitcoin']['usd'] . ' / €' . $prices['bitcoin']['eur'] . "\n"; 18 echo 'ETH: $' . $prices['ethereum']['usd'] . ' / ₽' . $prices['ethereum']['rub'] . "\n";
A resposta é compacta, contendo apenas as moedas e moedas fiduciárias que solicitou. Sem percorrer 150 entradas.
O que mais o CoinGecko pode fazer
- Dados históricos:
/api/v3/coins/bitcoin/history?date=01-01-2026, a taxa numa data específica. - Dados de mercado:
/api/v3/coins/bitcoin, capitalização de mercado, volume, variação em 24 horas, oferta em circulação. - Moedas em tendência:
/api/v3/search/trending, principais consultas de pesquisa do último dia.
Para uma simples taxa "BTC/USD", o primeiro exemplo é suficiente. Se estiver a construir um painel de controlo, ligue-se ao endpoint alargado.
Passo 3: cache e proteção contra falha da API
Consultar uma API externa em cada carregamento de página é uma má prática. A rede pode ter uma quebra, o servidor do CoinGecko pode ficar em baixo por um minuto e o visitante vê um erro em vez da taxa.
Uma solução robusta é a cache em ficheiro. O script guarda a resposta da API num ficheiro JSON local e atualiza-o uma vez a cada 5 minutos. Todos os pedidos intermédios leem da cache, instantaneamente e sem chamadas externas.
1 <?php 2 $cacheFile = __DIR__ . '/btc-cache.json'; 3 $cacheTime = 300; // 5 minutes 4 5 // If cache is fresh — read it 6 if (file_exists($cacheFile) && (time() - filemtime($cacheFile)) < $cacheTime) { 7 $data = json_decode(file_get_contents($cacheFile), true); 8 echo '1 BTC = $' . number_format($data['bitcoin']['usd'], 2); 9 echo ' (cached, updated ' . date('H:i:s', filemtime($cacheFile)) . ')'; 10 exit; 11 } 12 13 // Cache is stale or missing — request API 14 $ch = curl_init(); 15 curl_setopt_array($ch, [ 16 CURLOPT_URL => 'https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd', 17 CURLOPT_RETURNTRANSFER => true, 18 CURLOPT_TIMEOUT => 10, 19 ]); 20 $response = curl_exec($ch); 21 $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 22 curl_close($ch); 23 24 if ($httpCode !== 200 || !$response) { 25 // API is down — serve stale cache if available 26 if (file_exists($cacheFile)) { 27 $data = json_decode(file_get_contents($cacheFile), true); 28 echo '1 BTC = $' . number_format($data['bitcoin']['usd'], 2); 29 echo ' (stale cache — API did not respond)'; 30 exit; 31 } 32 echo 'No data available. Please try again later.'; 33 exit; 34 } 35 36 // Save fresh response and output 37 file_put_contents($cacheFile, $response); 38 $data = json_decode($response, true); 39 echo '1 BTC = $' . number_format($data['bitcoin']['usd'], 2); 40 echo ' (fresh data)';
Note que o script verifica primeiro a cache e só chama a API quando necessário. Se a API não responder, a última taxa guardada é servida com uma etiqueta "cache desatualizada". O visitante vê um número, não uma página em branco com um erro.
Antes de implementar num site de produção, certifique-se de que o PHP tem permissões de escrita no diretório do script. Faça também uma cópia de segurança completa, uma vez que o script escreve um ficheiro em disco.
O vídeo acima fornece uma análise visual da API CoinGecko com exemplos de pedido e resposta em tempo real. É adequado se estiver a trabalhar com uma API de criptomoedas pela primeira vez e quiser ver o ciclo completo: do pedido GET à análise do JSON.
⁉️🤔 Perguntas frequentes
Qual API devo escolher, Bitpay ou CoinGecko?
Se apenas precisa da taxa de Bitcoin para dólar, opte pela Bitpay. É mais simples, devolve uma resposta como um array único sem parâmetros e não tem limites. Se planeia trabalhar com uma dúzia de moedas ou exibir gráficos, escolha o CoinGecko: mais dados, endpoints flexíveis e um plano gratuito que cobre as necessidades de um pequeno projeto.
A API da Bitpay requer uma chave de API?
O endpoint público
/api/ratesnão requer uma chave. É um endpoint aberto usado por carteiras e exchanges para exibir taxas. Os endpoints comerciais da Bitpay (criação de faturas, aceitação de pagamentos) requerem um token, mas não são necessários para simplesmente obter taxas.
Porquê não a API do CoinMarketCap?
O plano gratuito do CoinMarketCap requer registo e uma chave. O limite é de 10.000 pedidos por mês, o que é suficiente para um pequeno projeto. No entanto, para uma abordagem "começar do zero sem registo", a Bitpay e o CoinGecko são mais convenientes: copie o URL, cole-o no seu código e funciona.
E se o meu alojamento bloquear o file_get_contents para URLs externos?
Mude para cURL, que está disponível em praticamente qualquer alojamento. Se o cURL também estiver desativado (raro em 2026), pergunte ao seu fornecedor de alojamento sobre a ativação do
curl.sonas extensões PHP. Uma alternativa é usar owp_remote_get()dentro do WordPress; esta função funciona através da API HTTP principal e seleciona automaticamente um transporte disponível.
Com que frequência as taxas são atualizadas na API?
A Bitpay atualiza a taxa a cada pedido; os valores refletem o spread atual do mercado. O CoinGecko atualiza os dados uma vez a cada 30 a 60 segundos para o endpoint de preço simples. Para fins de exibição num site, uma frequência de atualização de "uma vez a cada 5 minutos" é mais do que suficiente; o mercado de criptomoedas é volátil, mas não ao ponto de as flutuações segundo a segundo importarem para um bloco informativo.
Qual API escolher para a sua tarefa
A Bitpay e o CoinGecko respondem a necessidades diferentes sem competir diretamente:
- Se está a construir um formulário de pagamento com conversão "BTC → USD", use a Bitpay: uma única linha de URL, código mínimo, taxas sempre atualizadas.
- Se está a construir um painel de controlo com gráficos e um portefólio de 10 moedas, use o CoinGecko: pedidos de preços em lote, dados históricos, capitalização de mercado e volume numa única chamada.
- Se precisa do início mais rápido possível sem dependências externas, use a Bitpay sem cURL via
file_get_contents: 10 linhas de código e a taxa está na sua página.
Comece de forma simples: copie o primeiro exemplo deste artigo, substitua a moeda pela sua e abra-o num navegador. Se funcionar, envolva-o em cache usando o modelo do passo 3 e implemente no seu site de produção. Diga-nos nos comentários qual a API que acabou por escolher.



