Снимок тарифов 20 маршрутов: СДЭК, Почта, ПЭК на 10.09.2026
10.09.2026 с этой машины ушли двадцать одинаковых тел `{"city_from","city_to","weight_kg":5}` на `https://api.logistoff.ru/api/calculate`. Габариты не передавались. КИТ, Деловые Линии и Яндекс.Доставка в ответе не регистрировались: ключей нет. Сырой JSON лежит в `raw/2026-09-09-tariff-snapshot/snapshot.json`. Ниже — не «средние по рынку», а этот один прогон.
Для колонок СДЭК и ПЭК взята самая дешёвая строка склад-склад (`pickup_type=pvz` и `delivery_type=pvz`); если pvz-pvz не нашлось, для СДЭК брали минимум по провайдеру. Почта в снимке везде шла как «Посылка онлайн обыкновенная», кроме Калининграда, где её не было вовсе.
Что мы реально запросили 10.09.2026?
Один вес, ноль кубов, без объявленной стоимости, без даты забора. ПЭК в таких условиях подставляет ребро 20 см (`extra.assumed_edge_cm`) — это видно в отдельных котировках, не выдумано здесь. Документация публичного калькулятора: https://pecom.ru/business/developers/api_public/. Официальный ajax, которым ходит агрегатор: `https://calc.pecom.ru/bitrix/components/pecom/calc/ajax.php`.
Порядок городов — хаб Москва и обратные плюс Краснодар→Астрахань. Это не «топ-20 России по грузообороту»: так составлен список популярных посадочных URL сайта. Показов Яндекса у нас нет, Wordstat без ключа молчит.
Повторы кэша: Москва→Екатеринбург пришёл с `elapsed_ms=0` и `cache_hit_ratio=1.0`. Остальные строки — живые ответы, миллисекунды от 358 (Тверь) до 6002 (Москва→Уфа, где ПЭК ушёл в timeout).
Какие числа получились по 20 маршрутам?
WW = склад-склад. DD = дверь-дверь. Прочерк — колонки нет в ответе, не «ноль рублей».
| Откуда | Куда | quotes | Почта ₽ | СДЭК WW ₽ | ПЭК WW ₽ | ПЭК DD ₽ | failed |
|---|---|---|---|---|---|---|---|
| Москва | Санкт-Петербург | 53 | 378,2 | 400,0 | 860,0 | 2040,0 | нет |
| Москва | Екатеринбург | 53 | 531,92 | 545,0 | 910,0 | 2020,0 | нет |
| Москва | Новосибирск | 44 | 985,76 | 950,0 | 960,0 | 2060,0 | нет |
| Москва | Казань | 50 | 508,74 | 515,0 | 850,0 | 2000,0 | нет |
| Москва | Краснодар | 44 | 509,96 | 530,0 | 890,0 | 2020,0 | нет |
| Москва | Сочи | 38 | 559,98 | 600,0 | 930,0 | 2120,0 | нет |
| Москва | Уфа | 44 | 578,28 | 590,0 | — | — | pec:timeout |
| Москва | Калининград | 55 | — | 975,0 | 1680,0 | 2760,0 | нет |
| Санкт-Петербург | Москва | 53 | 378,2 | 395,0 | 910,0 | 2090,0 | нет |
| Екатеринбург | Москва | 53 | 531,92 | 545,0 | 910,0 | 2020,0 | нет |
| Казань | Москва | 44 | 522,16 | 530,0 | — | — | pec:invalid_request |
| Новосибирск | Москва | 53 | 813,74 | 855,0 | 940,0 | 2040,0 | нет |
| Краснодар | Москва | 32 | 541,68 | 570,0 | — | — | pec:invalid_request |
| Сочи | Москва | 38 | 579,5 | 635,0 | — | — | pec:invalid_request |
| Уфа | Москва | 53 | 606,34 | 615,0 | 860,0 | 1980,0 | нет |
| Пермь | Москва | 53 | 606,34 | 615,0 | 890,0 | 1970,0 | нет |
| Тверь | Москва | 41 | 528,26 | 515,0 | — | — | pec:invalid_request |
| Рязань | Москва | 44 | 507,52 | 515,0 | — | — | pec:invalid_request |
| Барнаул | Москва | 54 | 829,6 | 855,0 | 960,0 | 2030,0 | нет |
| Краснодар | Астрахань | 32 | 689,3 | 740,0 | 870,0 | 1850,0 | нет |
На Москве→Новосибирске Почта 985,76 ₽ оказалась дороже СДЭК 950 ₽ и почти вровень с ПЭК WW 960 ₽. Это инверсия относительно коротких коридоров, где Почта чуть дешевле СДЭК. Обратный Новосибирск→Москва уже другой: Почта 813,74, СДЭК 855, ПЭК WW 940. Один и тот же «дальний Урал/Сибирь» в две стороны не копирует цифры.
На Калининграде Почты в массиве `quotes` не было, хотя `failed` пустой. Это не «Почта 0 ₽». СДЭК WW 975, ПЭК WW 1680 / DD 2760 — единственная пара, где дверь-дверь ПЭК уехала далеко от двух тысяч.
Почему ПЭК на части направлений исчез из quotes?
Шесть прочерков WW — не одна причина.
Москва→Уфа: `pec` в `failed[]` с `reason: timeout`, `elapsed_ms` 6002. Агрегатор подождал и сдался. Уфа→Москва в том же прогоне посчиталась: WW 860, DD 1980. Направление «из Уфы» живое, «в Уфу» в эту минуту — нет. Нельзя писать «ПЭК в Уфу не возит».
Казань→Москва, Краснодар→Москва, Сочи→Москва, Тверь→Москва, Рязань→Москва: `reason: invalid_request`, текст сообщения в снимке пустой. Москва→Казань, Москва→Краснодар, Москва→Сочи при этом посчитались. Отказ висит на обратном векторе, не на городе как таковом. Тверь и Рязань — только «в Москву»; исходящих из Москвы в эти города в двадцатке не было.
Не подставляйте прочерк цифрой с соседней строки и не усредняйте timeout с invalid_request: это разные классы в контракте API.
Симметрия туда и обратно — миф?
Почта Москва↔Петербург: 378,2 в обе стороны. СДЭК: 400 туда, 395 обратно. ПЭК WW: 860 туда, 910 обратно. DD: 2040 против 2090. Даже на самом коротком коридоре «почти симметрия» ломается на 5–50 ₽ у двух из трёх провайдеров.
Москва↔Екатеринбург совпал у всех трёх колонок, которые были: 531,92 / 545 / 910 / 2020. Это исключение в таблице, не правило. Москва↔Уфа вообще нельзя сравнивать: исходящий timeout, обратный полный набор.
Вывод для посадочных `/iz-X/v-Y` и `/iz-Y/v-X`: шаблон «та же цена в обе стороны» на этих данных ложен. Генератор маршрутов, который копирует рубли с обратного, врёт.
Что нельзя выводить из этой таблицы?
Нельзя сказать, кто «всегда дешевле». Вес 5 кг, куб не задан. Паллета 200 кг перевернёт порядок — такого запроса не было.
Нельзя сравнивать WW Почты с DD ПЭК и называть это «переплатой за бренд». На Петербурге разница 378,2 против 2040 — это ещё и забор с выдачей.
Нельзя утверждать срок «2 дня по РФ». Колонка дней в сырье есть, в эту витрину она не перенесена, чтобы не смешивать рубли и календарь. Смотрите поле `days_min`/`days_max` в JSON.
Нельзя обещать КИТ. Официальный прайс 10.09.2026 живёт на https://tk-kit.ru/ и на `/kit`, не в этом снимке.
Число котировок 32–55 — это тарифные линейки СДЭК плюс несколько ПЭК плюс одна Почта, не «столько перевозчиков». Health API по-прежнему пишет `version=0.2.1`; к VERSION сайта это не относится.
Как повторить снимок у себя?
Тело запроса только такое: `city_from`, `city_to`, `weight_kg`. Поле `from_city` на 10.09.2026 даёт 422.
Сохраняйте полный JSON, не Excel. Кэш на повторном Екатеринбурге обнулил `elapsed_ms` — для спора «что было в 12:03» нужен первый ответ.
Скрипт прогона не выкладываем как «официальный бенчмарк перевозчиков». Это замер одной машины, одного IP, одного часа 10.09.2026. Завтра timeout Уфы может исчезнуть, а Калининградская Почта — появиться.
Если повторите с габаритами, маркируйте таблицу иначе: это другой объём, особенно для ПЭК с ребром 20 см.
Часто задаваемые вопросы
Это оферта транспортных компаний?
Нет. Это ответ агрегатора на минимальный запрос 10.09.2026. Оферта — на сайте перевозчика в момент оформления.
Почему в таблице нет КИТ?
Нет `KIT_API_TOKEN`, поэтому нет живых рублей КИТ. Прайс с датой — на странице `/kit` и на tk-kit.ru.
Почему у Калининграда пустая Почта, а failed пустой?
Провайдер не попал в `quotes` и не объявил отказ. Мы не знаем причину: в JSON её нет. Не записывайте это как ноль рублей.
Можно ли усреднить 20 строк и получить «цену по России»?
Нельзя. Выборка смещена к Москве. Вес один. Часть ПЭК отсутствует. Среднее спрячет timeout Уфы и инверсию Новосибирска.
Как обновлять эту страницу?
Повторить те же 20 тел, сохранить новый JSON рядом со старым, не затирая дату. Пока скрипт обновления на проде не стоит cron: это ручной снимок прогона.
Где сырой файл?
`raw/2026-09-09-tariff-snapshot/snapshot.json` в репозитории проекта. На сайте отдаётся эта статья, не сырой JSON.
Что со страховкой в этих котировках?
В разобранных строках `insurance_max_rub` был null. Процент без оферты не публикуем. Оценка товара в минимальный запрос не передавалась.