logistoff.ru
·10 мин чтения

Снимок тарифов 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
МоскваСанкт-Петербург53378,2400,0860,02040,0нет
МоскваЕкатеринбург53531,92545,0910,02020,0нет
МоскваНовосибирск44985,76950,0960,02060,0нет
МоскваКазань50508,74515,0850,02000,0нет
МоскваКраснодар44509,96530,0890,02020,0нет
МоскваСочи38559,98600,0930,02120,0нет
МоскваУфа44578,28590,0pec:timeout
МоскваКалининград55975,01680,02760,0нет
Санкт-ПетербургМосква53378,2395,0910,02090,0нет
ЕкатеринбургМосква53531,92545,0910,02020,0нет
КазаньМосква44522,16530,0pec:invalid_request
НовосибирскМосква53813,74855,0940,02040,0нет
КраснодарМосква32541,68570,0pec:invalid_request
СочиМосква38579,5635,0pec:invalid_request
УфаМосква53606,34615,0860,01980,0нет
ПермьМосква53606,34615,0890,01970,0нет
ТверьМосква41528,26515,0pec:invalid_request
РязаньМосква44507,52515,0pec:invalid_request
БарнаулМосква54829,6855,0960,02030,0нет
КраснодарАстрахань32689,3740,0870,01850,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. Процент без оферты не публикуем. Оценка товара в минимальный запрос не передавалась.