Container Tracking: MSC, Maersk Cargo Updates, Demurrage Alerts on the Apify Store →
A morning in an import desk starts with tabs: MSC's tracking page for three boxes, Maersk's for two, CMA CGM's for one, a COSCO booking that only shows up under its B/L. Each page shows the same journey in its own words — "Import Discharged from Vessel", "DISCHARG", "DISC" — and none of them says the one thing that costs money: the box was discharged two days ago and its free time runs out on Monday.
This tutorial shows how to replace that routine with one scheduled run of Container Tracking: MSC, Maersk Cargo Updates, Demurrage Alerts on Apify: one list of numbers in, one table out, only what changed since yesterday, and a warning three days before demurrage starts.
A forwarder or importer with 40 containers on four carriers spends ≈ 1.5 hours per 100 containers per check: opening each carrier's page, copying the status, merging four output shapes into one sheet, and re-reading every row to find the few that moved. Missing one discharged box costs more than the whole week of checking — demurrage runs $75–300 per container per day once the free time is over.
MSCU… → MSC); a booking needs the carrier: 254839107, Maersk, PO-4411, 5 — carrier, your reference and your free days. You can also paste a whole booking e-mail; the numbers are pulled out, and a wrong check digit is reported for free instead of being looked up.lastFreeDay, and three days before it the dd_risk flag ranks it first with the next step: book the pickup or ask the line for an extension.The first 25 container updates are free. After that, each new or changed container costs $0.0037 here, plus the carrier lookup on your account ($0.01 a container + $0.001 per carrier run) — ≈ $0.014 per container update all in. 40 containers on four carriers, AI on: $0.40 of lookups + 40 × $0.0092 + ≈ $0.12 of tokens = $0.89 for the first run. After that only changes are charged, and smart polling stops looking up delivered boxes and checks boxes weeks from port every third run — a daily run of the same list costs ≈ $0.27.
After the first real run the Actor saves the search as a Task; open it and click Schedule — daily for an import desk. Put your e-mail into "E-mail me the changes", or a Slack / Teams link into "Send alerts to". If your container list lives in a Google Sheet, share it as "Anyone with the link" and paste the link into "Your container list as a Google Sheet" — every run reads it, so adding a row there is all it takes.
From code:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("rich_minds/multi-carrier-tracking-ai").call(run_input={
"sourceMode": "live",
"trackingNumbers": ["MSCU0203658", "MAEU3402103", "254839107, Maersk, PO-4411, 5"],
"freeTimeDays": 4,
"maxDiscoveryChargeUsd": 0.5,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["trackingNumber"], item["status"], item["eta"], item["lastFreeDay"], item["note"])
Upsert each row on shipmentKey in your TMS or sheet: a reused box on its next voyage gets a new key, so it never overwrites the last shipment.
Container Tracking: MSC, Maersk Cargo Updates, Demurrage Alerts on the Apify Store →