
💰 API PHP per ottenere il prezzo attuale del Bitcoin nel 2026: da un semplice script a una soluzione di produzione
Il sito accetta criptovalute e il tasso di cambio oscilla di qualche punto percentuale nel giro di mezz’ora. Il cliente vuole vedere il prezzo attuale del Bitcoin in valuta fiat direttamente nell’interfaccia, non uno screenshot da una piattaforma, ma un valore live dalla API.
Monitorare manualmente il tasso tramite una scheda di CoinMarketCap richiede tempo e fornisce dati in ritardo. Nel frattempo, i plugin crypto già pronti sono spesso gonfiati: pubblicità, richieste superflue, vincolati a un’unica fonte.
Di seguito trovi due modi per ottenere il prezzo attuale del Bitcoin via PHP: da uno script base di 10 righe a una soluzione pronta per la produzione con caching e selezione della fonte. Nessun piano a pagamento, nessun SDK da 40 megabyte.
💡 Panoramica rapida:
- Scelta di una fonte API: Bitpay (gratuita, senza chiave richiesta) o CoinGecko (più dati, anch’essa gratuita)
- Scrittura di uno script PHP con file_get_contents o cURL, entrambi gli approcci spiegati
- Aggiunta di gestione degli errori e caching su file per 5 minuti, per evitare di chiamare l’API a ogni caricamento pagina
Cos’è un’API di quotazione crypto e perché serve a uno sviluppatore PHP
Le API degli aggregatori e delle piattaforme crypto restituiscono il tasso corrente via HTTP: si fa una richiesta GET e si riceve un JSON con una coppia «BTC/USD» e un numero. Non servono WebSocket né abbonamenti: un normale script PHP su un hosting economico lo gestisce senza problemi.
Scenari tipici in cui è utile:
- Gateway di pagamento. Mostrare all’utente: «Importo dovuto: 0,00031 BTC», con il tasso preso da un’API anziché inventato.
- Dashboard. Un pannello di amministrazione di un negozio online con un blocco «Tassi delle criptovalute».
- Tracciatore di portafoglio. Possiedi 5 coin e uno script aggiorna il loro valore totale una volta al minuto.
Per questo articolo sono state scelte due fonti con accesso gratuito e senza registrazione: Bitpay e CoinGecko. Entrambe funzionano su HTTPS, restituiscono JSON e non richiedono una chiave API a livello base.

