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 в итоге выбрали, напишите в комментариях.