---
title: "Download every shipment as one flat table (CSV or JSON)"
method: GET
path: "/feed/shipments"
tags: ["BI feeds"]
---

# Download every shipment as one flat table (CSV or JSON)

`GET /feed/shipments`

## Request

- Base URL: `https://trackberry.com/api/v1`
- URL: `https://trackberry.com/api/v1/feed/shipments`
- Auth: HTTP bearer

Use this to load shipments into Power BI, Excel or another BI tool: one row per shipment with identifiers, mode, carrier, supplier, origin and destination, ports, ETD/ATD/ETA/ATA, transit and delay days, free time end, container and cargo totals, invoice value and created/archived dates. Not paged: the whole table comes back in one response, streamed. Append `.csv` for CSV or `.json` (or nothing) for JSON. Authenticated with the usual Bearer token, so a Power BI Web connector can send it as a header.

## Query parameters

- `from` string
- `to` string
- `status` string
- `archived` 'any' | 'false' | 'true'

## Headers

- `Trackberry-Version` string

## Response `200`

The whole table. Append `.csv` to the path for CSV, `.json` or nothing for JSON.

- object
  - `object` 'feed', required: Always `feed`.
  - `name` 'shipments', required: Which feed this is.
  - `columns` string[], required: The column names, in order. Stable across requests.
  - `data` ShipmentFeedRow[], required: One flat object per row, keyed by the column names.
    - `id` string, required: The shipment id. Use it to join with the events feed and to call the per-shipment endpoints.
    - `reference` string, required: Trackberry's own reference for the shipment.
    - `erp_reference` string, nullable, required: Your ERP or purchase order reference, when one was set.
    - `display_name` string, required: What people call the shipment: the container numbers for ocean (comma separated), the air waybill for air, otherwise the transport reference or Trackberry's reference.
    - `transport_type` 'ocean' | 'air' | 'road' | 'null', nullable, required: The mode of transport.
    - `load_type` 'fcl' | 'lcl' | 'null', nullable, required: Full container load or less than container load. Null for air, road or when unknown.
    - `status` 'draft' | 'validated' | 'in_transit' | 'arrived' | 'in_warehouse', required: Where the shipment stands in its lifecycle.
    - `archived` boolean, required: Whether the shipment has been archived.
    - `transport_reference` string, nullable, required: The bill of lading number for ocean or the air waybill number for air.
    - `house_bl` string, nullable, required: The forwarder's house bill of lading, for consolidated cargo.
    - `container_count` integer, required: Number of containers on the shipment.
    - `produce` string, nullable, required: The produce names found on the packing lists, separated by semicolons.
    - `organic` boolean, required: Whether any packing line is organic.
    - `carrier` string, nullable, required: The shipping line or airline under one canonical name, so the same carrier is never spelled two ways.
    - `carrier_scac` string, nullable, required: The carrier's SCAC or airline code.
    - `supplier` string, nullable, required: The supplier the goods were bought from.
    - `customer` string, nullable, required: The customer the goods are sold to (exports).
    - `forwarder` string, nullable, required: The freight forwarder that moved the shipment.
    - `consignor` string, nullable, required: The consignor as written on the transport document.
    - `consignee` string, nullable, required: The consignee as written on the transport document.
    - `origin_location` string, nullable, required: Place of origin.
    - `origin_country` string, nullable, required: Country of origin.
    - `destination_location` string, nullable, required: Place of destination.
    - `destination_country` string, nullable, required: Country of destination.
    - `pol` string, nullable, required: Port of loading as the carrier names it.
    - `pol_locode` string, nullable, required: UN/LOCODE of the port of loading, when known.
    - `pod` string, nullable, required: Port of discharge as the carrier names it.
    - `pod_locode` string, nullable, required: UN/LOCODE of the port of discharge, when known.
    - `etd` string, date-time, nullable, required: Estimated (later actual) time of departure.
    - `atd` string, date-time, nullable, required: Actual time of departure from the port of loading. Null until the carrier confirms it.
    - `eta` string, date-time, nullable, required: Current estimated arrival: the shipment's ETA, else the earliest container ETA.
    - `original_eta` string, date-time, nullable, required: The first ETA Trackberry recorded, the baseline for delays.
    - `ata` string, date-time, nullable, required: Actual time of arrival at the port of discharge. Null until the carrier confirms it.
    - `transit_days` number, nullable, required: Days from actual departure to actual arrival, one decimal. Null until both are known.
    - `delay_days` number, nullable, required: Days between the original ETA and the actual arrival, one decimal. Positive is late, negative is early. Null until the shipment has arrived.
    - `free_time_end` string, date, nullable, required: The last free day of the demurrage clock (the day free time ends). Null when there is no clock or no terms.
    - `demurrage_state` string, nullable, required: State of the most urgent demurrage clock, for example `running`, `stopped` or `not_started`.
    - `demurrage_free_days` integer, nullable, required: Free days granted before demurrage starts, when known.
    - `demurrage_overdue_days` integer, nullable, required: Days beyond the free days that were used. Only set when the clock has stopped.
    - `detention_last_free_day` string, date, nullable, required: The last free day of the detention clock.
    - `detention_overdue_days` integer, nullable, required: Days beyond the detention free days that were used. Only set when the clock has stopped.
    - `pallets` integer, required: Number of pallets on the packing lists.
    - `boxes` integer, required: Number of boxes on the packing lists.
    - `net_weight_kg` number, required: Net weight from the packing lists, in kilograms.
    - `gross_weight_kg` number, required: Gross weight from the packing lists, in kilograms.
    - `co2_tonnes` number, nullable, required: Estimated CO2 emissions in tonnes, when computed.
    - `invoice_value` number, nullable, required: Sum of the invoice line totals. Null when there are no invoices, or when they mix currencies.
    - `invoice_currency` string, nullable, required: The currency of `invoice_value`.
    - `created_at` string, date-time, required: When the shipment was created in Trackberry.
    - `approved_at` string, date-time, nullable, required: When the shipment was approved.
    - `validated_at` string, date-time, nullable, required: When the shipment was validated.
    - `archived_at` string, date-time, nullable, required: When the shipment was archived.
    - `updated_at` string, date-time, required: When the shipment last changed.

