Skip to content

Все для WordPress, веб-розробки — і не тільки

💰 PHP API для отримання поточної ціни Bitcoin у 2026: від простого скрипта до production-рішення

💰 PHP API для отримання поточної ціни Bitcoin у 2026: від простого скрипта до production-рішення

Сайт приймає криптовалюту, а курс скаче на відсотки за пів години. Клієнт хоче бачити актуальну ціну Bitcoin у фіатній валюті прямо в інтерфейсі, не скриншот із біржі, а живе число з API.

Ручний моніторинг курсу через вкладку CoinMarketCap забирає час і дає дані із затримкою. А готові плагіни під крипту часто перевантажені: реклама, зайві запити, прив'язка до одного джерела.

Нижче два способи отримати поточну ціну Bitcoin через PHP: від примітивного скрипта на 10 рядків до production-варіанта з кешуванням і вибором джерела. Без платних тарифів, без SDK на 40 мегабайт.

💡 Швидкий огляд:

  • Вибираємо API-джерело: Bitpay (безплатний, без ключа) або CoinGecko (більше даних, теж безплатний)
  • Пишемо PHP-скрипт із file_get_contents або cURL, обидва варіанти з поясненням
  • Додаємо обробку помилок і файлове кешування на 5 хвилин, щоб не смикати API при кожному оновленні сторінки

Що таке API криптокотирувань і навіщо воно PHP-розробнику

API криптобірж та агрегаторів віддає поточний курс через HTTP, ви робите GET-запит, отримуєте JSON із парою «BTC/USD» і цифрою. Жодного WebSocket чи підписки: звичайний PHP-скрипт на дешевому хостингу справляється.

Типові сценарії, де це потрібно:

  • Платіжний шлюз. Показати користувачеві: «До сплати 0.00031 BTC», курс узято не зі стелі, а з API.
  • Дашборд. Адмінка інтернет-магазину з блоком «Курси криптовалют».
  • Портфельний трекер. Зібрали 5 монет, скрипт раз на хвилину оновлює їхню сумарну вартість.

Для статті обрано два джерела з безплатним доступом без реєстрації: Bitpay і CoinGecko. Обидва працюють через HTTPS, віддають JSON і не потребують API-ключа на базовому рівні.

Графік кількості Bitcoin-транзакцій за місяць

Крок 1: отримуємо курс через Bitpay API

Bitpay — це платіжний процесор для Bitcoin. У нього є публічний endpoint /api/rates, який віддає курси BTC до 150+ фіатних валют одним JSON-масивом. Ні токена, ні ліміту на кількість запитів для базового використання немає.

Простий варіант: file_get_contents

Найкоротший робочий код. Додайте його у файл bitcoin-rates.php у корені сайту та відкрийте в браузері:

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}

Скрипт запитує весь масив курсів, проходить по ньому циклом і виводить тільки USD та EUR. file_get_contents() з HTTPS-URL працює, якщо в php.ini увімкнена директива allow_url_fopen = On, на більшості хостингів вона активна за замовчуванням.

Більш надійний підхід: cURL

file_get_contents не виставляє таймаути й мовчки падає при мережевій помилці. Для реального сайту краще взяти cURL:

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 временно недоступно.';
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}

Таймаут 10 секунд, перевірка HTTP-коду, number_format для читабельного виводу. На практиці такого скрипта достатньо, щоб вбудувати курс у футер або сайдбар сайту.

Крок 2: альтернативне джерело, CoinGecko API

Bitpay віддає курси тільки для BTC і BCH. Якщо потрібні ще Ethereum, Solana або будь-який інший актив із топ-500, підключаємо CoinGecko API. Безплатний тариф дає 10-30 запитів на хвилину без ключа.

Простий запит ціни Bitcoin та Ethereum

Ендпоінт /api/v3/simple/price приймає список монет через кому та валюти через параметр 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";

Відповідь приходить компактна, тільки ті монети й валюти, які запросили. Жодного перебору циклом по 150 записах.

Що ще вміє CoinGecko

  • Історичні дані: /api/v3/coins/bitcoin/history?date=01-01-2026, курс на конкретну дату.
  • Ринкові дані: /api/v3/coins/bitcoin, market cap, volume, зміна за 24 години, циркулююча пропозиція.
  • Трендові монети: /api/v3/search/trending, топ пошукових запитів за добу.

Для простого курсу «BTC/USD» вистачить першого прикладу. Якщо робите дашборд, підключайте розширений ендпоінт.

Крок 3: кешування та захист від падіння API

