Примеры
Примеры запросов на Node.js, Python и Google Apps Script
На этой странице показано, как получить данные по одному номеру с помощью GET /v2/tracking. Выберите язык и замените YOUR_TOKEN своим API-ключом.
Базовый URL для запросов: https://tracking.cargotime.ru/v2.
Другие примеры:
- Пакетное отслеживание — отправьте до 500 номеров в
POST /v2/tracking/batch, чтобы создать задачу на отслеживание. API создаёт задачу и возвращает её идентификатор, не дожидаясь результатов отслеживания. Через некоторое время запросите результаты с помощьюGET /v2/tracking/batch. - Отслеживания — получите список отслеживаний, добавьте или измените заметку, архивируйте или удалите запись.
- Компании — получите список поддерживаемых перевозчиков, их SCAC-коды и доступные типы отслеживания.
- Вебхуки — настройте получение уведомлений об изменениях и проверку их подписи.
Параметры запроса: api_key, company (AUTO или SCAC-код перевозчика), value (номер) и type (container, bl или bk).
Пример запроса
Пример отправляет запрос по номеру контейнера и выводит статус и сводку перевозки.
Node.js 18+ со встроенным fetch.
// Отправляем запрос по одному номеру и читаем результат.
// Задаём адрес API и параметры запроса.
const API_BASE = "https://tracking.cargotime.ru/v2";
const url = new URL(`${API_BASE}/tracking`);
url.searchParams.set("api_key", "YOUR_TOKEN");
url.searchParams.set("company", "AUTO");
url.searchParams.set("value", "MSDU8368827");
url.searchParams.set("type", "container");
const res = await fetch(url, { headers: { Accept: "application/json" } });
// Проверяем HTTP-ответ перед чтением результата.
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
// Читаем JSON; success и status уточняют результат запроса.
const body = await res.json();
if (body.success === false) throw new Error(body.status_description || body.status);
console.log(body.status, body.data?.summary ?? null);Обработка ошибок
Обрабатывайте HTTP-ошибки, учитывайте 429 и проверяйте status даже при HTTP 200. Не записывайте API-ключ в логи.
// Отправляем запрос по одному номеру и читаем результат.
// Задаём адрес API и параметры запроса.
const API_BASE = "https://tracking.cargotime.ru/v2";
async function track({ token, company, value, type }) {
const url = new URL(`${API_BASE}/tracking`);
url.searchParams.set("api_key", token);
url.searchParams.set("company", company);
url.searchParams.set("value", value);
url.searchParams.set("type", type);
const res = await fetch(url, {
headers: { Accept: "application/json" },
signal: AbortSignal.timeout(90_000),
});
if (res.status === 429) {
const retryAfter = res.headers.get("Retry-After");
throw new Error(`Rate limited. Retry-After: ${retryAfter ?? "not provided"}`);
}
// Проверяем HTTP-ответ перед чтением результата.
if (!res.ok) {
throw new Error(`HTTP ${res.status}`);
}
// Читаем JSON; success и status уточняют результат запроса.
const body = await res.json();
if (body.status === "INFO_NOT_FOUND" && body.success === true) return null;
if (body.success === false || body.status !== "OK") {
throw new Error(body.status_description ?? body.status);
}
return body.data;
}
const data = await track({
token: process.env.CARGOTIME_API_KEY,
company: "AUTO",
value: "MSDU8368827",
type: "container",
});
const summary = data?.summary;
const locations = data?.locations ?? [];
const pol = summary?.pol?.location != null ? locations[summary.pol.location] : null;
const lastActualEvent = data?.containers?.[0]?.events?.find((event) => event.actual);
console.log({
company: summary?.company?.full_name,
departure: pol?.name,
lastActualEvent,
});Схемы ответов и параметры описаны в справочнике API.
Обновлено