## Other responses

- `400`: A parameter or header is invalid (`invalid_parameter`, with `param` naming it), a customer link cannot be made for this shipment (`not_shareable`), an uploaded file is empty, over 50 MB or of a type Trackberry does not read (`file_empty`, `file_too_large`, `unsupported_file_type`), an upload's container number is on more than one live shipment (`ambiguous_container`), an `Idempotency-Key` was already used for a different request (`idempotency_key_reused`) or `Trackberry-Version` names an unpublished version (`invalid_version`, with `param` set to `Trackberry-Version`). A parameter that must be a single value but was sent as an array or hash (`status[]=x`, `q[a]=1`) is also a 400.
- `401`: No token was sent (`missing_token`) or the token is wrong, expired, revoked, or its user left the organization (`invalid_token`). The response has a `WWW-Authenticate` header.
- `403`: The token may not do this. `insufficient_scope`: a write endpoint was called with a read-only token. `read_only_member`: a write endpoint was called by a token whose owner is now a read-only member of the organization. `revoke_not_allowed`: the link can only be revoked by an admin or by the member who made it. `billing_blocked`: an upload needed a new shipment and the organization's billing does not allow one.
- `429`: A rate limit was hit (`rate_limited`). Wait the number of seconds in `Retry-After`. A BI feed answers the same way (`feed_in_progress`) when another feed for the organization is still being produced.

---

[API](https://skmtc.dev/trackberry/apis/trackberry-api.md) · [All operations](https://skmtc.dev/trackberry/apis/trackberry-api/llms.txt) · [OpenAPI document](https://skmtc.dev/trackberry/apis/trackberry-api/revisions/be06ee7c17f3?raw)
