Skip to content

Allt om WordPress, webbutveckling — och mer därtill

💰 PHP API för att få aktuellt bitcoinpris 2026: från ett enkelt skript till en produktionslösning

💰 PHP API för att få aktuellt bitcoinpris 2026: från ett enkelt skript till en produktionslösning

Webbplatsen accepterar kryptovaluta, och växelkursen svänger med några procent inom en halvtimme. Kunden vill se det aktuella Bitcoinpriset i fiatvaluta direkt i gränssnittet, inte en skärmdump från en börs, utan en levande siffra från API:et.

Att manuellt övervaka kursen via en CoinMarketCap-flik tar tid och ger fördröjd data. Samtidigt är färdiga kryptoplugins ofta uppblåsta: annonser, onödiga anrop, låsta till en enda källa.

Här nedan finns två sätt att hämta det aktuella Bitcoinpriset via PHP: från ett enkelt skript på 10 rader till en produktionsredo lösning med cachning och källval. Inga betalplaner, inget SDK på 40 megabyte.

💡 Snabb översikt:

  • Välja en API-källa: Bitpay (gratis, ingen nyckel krävs) eller CoinGecko (mer data, också gratis)
  • Skriva ett PHP-skript med file_get_contents eller cURL, båda tillvägagångssätten förklaras
  • Lägga till felhantering och filcachning i 5 minuter för att undvika att anropa API:et vid varje sidladdning

Vad är ett API för kryptopriser och varför behöver en PHP-utvecklare det

API:er för kryptobörser och aggregatorer returnerar den aktuella kursen över HTTP: du gör en GET-förfrågan och får JSON med ett "BTC/USD"-par och en siffra. Ingen WebSocket eller prenumeration behövs: ett vanligt PHP-skript på billigt webbhotell hanterar det utan problem.

Typiska scenarier där detta är användbart:

  • Betalningsgateway. Visa användaren: "Belopp att betala: 0.00031 BTC," med kursen hämtad från ett API istället för påhittad.
  • Dashboard. En adminpanel för en webbutik med ett block för "Kryptovalutakurser".
  • Portföljtracker. Du äger 5 mynt, och ett skript uppdaterar deras totala värde en gång i minuten.

För den här artikeln valdes två källor med fri åtkomst och utan registrering: Bitpay och CoinGecko. Båda fungerar över HTTPS, returnerar JSON och kräver ingen API-nyckel på grundnivån.

Diagram som visar antalet Bitcoin-transaktioner under en månad

Steg 1: hämta kursen via Bitpay API

Bitpay är en betalningsprocessor för Bitcoin. Den har en publik endpoint /api/rates som returnerar BTC-kurser för 150+ fiatvalutor i en enda JSON-array. Ingen token, inga begränsningar för antal anrop vid grundläggande användning.

Enkel metod: file_get_contents

Den kortaste fungerande koden. Lägg till den i en fil som heter bitcoin-rates.php i din webbplatsrot och öppna den i en webbläsare:

1<?php
2$url = "https://bitpay.com/api/rates";
3$json = json_decode(file_get_contents($url), true);
4
5foreach ($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}

Skriptet begär hela kursarrayen, loopar igenom den och matar endast ut USD och EUR. file_get_contents() med en HTTPS-URL fungerar om direktivet allow_url_fopen = On är aktiverat i php.ini; hos de flesta webbhotell är det aktivt som standard.

Mer tillförlitlig metod: cURL

file_get_contents sätter inga timeout-värden och misslyckas tyst vid nätverksfel. För en riktig webbplats är cURL det bättre valet:

1<?php
2$ch = curl_init();
3curl_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);
11curl_close($ch);
12
13if ($httpCode !== 200 || !$response) {
14 echo 'API temporarily unavailable.';
15 exit;
16}
17
18$data = json_decode($response, true);
19
20foreach ($data as $item) {
21 if ($item['code'] === 'USD') {
22 echo '1 BTC = $' . number_format($item['rate'], 2) . "\n";
23 }
24}

En timeout på 10 sekunder, HTTP-statuskods-kontroll och number_format för läsbar utdata. I praktiken räcker ett skript som detta för att bädda in kursen i en sidfot eller sidopanel.

Steg 2: alternativ källa, CoinGecko API

Bitpay tillhandahåller endast kurser för BTC och BCH. Om du också behöver Ethereum, Solana eller någon annan tillgång från topp 500, anslut till CoinGecko API. Gratisnivån tillåter 10-30 anrop per minut utan nyckel.

Enkel förfrågan för Bitcoin- och Ethereumpriser

Endpointen /api/v3/simple/price accepterar en kommaseparerad lista med mynt och valutor via parametern 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();
7curl_setopt_array($ch, [
8 CURLOPT_URL => $url,
9 CURLOPT_RETURNTRANSFER => true,
10 CURLOPT_TIMEOUT => 10,
11]);
12$response = curl_exec($ch);
13curl_close($ch);
14
15$prices = json_decode($response, true);
16
17echo 'BTC: $' . $prices['bitcoin']['usd'] . ' / €' . $prices['bitcoin']['eur'] . "\n";
18echo 'ETH: $' . $prices['ethereum']['usd'] . ' / ₽' . $prices['ethereum']['rub'] . "\n";

