Skip to content

Maersk Container Tracking Scraper

Try for free

Track Maersk containers, bills of lading and bookings in bulk: origin and destination, shipment status, ETA, vessel and voyage, and the full container move history. No login needed.

🚢 Maersk Container Tracking Scraper

Track Maersk shipments in bulk by container number, bill of lading or booking number and get clean, structured data: origin and destination, shipment status, ETA, vessel and voyage, and every container move with its time and place. Paste one number or thousands, no Maersk account or login needed, and pay only for shipments that are found.

✨ Why use Maersk Container Tracking Scraper?

  • 📦 Every number type — container numbers (e.g. MSKU1234565), bills of lading and booking numbers (e.g. 262598646), all in one list. Numbers from Maersk's sister brands (Hamburg Süd, Sealand, MCC) work too.
  • ⚡ Fast in bulk — up to 16 lookups at a time: 1,000 numbers took about 2 minutes in our tests.
  • 🧭 Ready-made summary — shipment status (Before departure, In transit, Arrived, Delivered, Completed, Cancelled), latest move, next planned move, ETA, vessel and voyage on every row, next to Maersk's full raw tracking record.
  • 🔍 Filters that save money — keep only shipments still on their way (or only arrived ones), only moves since a date, or only the latest N moves. Skipped shipments are not charged.
  • 💸 Pay for results only — numbers Maersk doesn't know and numbers that could not be checked are never charged.
  • 🔓 No login — reads Maersk's public tracking, the same data anyone sees on maersk.com.

🎯 Use cases

  • 🏭 Supply chain visibility — feed container ETAs and arrivals into your ERP, TMS or a spreadsheet every morning.
  • 🚚 Freight forwarders and brokers — check the status of all open Maersk bookings for your customers in one run.
  • ⏰ Delay alerts — schedule a run and compare the eta_final_delivery and latest_event fields with yesterday's to catch rolled or delayed containers.
  • 📊 Logistics analytics — build transit-time and dwell-time statistics from the full move history (load, discharge, transshipment, gate-in and gate-out).
  • 🧾 Demurrage and detention control — see when a container was discharged, picked up and returned empty.

🚀 How to use

  1. Paste your Maersk container, bill of lading or booking numbers into Tracking numbers, one per line (maersk.com tracking links work too).
  2. Optionally set Max results or a filter (shipment status, events since a date, latest N moves).
  3. Click Start. The first results arrive about 10 seconds after the start; large lists are checked 16 numbers at a time.
  4. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
trackingNumbersContainer, bill of lading or booking numbers, one per line. Spaces, dashes and duplicates are cleaned up.
maxItemsStop after this many shipments are saved. Empty or 0 = track every number.
shipmentStatusany, inTransit (before departure or in transit) or arrived (arrived, delivered or completed).
eventsSinceKeep only moves on or after this date (2026-01-31 or 30 days).
maxEventsPerContainerKeep only the latest N moves of each container (0 = all).
includePlannedEventsAlso list moves Maersk still expects (estimated arrivals and departures). On by default.
includeNotFoundAdd a free found: false row for each number Maersk doesn't know.
{
  "trackingNumbers": ["MAEU3402103", "262598646"],
  "shipmentStatus": "any",
  "maxEventsPerContainer": 0
}

📤 Output

One row per shipment found. A bill of lading or booking with several containers is one row with all its containers inside.

FieldDescription
tracking_numberThe number you tracked
shipment_statusBefore departure, In transit, Arrived, Delivered, Completed or Cancelled
origin_name, destination_nameTerminal, city and country of origin and final destination
origin_location_code, destination_location_codeMaersk location codes
eta_final_deliveryEstimated (or actual) arrival at the final destination
latest_event_activity, latest_event_time, latest_event_locationThe latest actual move
latest_event, next_eventLatest actual and next planned move with vessel, voyage and transport mode
vessel_name, voyage_numVessel and voyage of the latest sea leg
container_count, container_numbersContainers on the shipment
container_size, container_type, iso_codeSize, type and ISO code of the first container
tpdoc_numTransport document (bill of lading) number on bill of lading and booking searches
has_import_shipment, is_container_search, is_split_combine_part_load, is_cancelled_shipment, unassigned_containersMaersk's shipment flags
last_update_timeWhen Maersk last updated the shipment
origin, destinationFull origin and destination records (terminal, city, state, country, country code, site type, location code)
containersEvery container with size, type, ISO code, operator, seals, ETA, status and its moves per location (locations[].events[]: activity, time, actual or expected, vessel, voyage, transport mode, empty or full)
tracking_urlThe maersk.com tracking page

