Данные и API

Данные, API и встраивание

Каждое измерение точек публично — в CSV или JSON под лицензией CC BY 4.0. API открыт: без ключа, без регистрации, с любого источника. методика объясняет каждое поле.

Загрузки

Набор данныхЧто содержитФайлы
Суточные агрегатыНа каждый день UTC, точку, тест и транспорт: число тестов, успехи, доля, медианное время. Лучшая отправная точка.CSV за 30 дн.
CSV за 90 дн.
JSON за 90 дн.
Сырые измеренияКаждый результат точек измерения, от старых к новым. Не более 31 дня и 200 000 строк в файле; более длинные периоды запрашивайте частями через from и to.CSV за 7 дн.
JSON за 7 дн.
CSV за 30 дн.
СобытияДо 500 событий и заметок (сначала продолжающиеся, затем новейшие), с долями до и во время.CSV · JSON
Данные приложений по днямОпубликованные ячейки данных приложений по дням, странам и транспортам (только выше порога по устройствам и после эмбарго; до года назад). Пусто, пока данные приложений выключены.CSV · JSON

Файлы называются colitu-lab-{dataset}-{from}-{to}.{csv|json}. Время — UTC по RFC 3339; доли — дроби от 0 до 1 (четыре знака после запятой в CSV); пустые ячейки означают «не измерялось». Произвольный период: https://api.colitu.com/api/v1/lab/export/measurements.csv?from=2026-10-01&to=2026-10-08.

API

Базовый URL: https://api.colitu.com/api/v1/lab. Только чтение, только GET, без аутентификации. Каждый ответ — JSON в одной и той же оболочке:

{
  "data": { … },
  "license": "CC BY 4.0 — Colitu Lab, lab.colitu.com"
}

Ошибки приходят в виде {"error":{"code":"…"}} со статусом 400 (INVALID_RANGE, INVALID_COUNTRY, INVALID_ASN, INVALID_TRANSPORT, RANGE_TOO_LONG, …), 404 (NOT_FOUND), 429 (RATE_LIMITED) или 500 (LAB_UNAVAILABLE).

Общие параметры

  • range — 24h, 48h, 7d, 30d or 90d, до текущего момента. Или from и to (RFC 3339 или YYYY-MM-DD; to по умолчанию — сейчас; не более 366 дней).
  • country — код ISO 3166 страны точка измерения, например RU. Никогда не страна сервера.
  • asn — сеть точки измерения, 8359 или AS8359.
  • probe — короткое имя точки измерения из /probes.
  • transport — список через запятую: hysteria2, vless-reality, vless-xhttp, trojan, shadowsocks, tuic.

Конечные точки

ПутьПараметрыВозвращает
/overview—Всё, что показывает главная страница: итоги, состояние транспортов за последние 24 часа с изменением относительно предыдущих 24 часов, точки измерения, страны, недавние события, 25 новейших измерений и настройки данных приложений (field).
/summarycountry, asn, probe, transport, range | from, to (default 7d)Доля успеха, число тестов, медианное время и статус по каждому транспорту для выборки, с prev_rate за предыдущее окно; тесты доступности отдельно.
/seriescountry, asn, probe, transport, range | from, to (default 30d)Доля успеха во времени по транспортам. Интервалы 1 ч (≤ 48 ч), 2 ч (≤ 8 дн.), 6 ч (≤ 31 дн.) или 1 день; у пустых интервалов доля null.
/countriesrange | from, to (default 30d)Каждая измеренная страна — по точкам измерения, данным приложений или по обоим источникам — с долями по транспортам.
/countries/{cc}range | from, to (default 30d)Одна страна: транспорты, доступность, базовые тесты, сети, точки измерения, события и данные приложений.
/networks/{asn}range | from, to (default 7d)Одна сеть (AS8359 или 8359): транспорты, доступность, базовые тесты, отпечаток, точки измерения, события и данные приложений.
/protocols/{transport}range | from, to (default 30d)Один транспорт: сводка, по точкам измерения, по странам серверов, сравнение с остальными, данные приложений по странам.
/eventscountry, asn, probe, transport, status=ongoing, limit (≤ 500, default 100)Выявленные снижения качества, отказы и редакционные заметки: сначала продолжающиеся, затем самые новые.
/measurementsprobe, country, asn, transport (one), test, from, to, before_id, limit (≤ 1000, default 100)Сырые результаты, сначала новые; с from — сначала старые. Листать назад через before_id. transport принимает также dns-udp, dns-tcp или https; test — tunnel, reach или baseline.
/probes—Точки измерения: место, сеть, тип, версия, последний отчёт, успех за 24 часа, доля отчётности за 7 дней.
/export/{dataset}.{csv|json}range | from, to (default 7d)Массовые файлы; см. «Загрузки».

Пример: /summary?country=RU&range=7d · /series?transport=hysteria2,vless-reality&range=30d

Ограничения и кэширование

  • Лимит запросов: 240 запросов в минуту на клиента, включая загрузки. При превышении API отвечает 429; подождите минуту.
  • CORS: открыт для GET с любого источника (Access-Control-Allow-Origin: *), поэтому к API можно обращаться из браузера.
  • Кэширование: ответы кэшируются на 60 секунд (Cache-Control: public, max-age=60); загрузки — на 5 минут. Новые результаты приходят примерно раз в 20 минут от каждой точки, поэтому опрашивать чаще раза в минуту бессмысленно.

Встраивание

В каждом виде в разделе Сравнение есть кнопка Встроить, которая копирует код именно для этой выборки. Код встраивания принимает те же параметры, что и «Сравнение», — country, asn, probe, transport, range (24h, 7d, 30d или 90d), — не загружает сторонний код и несёт с собой указание источника.

Успех во времени

<iframe src="https://lab.colitu.com/embed/series?country=RU&transport=hysteria2,vless-reality&range=7d"
  title="VPN connectivity in Russia — Colitu Lab" width="100%" height="380"
  style="border:0" loading="lazy"></iframe>

Состояние транспортов (полосы)

<iframe src="https://lab.colitu.com/embed/summary?country=RU&range=30d"
  title="Transport health in Russia — Colitu Lab" width="100%" height="380"
  style="border:0" loading="lazy"></iframe>

Как ссылаться

Ссылайтесь как “Colitu Lab, lab.colitu.com”, указывая дату получения данных и, по возможности, использованный запрос или файл. Например:

Colitu Lab. (2026). Colitu Lab: Open measurements of VPN connectivity [Data set]. https://lab.colitu.com (retrieved YYYY-MM-DD)
@misc{colitulab2026,
  author       = {{Colitu Lab}},
  title        = {Colitu Lab: open measurements of VPN connectivity},
  year         = {2026},
  howpublished = {\url{https://lab.colitu.com}},
  note         = {Data licensed under CC BY 4.0. Accessed YYYY-MM-DD}
}

Лицензия

Данные лицензированы под CC BY 4.0: делитесь ими и адаптируйте их для любых целей, в том числе коммерческих, с указанием авторства. Названия сетей в данных взяты из DB-IP ASN Lite (CC BY 4.0). Скрипты экспериментов находятся на github.com/colitu/vpn-lab. Вопросы: hello@colitu.com.