Смикати зовнішній API при кожному завантаженні сторінки, погана практика. Мережа може моргнути, сервер CoinGecko лягти на хвилину, а відвідувач побачить помилку замість курсу.

Надійне рішення, файлове кешування. Скрипт зберігає відповідь API у локальний JSON-файл і оновлює його раз на 5 хвилин. Усі проміжні запити читають кеш, миттєво й без зовнішніх викликів.

1<?php
2$cacheFile = __DIR__ . '/btc-cache.json';
3$cacheTime = 300; // 5 минут
4
5// Если кеш свежий — читаем его
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 ' (кеш, обновлен ' . date('H:i:s', filemtime($cacheFile)) . ')';
10 exit;
11}
12
13// Кеш устарел или отсутствует — запрашиваем 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 упал — отдаем устаревший кеш, если он есть
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 ' (устаревший кеш — API не ответил)';
30 exit;
31 }
32 echo 'Нет данных. Попробуйте позже.';
33 exit;
34}
35
36// Сохраняем свежий ответ и выводим
37file_put_contents($cacheFile, $response);
38$data = json_decode($response, true);
39echo '1 BTC = $' . number_format($data['bitcoin']['usd'], 2);
40echo ' (свежие данные)';

Зверніть увагу: скрипт спочатку перевіряє кеш, і тільки за потреби йде в API. Якщо API не відповідає, віддається останній збережений курс із позначкою «застарілий кеш». Відвідувач бачить число, а не білу сторінку з помилкою.

Перед встановленням на бойовий сайт переконайтеся, що PHP має права на запис у папку зі скриптом. І зробіть повний бекап, скрипт записує файл на диск.

У відео вище, візуальний розбір CoinGecko API з прикладами запитів і відповідей у реальному часі. Підходить, якщо ви вперше працюєте з крипто-API і хочете побачити повний цикл: від GET-запиту до парсингу JSON.

⁉️🤔 Часті запитання

Який API обрати, Bitpay чи CoinGecko?

Якщо потрібен тільки курс Bitcoin до долара, беріть Bitpay. Він простіший, віддає відповідь одним масивом без параметрів і не має лімітів. Якщо плануєте працювати з десятком монет або показувати графіки, CoinGecko: більше даних, гнучкі ендпоінти, і безплатний тариф покриває потреби невеликого проєкту.

Bitpay API потребує API-ключа?

Публічний ендпоінт /api/rates ключа не потребує. Це відкритий endpoint, яким користуються гаманці та біржі для відображення курсів. Комерційні ендпоінти Bitpay (створення інвойсів, прийом платежів) потребують токена, але для простого отримання курсу вони не потрібні.

Чому не CoinMarketCap API?

У CoinMarketCap безплатний тариф потребує реєстрації та видачі ключа. Ліміт, 10 000 запитів на місяць, для дрібного проєкту вистачає. Але для старту «з нуля без реєстрацій» Bitpay і CoinGecko зручніші: скопіювали URL, вставили в код, запрацювало.

Що робити, якщо хостинг блокує file_get_contents для зовнішніх URL?

Переходьте на cURL, він доступний практично на будь-якому хостингу. Якщо вимкнений і cURL (рідкість для 2026 року), уточніть у хостера можливість увімкнення curl.so у PHP-розширеннях. Альтернатива: використовувати wp_remote_get() всередині WordPress, ця функція працює через HTTP API ядра і сама обирає доступний транспорт.

Наскільки часто оновлюються курси в API?

Bitpay оновлює курс при кожному запиті, цифри відповідають поточному ринковому спреду. CoinGecko оновлює дані раз на 30-60 секунд для простого price-ендпоінта. Для відображення на сайті частоти «раз на 5 хвилин» більш ніж достатньо, крипторинок волатильний, але не настільки, щоб секундні коливання мали значення для інформаційного блоку.

Який API взяти під свою задачу

Bitpay і CoinGecko закривають різні потреби, не конкуруючи напряму:

  • Якщо робите платіжну форму з конвертацією «BTC → USD», Bitpay: один рядок URL, мінімум коду, курс завжди свіжий.
  • Якщо будуєте дашборд із графіками та портфелем із 10 монет, CoinGecko: запит ціни пачкою, історичні дані, market cap і volume одним викликом.
  • Якщо потрібен максимально швидкий старт без зовнішніх залежностей, Bitpay без cURL через file_get_contents: 10 рядків коду і курс на сторінці.

Почніть із простого: скопіюйте перший приклад зі статті, замініть валюту на свою та відкрийте в браузері. Заробило, обгортайте в кешування за шаблоном із кроку 3 і ставте на бойовий сайт. А який API в підсумку обрали, напишіть у коментарях.