Example (a real bill of lading from a test run, shortened to one container and one location):

{
  "tracking_number": "262598646",
  "found": true,
  "search_type": "bill_of_lading_or_booking",
  "tpdoc_num": "262598646",
  "shipment_status": "Completed",
  "origin_name": "WEIHAI TERMINAL (Weihai, China)",
  "destination_name": "APM 2 TERMINAL MAASVLAKTE II (Rotterdam, Netherlands)",
  "eta_final_delivery": "2026-03-20T09:22:00.000",
  "latest_event_activity": "CONTAINER RETURN",
  "latest_event_time": "2026-03-20T09:22:00.000",
  "latest_event_location": "Cabooter Greenport Venlo BV (Venlo, Netherlands)",
  "vessel_name": "MAERSK MC-KINNEY MOLLER",
  "voyage_num": "605W",
  "container_count": 4,
  "container_numbers": ["MRKU3414693", "MRSU8938700", "MRSU8939347", "MRSU8939373"],
  "container_size": "40",
  "container_type": "DRY",
  "iso_code": "45G1",
  "last_update_time": "2026-03-20T15:14:12.000Z",
  "containers": [
    {
      "container_num": "MRKU3414693",
      "container_size": "40",
      "container_type": "DRY",
      "iso_code": "45G1",
      "operator": "MAEU",
      "eta_final_delivery": "2026-03-20T09:22:00.000",
      "status": "COMPLETE",
      "shipment_status": "Completed",
      "locations": [
        {
          "terminal": "WEIHAI TERMINAL",
          "city": "WEIHAI",
          "country": "CHINA",
          "country_code": "CN",
          "location_code": "CNWHATM",
          "events": [
            {"activity": "GATE-OUT", "stempty": true, "actfor": "EXP", "event_time": "2026-01-16T19:24:00.000", "event_time_type": "ACTUAL"},
            {"activity": "GATE-IN", "stempty": false, "actfor": "EXP", "event_time": "2026-01-17T22:36:00.000", "event_time_type": "ACTUAL"},
            {"activity": "LOAD", "voyage_num": "1050", "transport_mode": "FEF", "event_time": "2026-01-22T03:58:00.000", "event_time_type": "ACTUAL"}
          ]
        }
      ]
    }
  ],
  "tracking_url": "https://www.maersk.com/tracking/262598646"
}

The Containers view of the dataset lists one row per container.

💰 Pricing

  • $0.007 per shipment found ($7 per 1,000), charged as the tracking-result event.
  • Not charged: numbers Maersk doesn't know, numbers that could not be checked, and shipments skipped by a filter.
  • Platform usage (the hosted browser session and compute) is paid on top: about $0.01 for a 10-number run and about $0.04 per 1,000 numbers in our tests.
  • Example: tracking 1,000 containers that are all found costs about $7.00 + $0.04 = $7.04.

❓ FAQ

Is it legal to scrape Maersk tracking? The actor reads the same public tracking information anyone can see on maersk.com without logging in. It does not access accounts or private customer data. Check your own use case with your legal team if unsure.

Do I need a Maersk account, an API key or a proxy? No. The run opens Maersk's public tracking page in a hosted browser and asks Maersk's tracking service from there. Nothing to configure.

How many numbers can I track? As many as you like. Large lists are tracked 16 at a time and saved as they arrive; 1,000 numbers took about 2 minutes in our tests, and longer lists scale linearly.

Why is a field empty? Maersk only shows what it has: a shipment that hasn't departed has no vessel yet, a cancelled booking has no containers, and next_event is empty once all moves are done. Numbers Maersk doesn't know produce no row (or a free found: false row with includeNotFound).

Which number formats work? Container numbers (4 letters + 7 digits, e.g. MRKU3414693), Maersk bill of lading and booking numbers (usually 9 digits, e.g. 262598646), with or without spaces and dashes, and maersk.com tracking links.

Can I schedule it or use it from my code? Yes. Schedule the actor to run daily or hourly, and start runs and read results through the API in any language.

⚠️ Limits

  • Covers ocean shipments in Maersk's tracking (Maersk and its sister brands). Air cargo (AWB), LCL and parcel tracking are not included.
  • Times are local times at each location, as Maersk shows them (no time zone offset).
  • A container number returns the one shipment Maersk currently shows for that container; earlier journeys of the same box are not listed.
  • When Maersk's site protection refuses a session, the run reloads the page or opens a new session automatically; numbers that still can't be checked are listed in the run's OUTPUT record and are not charged.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.