Cargotime

Примеры

Примеры запросов на 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.

Обновлено

На этой странице