MonHunt
Открыть бота

Kufar Spy · публичное API

Публичное API (read-only)

Кэш tops и графиков цен. Без живых запросов к Kufar на каждый hit. Не официальный API Куфара.

Защита: браузерные запросы только с Origin/Referer https://monhunt.xyz + короткий X-MH-Token (JS challenge). Лимит ≈15 req/мин с IP. Без Origin — 403. SEO/AI-краулеры (Googlebot, YandexBot, …) — allowlist без token.

1. Challenge (браузер)

GET /api/public/challenge
Origin: https://monhunt.xyz

→ { "ok": true, "token": "…", "expires_in": 120, "guard": true }

2. Tops (кэш-ленты)

GET /api/public/tops?category=hot|phones|laptops|bikes|gaming&limit=18
Origin: https://monhunt.xyz
Header: X-MH-Token: <token>

→ { ok, cached, items[], lotOfDay?, updatedAt, categories[] }

3. Prices (кэш статистики)

GET /api/public/prices?category=phones&days=7
GET /api/public/prices?query=iphone&days=7
GET /api/public/prices/popular?days=7&limit=10
Origin + X-MH-Token

→ { ok, cached, series: [{ date, avg_price, sample_size }], … }

Пример (same-origin браузер)

// На лендинге уже есть mhPublicFetch — он сам берёт challenge
const tops = await mhPublicFetch('/api/public/tops?category=hot&limit=6')
  .then(r => r.json());

SEO

Категорийные страницы (/phones, …) и /sitemap.xml — серверный HTML без challenge. Краулеры получают контент в HTML; JSON API для них тоже без token (UA allowlist).

Не входит в публичный API