VPNPrice

API цен: документация

Чтобы цены вашего сервиса отображались в каталоге, сделайте на своём сайте один публичный роут, отдающий JSON. Мы опрашиваем его каждый час.

Формат ответа

GET https://your-vpn.example/api/vpnprice
Content-Type: application/json

{
  "month": 299,
  "year": 2490
}
ПолеТипОписание
monthnumberЦена подписки на 1 месяц в рублях. Опустите, если месячного тарифа нет.
yearnumberПолная цена подписки на 12 месяцев в рублях — не «в месяц при оплате за год». Опустите, если годового тарифа нет.

Требования

  • Только HTTPS. HTTP-адреса не принимаются.
  • Статус ответа 200, заголовок Content-Type: application/json.
  • Время ответа не более 5 секунд, размер до 64 КБ.
  • Цены — числа (не строки), положительные, в рублях. Допустимы дробные: 299.5.
  • Хотя бы одно из полей month / year должно присутствовать.
  • Если у вас несколько тарифов, передавайте базовый (самый дешёвый полноценный) — тот, который увидит новый пользователь без промокодов.
  • Эндпоинт должен быть доступен без авторизации. Если хотите ограничить доступ — фильтруйте по User-Agent VPNPriceBot/1.0.

Примеры

Только месячный тариф

{ "month": 199 }

Только годовой тариф

{ "year": 1990 }

Node.js / Express

app.get("/api/vpnprice", (req, res) => {
  res.json({
    month: plans.monthly.priceRub,
    year: plans.yearly.priceRub,   // цена за весь год, не за месяц
  });
});

PHP

<?php
header('Content-Type: application/json');
echo json_encode([
  'month' => 299,
  'year'  => 2490,
]);

Как мы обрабатываем цены

  • Каждый успешный опрос сохраняется в историю — она видна на странице сервиса в виде графика.
  • Годовая цена дополнительно показывается в пересчёте «в месяц» (делим на 12), чтобы её было удобно сравнивать с месячной.
  • Если новая цена отличается от предыдущей более чем на 40%, она помечается как подозрительная и не публикуется до проверки модератором. Это защита от ошибок в вашем API.
  • После 3 неудачных опросов подряд сервис получает пометку «цены устарели», а вы — уведомление на email.
  • В кабинете доступен лог последних опросов с текстом ошибок.

Частые ошибки

  • В year передана цена «в месяц». Если годовая цена меньше двух месячных, проверка предупредит вас.
  • Строки вместо чисел: "299" вместо 299.
  • Цены в другой валюте. Конвертируйте в рубли на своей стороне.
  • Редирект на HTTP или на страницу логина.

Проверить свой эндпоинт можно кнопкой «Проверить API» в кабинете на шаге 3 — она покажет распознанные значения и предупреждения.