Skip to content

Alles für WordPress, Webentwicklung — und mehr

💰 PHP-API zum Abrufen des aktuellen Bitcoin-Preises im Jahr 2026: vom einfachen Skript zur produktionsreifen Lösung

💰 PHP-API zum Abrufen des aktuellen Bitcoin-Preises im Jahr 2026: vom einfachen Skript zur produktionsreifen Lösung

Die Website akzeptiert Kryptowährung, und der Wechselkurs schwankt innerhalb einer halben Stunde um einige Prozent. Der Kunde möchte den aktuellen Bitcoin-Preis in Fiat-Währung direkt in der Oberfläche sehen, keinen Screenshot einer Börse, sondern einen Live-Wert aus der API.

Den Kurs manuell über einen CoinMarketCap-Tab zu verfolgen, kostet Zeit und liefert verzögerte Daten. Fertige Krypto-Plugins sind hingegen oft überladen: Werbung, unnötige Requests, an eine einzige Quelle gebunden.

Nachfolgend zwei Wege, den aktuellen Bitcoin-Preis per PHP abzurufen: von einem einfachen 10-Zeilen-Skript bis zu einer produktionsreifen Lösung mit Caching und Quellenauswahl. Keine kostenpflichtigen Tarife, kein 40-Megabyte-SDK.

💡 Kurzüberblick:

  • Auswahl einer API-Quelle: Bitpay (kostenlos, kein Schlüssel erforderlich) oder CoinGecko (mehr Daten, ebenfalls kostenlos)
  • Ein PHP-Skript mit file_get_contents oder cURL schreiben, beide Ansätze werden erläutert
  • Fehlerbehandlung und Datei-Caching für 5 Minuten ergänzen, um die API nicht bei jedem Seitenaufruf anzufragen

Was eine Krypto-Kurs-API ist und warum ein PHP-Entwickler sie benötigt

APIs von Krypto-Börsen und Aggregatoren liefern den aktuellen Kurs über HTTP: Sie stellen eine GET-Anfrage und erhalten JSON mit einem Paar wie „BTC/USD" und einer Zahl. Kein WebSocket, kein Abonnement nötig, ein normales PHP-Skript auf günstigem Hosting erledigt das problemlos.

Typische Szenarien, in denen das nützlich ist:

  • Payment-Gateway. Dem Nutzer anzeigen: „Zu zahlender Betrag: 0,00031 BTC", wobei der Kurs aus einer API stammt und nicht frei erfunden ist.
  • Dashboard. Ein Admin-Panel eines Online-Shops mit einem Block „Kryptowährungskurse".
  • Portfolio-Tracker. Sie halten 5 Coins, und ein Skript aktualisiert deren Gesamtwert einmal pro Minute.

Für diesen Artikel wurden zwei Quellen mit kostenlosem Zugang und ohne Registrierung ausgewählt: Bitpay und CoinGecko. Beide arbeiten über HTTPS, liefern JSON und benötigen auf Basisebene keinen API-Schlüssel.

Diagramm der Bitcoin-Transaktionsanzahl über einen Monat

Schritt 1: Kursabruf über die Bitpay-API

Bitpay ist ein Zahlungsdienstleister für Bitcoin. Er bietet einen öffentlichen Endpunkt /api/rates, der BTC-Kurse für über 150 Fiat-Währungen in einem einzigen JSON-Array zurückgibt. Kein Token, keine Anfragelimits für die Basisanwendung.

Einfacher Ansatz: file_get_contents

Der kürzeste funktionsfähige Code. Fügen Sie ihn in eine Datei bitcoin-rates.php im Wurzelverzeichnis Ihrer Website ein und öffnen Sie sie im Browser:

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}

Das Skript fragt das gesamte Kurs-Array ab, durchläuft es und gibt nur USD und EUR aus. file_get_contents() mit einer HTTPS-URL funktioniert, wenn die Direktive allow_url_fopen = On in der php.ini aktiviert ist; bei den meisten Hosting-Anbietern ist das standardmäßig der Fall.

Zuverlässigerer Ansatz: cURL

file_get_contents setzt keine Timeouts und scheitert bei Netzwerkfehlern stillschweigend. Für eine echte Website ist cURL die bessere Wahl:

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}

Ein 10-Sekunden-Timeout, HTTP-Statuscode-Prüfung und number_format für eine lesbare Ausgabe. In der Praxis genügt ein solches Skript, um den Kurs in den Footer oder die Sidebar einer Website einzubinden.

Schritt 2: Alternative Quelle, CoinGecko-API

Bitpay liefert nur Kurse für BTC und BCH. Benötigen Sie auch Ethereum, Solana oder einen anderen Vermögenswert aus den Top 500, binden Sie die CoinGecko-API an. Das kostenlose Kontingent erlaubt 10-30 Anfragen pro Minute ohne Schlüssel.

Einfache Anfrage für Bitcoin- und Ethereum-Preise

Der Endpunkt /api/v3/simple/price akzeptiert eine kommagetrennte Liste von Coins und Währungen über den Parameter 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";

Die Antwort ist kompakt und enthält nur die von Ihnen angeforderten Coins und Währungen. Kein Durchlaufen von 150 Einträgen.

Was CoinGecko sonst noch kann

  • Historische Daten: /api/v3/coins/bitcoin/history?date=01-01-2026, der Kurs an einem bestimmten Datum.
  • Marktdaten: /api/v3/coins/bitcoin, Marktkapitalisierung, Volumen, 24-Stunden-Änderung, Umlaufangebot.
  • Trending Coins: /api/v3/search/trending, die häufigsten Suchanfragen des vergangenen Tages.