Passo 1: ottenere il tasso via API Bitpay
Bitpay è un processore di pagamenti per Bitcoin. Dispone di un endpoint pubblico /api/rates che restituisce i tassi BTC per oltre 150 valute fiat in un unico array JSON. Nessun token, nessun limite di richieste per l’uso base.
Approccio semplice: file_get_contents
Il codice funzionante più breve. Aggiungilo a un file bitcoin-rates.php nella root del tuo sito e aprilo nel browser:
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 }
Lo script richiede l’intero array dei tassi, lo scorre e restituisce solo USD ed EUR. file_get_contents() con un URL HTTPS funziona se la direttiva allow_url_fopen = On è abilitata in php.ini; sulla maggior parte degli hosting è attiva per impostazione predefinita.
Approccio più affidabile: cURL
file_get_contents non imposta timeout e fallisce silenziosamente in caso di errori di rete. Per un sito reale, cURL è la scelta migliore:
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 }
Un timeout di 10 secondi, controllo del codice HTTP e number_format per un output leggibile. Nella pratica, uno script come questo è sufficiente per incorporare il tasso nel footer o nella sidebar di un sito.
Passo 2: fonte alternativa, API CoinGecko
Bitpay fornisce solo i tassi per BTC e BCH. Se ti servono anche Ethereum, Solana o qualsiasi altro asset tra i primi 500, collegati all’API CoinGecko. Il piano gratuito consente 10-30 richieste al minuto senza chiave.
Richiesta semplice per i prezzi di Bitcoin ed Ethereum
L’endpoint /api/v3/simple/price accetta un elenco di coin e valute separato da virgole tramite il parametro 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";
La risposta è compatta e contiene solo le coin e le valute richieste. Nessun ciclo su 150 voci.
Cos’altro può fare CoinGecko
- Dati storici:
/api/v3/coins/bitcoin/history?date=01-01-2026, il tasso a una data specifica. - Dati di mercato:
/api/v3/coins/bitcoin, capitalizzazione di mercato, volume, variazione 24 ore, offerta circolante. - Coin di tendenza:
/api/v3/search/trending, le prime ricerche dell’ultimo giorno.
Per un semplice tasso «BTC/USD» il primo esempio è sufficiente. Se stai costruendo una dashboard, collegati all’endpoint esteso.
Passo 3: caching e protezione contro il fallimento dell’API
Chiamare un’API esterna a ogni caricamento pagina è una cattiva pratica. La rete può avere un singhiozzo, il server di CoinGecko può andare giù per un minuto e il visitatore vede un errore invece del tasso.
Una soluzione robusta è il caching su file. Lo script salva la risposta dell’API in un file JSON locale e lo aggiorna una volta ogni 5 minuti. Tutte le richieste intermedie leggono dalla cache, istantaneamente e senza chiamate esterne.
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)';
Nota che lo script controlla prima la cache e chiama l’API solo quando necessario. Se l’API non risponde, viene servito l’ultimo tasso salvato con un’etichetta «cache non aggiornata». Il visitatore vede un numero, non una pagina vuota con un errore.
Prima di fare il deploy su un sito in produzione, assicurati che PHP abbia i permessi di scrittura sulla directory dello script. Fai anche un backup completo, poiché lo script scrive un file su disco.
Il video qui sopra fornisce un’analisi visiva dell’API CoinGecko con esempi reali di richiesta e risposta. È adatto se lavori con un’API crypto per la prima volta e vuoi vedere il ciclo completo: dalla richiesta GET al parsing del JSON.
⁉️🤔 Domande frequenti
Quale API dovrei scegliere, Bitpay o CoinGecko?
Se ti serve solo il tasso Bitcoin-dollaro, usa Bitpay. È più semplice, restituisce una risposta come array unico senza parametri e non ha limiti. Se prevedi di lavorare con una dozzina di coin o di mostrare grafici, scegli CoinGecko: più dati, endpoint flessibili e un piano gratuito che copre le esigenze di un piccolo progetto.
L’API Bitpay richiede una chiave API?
L’endpoint pubblico
/api/ratesnon richiede una chiave. È un endpoint aperto usato da wallet e piattaforme per mostrare i tassi. Gli endpoint commerciali di Bitpay (creazione fatture, accettazione pagamenti) richiedono un token, ma non servono per la semplice lettura dei tassi.
Perché non l’API di CoinMarketCap?
Il piano gratuito di CoinMarketCap richiede registrazione e una chiave. Il limite è di 10.000 richieste al mese, sufficiente per un piccolo progetto. Tuttavia, per un approccio «parti da zero senza registrazione», Bitpay e CoinGecko sono più comodi: copi l’URL, lo incolli nel codice e funziona.
Cosa fare se il mio hosting blocca file_get_contents per gli URL esterni?
Passa a cURL, che è disponibile su praticamente qualsiasi hosting. Se anche cURL è disabilitato (raro nel 2026), chiedi al tuo host di abilitare
curl.sonelle estensioni PHP. Un’alternativa è usarewp_remote_get()all’interno di WordPress; questa funzione opera tramite l’API HTTP del core e seleziona automaticamente un trasporto disponibile.
Ogni quanto vengono aggiornati i tassi nell’API?
Bitpay aggiorna il tasso a ogni richiesta; i valori riflettono lo spread di mercato corrente. CoinGecko aggiorna i dati una volta ogni 30-60 secondi per l’endpoint dei prezzi semplici. Ai fini della visualizzazione su un sito web, una frequenza di aggiornamento di «una volta ogni 5 minuti» è più che sufficiente; il mercato crypto è volatile, ma non così tanto che le fluttuazioni secondo per secondo contino per un blocco informativo.
Quale API scegliere per il tuo progetto
Bitpay e CoinGecko rispondono a esigenze diverse senza competere direttamente:
- Se stai costruendo un modulo di pagamento con conversione «BTC → USD», usa Bitpay: una singola riga URL, codice minimo, tassi sempre freschi.
- Se stai costruendo una dashboard con grafici e un portafoglio di 10 coin, usa CoinGecko: richieste di prezzo in batch, dati storici, capitalizzazione di mercato e volume in una sola chiamata.
- Se ti serve l’avvio più rapido possibile senza dipendenze esterne, usa Bitpay senza cURL tramite
file_get_contents: 10 righe di codice e il tasso è sulla tua pagina.
Inizia in modo semplice: copia il primo esempio di questo articolo, sostituisci la valuta con la tua e aprilo nel browser. Se funziona, inseriscilo nel caching usando il modello del passo 3 e fai il deploy sul sito in produzione. Facci sapere nei commenti quale API hai scelto alla fine.



