Обновлено: 15.07.2026, 23:26 (МСК)

API цен на нефть

Котировки Brent, WTI, Urals и природного газа — обычным GET-запросом, в JSON. Один заголовок авторизации, один параметр, никаких SDK-обвязок и терминалов за $2 000 в месяц.

Brent

Мировой эталон
$85.84

USD за баррель

by_code=BRENT_CRUDE_USD

WTI

Эталон США
$80.31

USD за баррель

by_code=WTI_CRUDE_USD

Эти цифры на странице пришли из того же эндпоинта

GET /v1/prices/latest?by_code=BRENT_CRUDE_USD $85.84
Бесплатный ключ

Первый запрос за две минуты

Зарегистрируйтесь, скопируйте ключ из личного кабинета и подставьте его в заголовок Authorization. Всё остальное — обычный HTTP.

curl
curl 'https://api.oilpriceapi.com/v1/prices/latest?by_code=BRENT_CRUDE_USD' \
  -H 'Authorization: Token YOUR_API_KEY'
Python (requests)
import requests

API_KEY = "YOUR_API_KEY"

response = requests.get(
    "https://api.oilpriceapi.com/v1/prices/latest",
    headers={"Authorization": f"Token {API_KEY}"},
    params={"by_code": "BRENT_CRUDE_USD"},
    timeout=10,
)
response.raise_for_status()

data = response.json()["data"]
print(data["code"], data["price"], data["created_at"])
JavaScript (fetch)
const response = await fetch(
  "https://api.oilpriceapi.com/v1/prices/latest?by_code=WTI_CRUDE_USD",
  { headers: { Authorization: "Token YOUR_API_KEY" } },
);

if (!response.ok) {
  throw new Error("Oil Price API вернул статус " + response.status);
}

const { data } = await response.json();
console.log(data.code, data.price, data.created_at);
Формат ответа (пример)
{
  "status": "success",
  "data": {
    "price": 82.47,
    "formatted": "$82.47",
    "currency": "USD",
    "code": "BRENT_CRUDE_USD",
    "type": "spot_price",
    "created_at": "2026-07-14T09:35:12Z"
  }
}

created_at — метка времени самих данных, а не момента ответа. Именно её нужно показывать пользователю: если данные не пришли, честнее вывести прочерк, чем подставить старое или нулевое значение.

Эндпоинты

Метод и путьЧто возвращаетПараметры
GET /v1/prices/latestПоследняя котировка по товаруby_code
GET /v1/prices/historicalИсторический ряд с агрегацией по интервалуby_code, interval
GET /v1/pricesКотировки за диапазон дат (сырые записи)by_code, start_date, end_date
История: дневной интервал по WTI
curl 'https://api.oilpriceapi.com/v1/prices/historical?by_code=WTI_CRUDE_USD&interval=daily' \
  -H 'Authorization: Token YOUR_API_KEY'

Доступные интервалы: daily, weekly, monthly. Исторические ряды — с 2020 года; подробнее на странице исторических цен на нефть.

Коды товаров

Нефть Brent

BRENT_CRUDE_USD

Североморский эталон, USD за баррель

Нефть WTI

WTI_CRUDE_USD

Американский эталон, USD за баррель

Нефть Urals

URALS_CRUDE_USD

Российский экспортный сорт, USD за баррель

Природный газ

NATURAL_GAS_USD

Henry Hub, USD за MMBtu

Кроме перечисленных доступны и другие энергетические товары — нефтепродукты, судовое топливо, уголь. Полный перечень кодов и их описание — в документации. Коды регистрозависимы: BRENT_CRUDE_USD, не brent_crude_usd.

Коды ответов и лимиты

СтатусЗначениеЧто делать
200 OKЗапрос выполненДанные в поле data. Проверьте created_at — это метка времени самих данных, а не момента ответа.
401 UnauthorizedКлюч отсутствует или неверенПроверьте заголовок Authorization: он должен иметь вид «Token ВАШ_КЛЮЧ», а не «Bearer».
402 Payment RequiredИсчерпана квота тарифаМесячный лимит запросов израсходован. Дождитесь начала следующего периода или перейдите на более высокий тариф.
404 Not FoundНеизвестный код товараПроверьте значение by_code — коды регистрозависимы, например BRENT_CRUDE_USD.
429 Too Many RequestsСлишком частые запросыСнизьте частоту обращений и повторите запрос с экспоненциальной задержкой. Кэшируйте ответ: котировки обновляются раз в 5 минут, чаще опрашивать бессмысленно.
5xxОшибка на стороне сервисаПовторите запрос позже. Не подставляйте вместо цены ноль или значение по умолчанию — отсутствие данных лучше показать явно.

Авторизация

Один заголовок: Authorization: Token ВАШ_КЛЮЧ. Ключ выдаётся сразу после регистрации и перевыпускается в личном кабинете.

Частота обновления

Котировки обновляются каждые 5 минут. Опрашивать чаще незачем — кэшируйте ответ на своей стороне и ориентируйтесь на поле created_at.

Лимиты запросов

Бесплатный тариф — 100 запросов в месяц. Пробный период — 7 дней и 10 000 запросов, без карты. Лимиты платных тарифов — на странице тарифов.

Частые вопросы разработчиков

Как получить цену нефти через API?

Отправьте GET-запрос на https://api.oilpriceapi.com/v1/prices/latest с параметром by_code (например, BRENT_CRUDE_USD) и заголовком Authorization: Token ВАШ_КЛЮЧ. В ответ придёт JSON с ценой, валютой, кодом товара и меткой времени.

Как устроена авторизация?

По API-ключу в заголовке: Authorization: Token ВАШ_КЛЮЧ. Ключ выдаётся сразу после регистрации и перевыпускается в личном кабинете. OAuth и подписи запросов не требуются.

Есть ли бесплатный тариф?

Да. Бесплатный тариф — 100 запросов в месяц. Кроме того, доступен пробный период: 7 дней и 10 000 запросов, банковская карта не нужна. Актуальные платные тарифы — на странице тарифов.

Какие коды товаров доступны?

Основные: BRENT_CRUDE_USD (нефть Brent), WTI_CRUDE_USD (нефть WTI), URALS_CRUDE_USD (нефть Urals), NATURAL_GAS_USD (природный газ, Henry Hub). Кроме них доступны другие энергетические товары; полный перечень кодов — в документации.

Как часто обновляются котировки?

Каждые 5 минут. В ответе всегда приходит поле created_at — метка времени самих данных. Ориентируйтесь на неё, а не на время своего запроса: это единственный честный признак свежести.

Какие ошибки может вернуть API?

401 — ключ отсутствует или неверен; 402 — исчерпана месячная квота тарифа; 404 — неизвестный код товара; 429 — слишком частые запросы; 5xx — ошибка на стороне сервиса. Обрабатывайте их явно и не подставляйте вместо отсутствующей цены нулевое значение.

Можно ли получить исторические данные?

Да, через эндпоинт /v1/prices/historical с параметрами by_code и interval (daily, weekly или monthly). Исторические ряды доступны с 2020 года; глубина зависит от товара и источника, поэтому запрашивайте нужный код и диапазон дат и проверяйте ответ.

В каком формате приходят данные?

JSON. Ответ содержит поле status и объект data с ценой, форматированным значением, валютой, кодом товара и меткой времени. Конвертация в CSV занимает несколько строк на Python или JavaScript.

Ключ выдаётся сразу после регистрации

Бесплатный тариф — 100 запросов в месяц. Пробный период — 7 дней и 10 000 запросов, банковская карта не нужна.

Создать бесплатный аккаунт