Für einen einfachen „BTC/USD"-Kurs genügt das erste Beispiel. Wenn Sie ein Dashboard aufbauen, binden Sie den erweiterten Endpunkt ein.

Schritt 3: Caching und Schutz vor API-Ausfällen

Eine externe API bei jedem Seitenaufruf anzufragen, ist schlechte Praxis. Das Netzwerk kann stocken, der CoinGecko-Server kann für eine Minute ausfallen, und der Besucher sieht eine Fehlermeldung statt des Kurses.

Eine robuste Lösung ist Datei-Caching. Das Skript speichert die API-Antwort in einer lokalen JSON-Datei und aktualisiert sie einmal alle 5 Minuten. Alle dazwischenliegenden Anfragen lesen aus dem Cache, sofort und ohne externe Aufrufe.

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)';

Beachten Sie, dass das Skript zuerst den Cache prüft und die API nur bei Bedarf aufruft. Antwortet die API nicht, wird der letzte gespeicherte Kurs mit dem Hinweis „veralteter Cache" ausgeliefert. Der Besucher sieht eine Zahl, keine leere Seite mit einer Fehlermeldung.

Stellen Sie vor dem Deployment auf einer Produktivseite sicher, dass PHP Schreibrechte für das Skriptverzeichnis besitzt. Erstellen Sie außerdem ein vollständiges Backup, da das Skript eine Datei auf die Festplatte schreibt.

Das obige Video bietet eine visuelle Aufschlüsselung der CoinGecko-API mit Echtzeit-Beispielen für Anfrage und Antwort. Es eignet sich, wenn Sie zum ersten Mal mit einer Krypto-API arbeiten und den gesamten Zyklus sehen möchten: vom GET-Request bis zur JSON-Verarbeitung.

⁉️🤔 Häufig gestellte Fragen

Welche API sollte ich wählen, Bitpay oder CoinGecko?

Wenn Sie nur den Bitcoin-Dollar-Kurs benötigen, nehmen Sie Bitpay. Es ist einfacher, liefert eine Antwort als einzelnes Array ohne Parameter und hat keine Limits. Planen Sie, mit einem Dutzend Coins zu arbeiten oder Charts anzuzeigen, wählen Sie CoinGecko: mehr Daten, flexible Endpunkte und ein kostenloses Kontingent, das den Bedarf eines kleinen Projekts abdeckt.

Benötigt die Bitpay-API einen API-Schlüssel?

Der öffentliche Endpunkt /api/rates benötigt keinen Schlüssel. Es handelt sich um einen offenen Endpunkt, der von Wallets und Börsen zur Kursanzeige genutzt wird. Kommerzielle Bitpay-Endpunkte (Rechnungserstellung, Zahlungsannahme) erfordern ein Token, werden aber für den reinen Kursabruf nicht benötigt.

Warum nicht die CoinMarketCap-API?

Das kostenlose Kontingent von CoinMarketCap erfordert Registrierung und einen Schlüssel. Das Limit liegt bei 10.000 Anfragen pro Monat, was für ein kleines Projekt ausreicht. Für einen Ansatz „von Null starten ohne Registrierung" sind Bitpay und CoinGecko jedoch bequemer: URL kopieren, in den Code einfügen, und es funktioniert.

Was tun, wenn mein Hosting file_get_contents für externe URLs blockiert?

Wechseln Sie zu cURL, das auf praktisch jedem Hosting verfügbar ist. Sollte auch cURL deaktiviert sein (selten im Jahr 2026), fragen Sie Ihren Hoster nach der Aktivierung von curl.so in den PHP-Erweiterungen. Eine Alternative ist die Nutzung von wp_remote_get() innerhalb von WordPress; diese Funktion arbeitet über die Core-HTTP-API und wählt automatisch einen verfügbaren Transportweg.

Wie oft werden die Kurse in der API aktualisiert?

Bitpay aktualisiert den Kurs bei jeder Anfrage; die Werte spiegeln die aktuelle Marktspanne wider. CoinGecko aktualisiert die Daten für den Simple-Price-Endpunkt einmal alle 30-60 Sekunden. Für die Anzeige auf einer Website ist eine Aktualisierungsfrequenz von „einmal alle 5 Minuten" mehr als ausreichend; der Kryptomarkt ist volatil, aber nicht so sehr, dass sekündliche Schwankungen für einen Informationsblock relevant wären.

Welche API Sie für Ihre Aufgabe wählen sollten

Bitpay und CoinGecko decken unterschiedliche Anforderungen ab, ohne direkt zu konkurrieren:

  • Bauen Sie ein Zahlungsformular mit „BTC → USD"-Umrechnung, nutzen Sie Bitpay: eine einzige URL-Zeile, minimaler Code, stets aktuelle Kurse.
  • Bauen Sie ein Dashboard mit Charts und einem Portfolio aus 10 Coins, nutzen Sie CoinGecko: Batch-Preisabfragen, historische Daten, Marktkapitalisierung und Volumen in einem einzigen Aufruf.
  • Benötigen Sie den schnellstmöglichen Start ohne externe Abhängigkeiten, nutzen Sie Bitpay ohne cURL via file_get_contents: 10 Codezeilen, und der Kurs steht auf Ihrer Seite.

Fangen Sie einfach an: Kopieren Sie das erste Beispiel aus diesem Artikel, ersetzen Sie die Währung durch Ihre eigene und öffnen Sie es im Browser. Funktioniert es, versehen Sie es mit Caching nach der Vorlage aus Schritt 3 und deployen Sie es auf Ihrer Produktivseite. Teilen Sie uns in den Kommentaren mit, für welche API Sie sich letztlich entschieden haben.