Svaret är kompakt och innehåller endast de mynt och valutor du efterfrågade. Ingen loop genom 150 poster.

Vad CoinGecko mer kan göra

  • Historisk data: /api/v3/coins/bitcoin/history?date=01-01-2026, kursen ett specifikt datum.
  • Marknadsdata: /api/v3/coins/bitcoin, börsvärde, volym, 24-timmars förändring, cirkulerande utbud.
  • Trendande mynt: /api/v3/search/trending, toppsökningar under det senaste dygnet.

För en enkel "BTC/USD"-kurs räcker det första exemplet. Om du bygger en dashboard, anslut till den utökade endpointen.

Steg 3: cachning och skydd mot API-fel

Att anropa ett externt API vid varje sidladdning är dålig praxis. Nätverket kan hacka, CoinGeckos server kan ligga nere en minut, och besökaren ser ett fel istället för kursen.

En robust lösning är filcachning. Skriptet sparar API-svaret i en lokal JSON-fil och uppdaterar den en gång var 5:e minut. Alla mellanliggande anrop läser från cachen, omedelbart och utan externa anrop.

1<?php
2$cacheFile = __DIR__ . '/btc-cache.json';
3$cacheTime = 300; // 5 minutes
4
5// If cache is fresh — read it
6if (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();
15curl_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);
22curl_close($ch);
23
24if ($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
37file_put_contents($cacheFile, $response);
38$data = json_decode($response, true);
39echo '1 BTC = $' . number_format($data['bitcoin']['usd'], 2);
40echo ' (fresh data)';

Observera att skriptet kontrollerar cachen först och endast anropar API:et när det behövs. Om API:et inte svarar, serveras den senast sparade kursen med en etikett om "föråldrad cache". Besökaren ser en siffra, inte en tom sida med ett fel.

Innan du driftsätter på en produktionssajt, se till att PHP har skrivrättigheter till skriptets katalog. Gör också en fullständig säkerhetskopia, eftersom skriptet skriver en fil till disken.

Videon ovan ger en visuell genomgång av CoinGecko API med exempel på förfrågningar och svar i realtid. Den passar om du arbetar med ett krypto-API för första gången och vill se hela cykeln: från GET-förfrågan till JSON-tolkning.

⁉️🤔 Vanliga frågor

Vilket API ska jag välja, Bitpay eller CoinGecko?

Om du bara behöver Bitcoin till dollar-kursen, välj Bitpay. Det är enklare, returnerar ett svar som en enda array utan parametrar och har inga begränsningar. Om du planerar att arbeta med ett dussin mynt eller visa diagram, välj CoinGecko: mer data, flexibla endpoints och en gratisnivå som täcker behoven för ett litet projekt.

Kräver Bitpay API en API-nyckel?

Den publika endpointen /api/rates kräver ingen nyckel. Det är en öppen endpoint som används av plånböcker och börser för att visa kurser. Kommersiella Bitpay-endpoints (skapa fakturor, ta emot betalningar) kräver en token, men de behövs inte för att bara hämta kurser.

Varför inte CoinMarketCap API?

CoinMarketCaps gratisnivå kräver registrering och en nyckel. Gränsen är 10 000 anrop per månad, vilket räcker för ett litet projekt. Men för ett "börja från noll utan registrering"-upplägg är Bitpay och CoinGecko smidigare: kopiera URL:en, klistra in den i din kod, och det fungerar.

Vad händer om mitt webbhotell blockerar file_get_contents för externa URL:er?

Byt till cURL, som finns tillgängligt på praktiskt taget alla webbhotell. Om cURL också är inaktiverat (sällsynt 2026), fråga ditt webbhotell om att aktivera curl.so i PHP-tilläggen. Ett alternativ är att använda wp_remote_get() inuti WordPress; den funktionen fungerar genom core HTTP API och väljer automatiskt en tillgänglig transport.

Hur ofta uppdateras kurserna i API:et?

Bitpay uppdaterar kursen vid varje anrop; siffrorna speglar den aktuella marknadsspreaden. CoinGecko uppdaterar data en gång var 30-60 sekund för simple price-endpointen. För visning på en webbplats är en uppdateringsfrekvens på "en gång var 5:e minut" mer än tillräckligt; kryptomarknaden är volatil, men inte så mycket att svängningar från sekund till sekund spelar roll för ett informationsblock.

Vilket API ska du välja för din uppgift

Bitpay och CoinGecko adresserar olika behov utan att direkt konkurrera:

  • Om du bygger ett betalningsformulär med "BTC → USD"-konvertering, använd Bitpay: en enda URL-rad, minimal kod, alltid färska kurser.
  • Om du bygger en dashboard med diagram och en portfölj med 10 mynt, använd CoinGecko: batch-prisförfrågningar, historisk data, börsvärde och volym i ett enda anrop.
  • Om du behöver snabbast möjliga start utan externa beroenden, använd Bitpay utan cURL via file_get_contents: 10 rader kod och kursen finns på din sida.

Börja enkelt: kopiera det första exemplet från den här artikeln, ersätt valutan med din egen och öppna det i en webbläsare. Om det fungerar, slå in det i cachning med mallen från steg 3 och driftsätt på din produktionssajt. Låt oss veta i kommentarerna vilket API du slutligen valde.