API каталога
Те же данные, что на страницах, — файлами JSON. Без ключа и без регистрации. Нужно это ровно для одного: чтобы вы могли посчитать свой бюджет на прокси в своей таблице, а не переписывать числа с экрана.
Адреса
/api/v1/prices.json |
все цены, которые опубликованы на сайте 69 записей |
/api/v1/prices/dc_ipv6.json |
цены одного типа: IPv6-прокси 3 записи |
/api/v1/prices/dc_pool.json |
цены одного типа: Серверные прокси с ротацией 9 записей |
/api/v1/prices/dc_private.json |
цены одного типа: Серверные прокси (индивидуальные) 8 записей |
/api/v1/prices/dc_shared.json |
цены одного типа: Общие серверные прокси 2 записи |
/api/v1/prices/isp_static.json |
цены одного типа: ISP-прокси (статические резидентские) 9 записей |
/api/v1/prices/mob_pool.json |
цены одного типа: Мобильные прокси из пула 10 записей |
/api/v1/prices/mob_port.json |
цены одного типа: Мобильные прокси (выделенный порт) 3 записи |
/api/v1/prices/res_rotating.json |
цены одного типа: Резидентские прокси 16 записей |
/api/v1/prices/res_unlimited.json |
цены одного типа: Резидентские прокси с безлимитом 1 запись |
/api/v1/prices/scraping_api.json |
цены одного типа: Scraping API 8 записей |
/api/v1/types.json |
справочник типов: единица оплаты, обычный объём, описание 10 записей |
/api/v1/providers.json |
справочник сервисов и признаки, выясненные нами 21 запись |
/api/v1/history.json |
история изменений цены с различением «ход сервиса» и «наша правка» 75 записей |
/api/v1/measurements.json |
наши замеры: доля дошедших, задержка, адреса на выходе 1 запись |
Начать проще с index.json: там перечислены все
адреса с числом записей и оговорки, без которых числа читаются неверно.
curl -s https://proxyok.com/api/v1/prices/res-rotating.json | jq '.prices[0]'
Путь принимается и с дефисом (res-rotating), и с подчёркиванием
(res_rotating), и без .json — как удобнее.
Как выглядит одна цена
{
"provider": "webshare",
"type": "dc_private",
"plan": "Proxy server dedicated",
"unit": "ip_month",
"currency": "USD",
"tiers": [
{
"from": 1,
"price": 1.4
},
{
"from": 15,
"price": 1.33
},
{
"from": 26,
"price": 1.26
}
],
"entry_price": 1.4,
"min_purchase_usd": 6,
"period_days": 30,
"stock": "ok",
"socks5": true,
"traffic_expires": null,
"trust": "api",
"trust_label": "по API",
"checked_at": "2026-08-09",
"source_url": "https://proxy.webshare.io/api/v2/subscription/pricing/",
"age_days": 0,
"stale": false
}
Здесь показаны не все поля — у настоящей записи есть ещё список стран, полное покрытие сервиса и даты, после которых цена считается устаревшей.
7 оговорок, без которых числа врут
- У каждой цены обязательно стоят checked_at (когда мы её видели) и trust (как получили).
- source_url бывает null — это значит «ссылку не записали», а не «источника нет»; цифру без даты не публикуйте ни в каком случае.
- null значит «не выясняли», а не «нет».
- Признак, которого мы не проверяли, приходит null или отсутствует. Считать его отрицанием нельзя.
- age_days и stale посчитаны на generated_at и в файле застывают: файлы пересобираются не по расписанию.
- Считайте сами от checked_at — или берите готовые даты stale_at и drop_at, им время не мешает. Пороги — в thresholds.
- В истории цен kind различает ход сервиса (provider) и нашу собственную правку записи (fix).
- Смешивать их нельзя: во втором случае цену менял не сервис, а мы исправляли себя.
- tiers — лестница объёмов: from это порог, с которого действует price.
- Итог на нужный объём считается по последней ступени, чей from не превышает объём, но не меньше минимального чека.
- countries — четыре страны нашего справочника, по которым мы ведём страницы, а НЕ покрытие сервиса.
- Полное покрытие, как его заявляет сам сервис, — в countries_all и countries_total. Оба списка в нижнем регистре. «Страна не выбирается» — это country_optional, а не код.
- Признаки в prices.json описывают ТАРИФ, а признаки в providers.json — сервис целиком.
- Тариф может не наследовать ни тест, ни протокол кабинета, поэтому одноимённое поле профиля называется service_trial: складывать эти два объекта в один нельзя.
Чего этот API не делает
- Не отдаёт то, чего нет на сайте. Отбор тот же: цена старше 45 дней и запись, у которой на витрине стояло «от $X», в файлы не попадают. Отказаться печатать цифру у себя и тут же отдать её наружу файлом — так не бывает.
- Не фильтрует запросом. Файлы статические и лежат на кромке сети, поэтому отбор — это выбор файла, а не параметр. Зато они не падают и не тормозят.
- Не отдаёт наши партнёрские ссылки. В
siteстоит адрес самого сервиса. Иначе тот, кто встроит наши данные, стал бы носителем наших реферальных меток, не зная об этом. - Не выдержит любой нагрузки. Ключей и личных ограничений нет, но у бесплатного
плана Cloudflare суточный потолок — 100 000 обращений на весь сайт (сверено
с документацией 10.08.2026), и эти файлы идут в общий счёт. Качать их в цикле значит
уложить каталог целиком, включая страницы. Отдаются они с
cache-controlна полчаса — этого достаточно. - Не обновляется по расписанию. Файлы пересобираются вместе со страницами сайта,
и происходит это тогда, когда мы выкладываем сборку, — обычно раз в сутки, но обещать
частоту мы не можем. В каждом файле стоит
generated_at, у каждой цены — свояchecked_at; ориентируйтесь на них, а не на наше «обычно».
Что видно в истории цен прямо сейчас
В history.json сейчас 75
точек, и распределение у них
такое: 69 — первая цена, которую мы узнали,
6 — наши собственные правки записи,
0 — случаи, когда цену изменил сам сервис.
Ни одного случая, когда сервис поменял цену при нас. Это не значит,
что рынок стоит: это значит, что мы наблюдаем его недостаточно долго. Пока история — это
история нашей работы, а не рынка, и читать её как рыночную нельзя. Поле kind
существует именно для того, чтобы эту разницу нельзя было потерять по дороге.
Условия
Пользуйтесь свободно, ключ не нужен. Просим поставить рядом с числами ссылку на proxyok.com — не из вежливости: по ней читатель проверит дату проверки и уровень доверия, а без них цена значит меньше, чем кажется. Файлы пересобираются вместе с сайтом; частоту не обещаем — смотрите generated_at в самом файле и checked_at у каждой цены. Опрашивать чаще раза в сутки в любом случае незачем.
Поля в v1 могут добавляться, но не будут переименованы или удалены. Несовместимые изменения выйдут отдельным путём /api/v2/.
Цена — это факт, и объявлять на факт права мы не будем. Замеры наши, и ими тоже пользуйтесь: просто напишите, что они наши, и поставьте ссылку — по ней читатель проверит дату и то, сколько было прогонов.