# ZIM Cargo Tracking Scraper (`muhammetakkurtt/zim-cargo-tracking-scraper`) Actor

Track ZIM containers, bills of lading, and bookings in bulk. Get vessels, voyage legs, ports, ETAs, and sailing dates as structured JSON, CSV, or Excel. Automate ZIM cargo tracking for logistics dashboards, supply chain monitoring, and freight operations with scheduled runs.

- **URL**: https://apify.com/muhammetakkurtt/zim-cargo-tracking-scraper.md
- **Developed by:** [Muhammet Akkurt](https://apify.com/muhammetakkurtt) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $5.00 / 1,000 tracking results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

![ZIM Container Tracking and Shipment Data Scraper](https://i.postimg.cc/MpKgdWYC/zim-banner.png)

## ZIM Cargo Tracking Scraper

### What does ZIM Cargo Tracking Scraper do?

**ZIM Cargo Tracking Scraper** automates ZIM container tracking, bill of lading tracking, and booking tracking. Submit one or more ZIM shipment references and receive structured data for containers, voyage legs, vessels, origin and destination ports, sailing and arrival dates, ETA information, and carrier status.

The Actor provides a practical ZIM shipment tracking API for freight operations, logistics dashboards, supply chain applications, recurring cargo monitoring, and bulk data exports. Results are stored in an Apify dataset and can be downloaded as JSON, CSV, Excel, XML, or other supported formats.

The Actor checks each submitted reference against the ZIM tracking service and stores a dataset item when shipment data is available. It supports:

- 📦 **ZIM container tracking** for individual containers or bulk lists
- 📄 **ZIM bill of lading tracking** from the same input field
- 🗂️ **Booking reference tracking** when supported by the carrier response
- 🚢 **Vessel and voyage tracking** across shipment legs
- 🌍 **Origin, transshipment, and destination port data**
- 🕒 **Sailing, arrival, berth, and final ETA fields**
- 🔌 **ZIM tracking API integration** through Apify
- ⏰ **Scheduled shipment monitoring** without manual carrier checks

The scraper runs lookups in parallel batches and can rotate proxy addresses when the upstream service rate-limits a request.

### Why scrape ZIM shipment data?

Repeatedly checking the ZIM website is time-consuming for teams managing many shipments. Automated ZIM cargo tracking helps freight forwarders, importers, exporters, logistics providers, analysts, and software platforms:

- Monitor many ZIM containers in one run
- Track vessel legs and port-to-port movements
- Compare carrier-provided sailing, arrival, and ETA information
- Populate transport management systems with structured data
- Build shipment status dashboards and customer portals
- Trigger alerts when a shipment record changes
- Schedule daily or hourly ZIM tracking checks

### What data can you extract from ZIM?

| Data field | Description |
|---|---|
| `tracking_number` | Container, B/L, or booking reference submitted by the user |
| `unitListItem` | Containers or shipment units returned by ZIM |
| `unitPrefix`, `unitNo` | Container prefix and unit number |
| `cycleStatus`, `cycleStatusDesc` | Current unit-cycle status and description |
| `finalEta`, `agreedEta` | Carrier-provided estimated arrival fields |
| `vpBrl.vpBrl` | Voyage and port-routing legs |
| `vesselName`, `vessel`, `voyage` | Vessel and voyage identifiers for a leg |
| `portNameFrom`, `portCodeFrom` | Origin port name and code for the leg |
| `portNameTo`, `portCodeTo` | Destination port name and code for the leg |
| `sailingDateDt`, `arrivalDateDt` | Sailing and arrival dates |
| `berthSailingDate`, `berthArrivalDate` | Berth-related schedule information |
| `transportType`, `routeCode` | Transport mode and route details |

The ZIM response structure can vary by shipment and reference type. The Actor preserves all returned unit and routing data for advanced integrations.

### Ready-to-Run Examples

Get started in seconds — open the example in the Apify Console and click **Run**:

- **[Track ZIM Containers by Container Number](https://apify.com/muhammetakkurtt/zim-cargo-tracking-scraper/examples/track-zim-containers-by-container-number)** — enter a container number and get its vessel legs, origin and destination ports, sailing and arrival dates, and ETA details.

### How to track ZIM shipments step by step

1. Open the Actor in Apify Console.
2. Add container, bill of lading, or booking references under **Tracking Numbers**.
3. Enter one reference per line.
4. Click **Start**.
5. Inspect the routing data in the **Output** tab or export the default dataset.

#### Example input

```json
{
  "trackingNumbers": [
    "ZCSU7074221"
  ]
}
```

#### ZIM tracking input parameters

| Parameter | Type | Required | Description |
|---|---|---|---|
| `trackingNumbers` | Array of strings | Yes | ZIM container, bill of lading, or booking references; enter one per line |

### ZIM Cargo Tracking Scraper output example

One successful reference creates one dataset item. This shortened example uses illustrative route values:

```json
{
  "tracking_number": "ZCSU7074221",
  "unitListItem": [
    {
      "unitPrefix": "ZCSU",
      "unitNo": "7074221",
      "cycleStatusDesc": "ACTIVE",
      "finalEta": "2026-07-20T00:00:00Z",
      "vpBrl": {
        "vpBrl": [
          {
            "vesselName": "EXAMPLE VESSEL",
            "voyage": "001E",
            "portNameFrom": "ORIGIN PORT",
            "portNameTo": "DESTINATION PORT",
            "sailingDateDt": "2026-07-01T00:00:00Z",
            "arrivalDateDt": "2026-07-20T00:00:00Z"
          }
        ]
      }
    }
  ]
}
```

Actual results may contain multiple units and voyage legs. Unknown or unavailable references are skipped and do not create a `tracking-result` charge event.

### Integrations and ZIM tracking API

Apify makes it possible to use ZIM tracking data as part of a production logistics workflow:

- **API access** from Python, JavaScript, cURL, or another HTTP client
- **Schedules** for recurring ZIM shipment checks
- **Webhooks** for run completion and failure notifications
- **Integrations** with Google Sheets, Slack, Zapier, Make, and other tools
- **Dataset exports** in JSON, CSV, Excel, XML, HTML, or RSS

### Frequently asked questions

#### Is it legal to scrape ZIM?

The Actor retrieves shipment tracking information using references supplied by the user. Only query shipments you are authorized to access, and ensure your use complies with applicable laws and carrier terms. This Actor is independent and is not affiliated with or endorsed by ZIM Integrated Shipping Services.

#### Can I track multiple shipments at once?

Yes. Add multiple references to the input. They are processed in parallel batches, with one dataset item saved per successful reference.

#### What types of tracking numbers are supported?

The Actor accepts container numbers, bill of lading numbers, and booking references through `trackingNumbers`.

#### What if a tracking number is not found?

The Actor logs a warning, skips the reference, and does not create an empty dataset item or result charge.

#### How do I get support or report issues?

Open the **Issues** tab on the Actor page and provide the Apify run ID and relevant non-sensitive logs. Never include an Apify token or confidential shipment documents.

# Actor input Schema

## `trackingNumbers` (type: `array`):

The numbers to track — one per line. Container, B/L and booking numbers are all accepted.

## Actor input object example

```json
{
  "trackingNumbers": [
    "ZCSU7074221"
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

Collected ZIM shipment tracking data, one item per tracking number

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("muhammetakkurtt/zim-cargo-tracking-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("muhammetakkurtt/zim-cargo-tracking-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call muhammetakkurtt/zim-cargo-tracking-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,muhammetakkurtt/zim-cargo-tracking-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/HiwCA1seRErjiN7dE/builds/766Ggho01Zs9BtUDQ/openapi.json
