Skip to content

COSCO Container Tracking Scraper

Try for free

Track COSCO SHIPPING Lines containers, bills of lading and bookings in bulk: status, route, vessel and the container movement history. No login needed.

🚢 COSCO Container Tracking Scraper

Track COSCO SHIPPING Lines shipments in bulk: paste container, bill of lading or booking numbers and get the latest container status, location, ETA, route, vessel legs and every container on the shipment as clean rows. No login, no COSCO account, and you only pay for numbers COSCO actually has data for.

✨ Why use COSCO Container Tracking Scraper?

  • 📦 Three number types, detected automatically: container numbers (e.g. CSNU1036292), bills of lading and bookings. A COSU prefix, spaces and dashes are cleaned up for you.
  • 🗺️ More than the latest status: bills of lading and bookings come with origin and destination, ports and terminals, every vessel leg with planned and actual times, B/L type and release status, and North American inland details (FIRMS codes, in-bond number).
  • ⏱️ ETA for containers too: container numbers get COSCO's estimated arrival at the port of discharge.
  • ⚡ Fast and bulk-friendly: numbers are tracked in parallel; a 300-container run finished in about 30 seconds of tracking time in our tests.
  • 💸 Pay only for results: unknown numbers, containers with no current status and filtered-out shipments are free.
  • 🔁 Drop-in output: rows also keep tracking_number, type, total and containers, the field names used by a similar actor on another platform, so existing pipelines keep working.

🎯 Use cases

  • 🏭 Importers and exporters: check where every COSCO box is without opening the carrier site number by number.
  • 🚚 Freight forwarders and NVOCCs: refresh the status of all open COSCO bookings each morning and push changes to customers.
  • 📊 Supply-chain dashboards: feed ETAs, discharge times and empty-return dates into BI tools or spreadsheets.
  • 🛃 Customs brokers in the US: read the discharge terminal, inland destination FIRMS code and in-bond number of each bill of lading.
  • ⏰ Exception alerts: schedule a run with "Updated since" to get only shipments that moved recently.

🚀 How to use

  1. Paste your COSCO container, bill of lading or booking numbers into Tracking numbers, one per line.
  2. Leave Number type on Auto-detect (or pick a type to skip detection).
  3. Optionally set Updated since to keep only shipments with a recent status, or Max results to cap the run.
  4. Click Start.
  5. Download the results as JSON, CSV, Excel or HTML, or read them through the API. The Containers and Vessel legs views give one row per container or per leg.

📥 Input

FieldWhat it does
trackingNumbersContainer, bill of lading or booking numbers, one per line
trackingTypeauto (default), container, billOfLading or booking
maxItemsTrack at most this many numbers (empty = all)
updatedSinceKeep only shipments whose latest status is on or after this date (2026-10-01 or 7 days)
includeEtaLook up the ETA of container numbers (default on)
includeRawDataAdd COSCO's original itNumber, shipment and trackingPath for bills of lading and bookings (default on)
includeNotFoundAdd a free row for numbers COSCO doesn't know
proxyConfigurationDatacenter by default; switches to residential on its own if COSCO refuses too many requests
{
  "trackingNumbers": ["CSNU1036292", "6462548410"],
  "trackingType": "auto"
}

📤 Output

One row per tracked number.

FieldDescription
trackingNumber, numberTypeThe number and its type (Container, Bill of lading, Booking)
latestStatus, latestLocation, latestDate, latestTransportationMost recent container status of the shipment
etaEstimated arrival at the port of discharge
billOfLadingNumber, bookingNumber, blType, blStatus, bookingStatusDocument numbers and status
origin, destination, portOfLoading, portOfDischargeRoute (bills of lading and bookings)
vesselName, voyage, departure, arrivalMain vessel and the first departure / last arrival (actual when known)
legsEvery vessel leg: vessel, voyage, service, ports, loaded, planned and actual departure, ETA, actual arrival, discharge
containersEvery container: number, type, latest status, location, date, transport mode, ETA, empty pick-up and return dates where COSCO shows them
cargoAvailableAt, inlandTransport, destinationFacility, destinationFirmsCode, podFacility, podFirmsCode, inBondNumberDelivery details (mostly North America)
trackingUrl, trackedAtLink to the COSCO tracking page and when the number was tracked

Real example from a test run (a container number and a bill of lading):

[
  {
    "trackingNumber": "CSNU1036230",
    "numberType": "Container",
    "containerType": "20GP",
    "eta": "2026-10-16 11:00",
    "containerCount": 1,
    "containerNumbers": [
      "CSNU1036230"
    ],
    "latestStatus": "Discharged at Last POD",
    "latestLocation": "Shouguang Port Co.,Ltd,Shouguang,Shandong,China",
    "latestDate": "2026-10-16 19:00",
    "latestTransportation": "FEEDER",
    "containers": [
      {
        "containerNumber": "CSNU1036230",
        "containerType": "20GP",
        "latestStatus": "Discharged at Last POD",
        "latestLocation": "Shouguang Port Co.,Ltd,Shouguang,Shandong,China",
        "latestDate": "2026-10-16 19:00",
        "transportation": "FEEDER",
        "statusHistory": [
          {
            "status": "Discharged at Last POD",
            "location": "Shouguang Port Co.,Ltd,Shouguang,Shandong,China",
            "date": "2026-10-16 19:00",
            "transportation": "FEEDER"
          }
        ],
        "sealNumber": null,
        "grossWeight": null,
        "pieces": null,
        "eta": "2026-10-16 11:00",
        "hsCodes": []
      }
    ],
    "trackingUrl": "https://elines.coscoshipping.com/ebusiness/cargoTracking?trackingType=CONTAINER&number=CSNU1036230",
    "trackedAt": "2026-10-22T06:28:48Z",
    "tracking_number": "CSNU1036230",
    "type": "cntr",
    "total": 1
  },
  {
    "trackingNumber": "6462548410",
    "numberType": "Bill of lading",
    "billOfLadingNumber": "6462548410",
    "bookingNumber": null,
    "bookingNumbers": [],
    "blType": "Sea WayBill",
    "blStatus": "Sea Waybill",
    "bookingStatus": null,
    "origin": "La Spezia,La Spezia,Italy",
    "destination": "Cleveland,OH,Cuyahoga,United States",
    "portOfLoading": "La Spezia-La Spezia container Terminal",
    "portOfDischarge": "Norfolk-Norfolk Int'l Terminal (N.I.T.)",
    "firstPortOfLoading": "La Spezia",
    "lastPortOfDischarge": "Norfolk",
    "vesselName": "CMA CGM INNOVATION",
    "voyage": "AMG000W19",
    "departure": "2026-09-05 11:29",
    "departureIsActual": true,
    "arrival": "2026-10-05 10:14",
    "arrivalIsActual": true,
    "eta": "2026-10-05 05:00",
    "cargoAvailableAt": "2026-10-10 08:00",
    "cargoCutOff": null,
    "inlandTransport": "Rail",
    "destinationFacility": "Norfolk Southern Rail Road",
    "destinationFirmsCode": "J037",
    "podFacility": "Norfolk Int'l Terminal (N.I.T.)",
    "podFirmsCode": "L005",
    "inBondNumber": "V2109393935",
    "containerCount": 1,
    "containerNumbers": [
      "OOLU0233904"
    ],
    "latestStatus": "Empty Equipment Returned",
    "latestLocation": "Norfolk Southern Rail Road,Maple Heights,Ohio,United States",
    "latestDate": "2026-10-13 11:56",
    "latestTransportation": "Truck",
    "legs": [
      {
        "sequence": 1,
        "transportMode": "Vessel",
        "vesselName": "CMA CGM INNOVATION",
        "vesselCode": "MQR",
        "voyage": "AMG000W19",
        "service": "MENA",
        "portOfLoading": "La Spezia",
        "portOfDischarge": "Norfolk",
        "loadedAt": "2026-09-04 12:03",
        "plannedDeparture": "2026-09-05 12:00",
        "actualDeparture": "2026-09-05 11:29",
        "estimatedArrival": "2026-10-05 05:00",
        "actualArrival": "2026-10-05 10:14",
        "dischargedAt": "2026-10-05 16:05",
        "city": null
      }
    ],
    "containers": [
      {
        "containerNumber": "OOLU0233904",
        "containerType": "20GP",
        "latestStatus": "Empty Equipment Returned",
        "latestLocation": "Norfolk Southern Rail Road,Maple Heights,Ohio,United States",
        "latestDate": "2026-10-13 11:56",
        "transportation": "Truck",
        "statusHistory": [
          {
            "status": "Empty Equipment Returned",
            "location": "Norfolk Southern Rail Road,Maple Heights,Ohio,United States",
            "date": "2026-10-13 11:56",
            "transportation": "Truck"
          }
        ],
        "sealNumber": null,
        "grossWeight": null,
        "pieces": null,
        "eta": null,
        "emptyPickUpDate": null,
        "ladenReturnDate": null,
        "ladenPickUpDate": null,
        "emptyReturnDate": null,
        "lastFreeDay": null,
        "pickUpNumber": null,
        "hsCodes": []
      }
    ],
    "trackingUrl": "https://elines.coscoshipping.com/ebusiness/cargoTracking?trackingType=BILLOFLADING&number=6462548410",
    "trackedAt": "2026-10-22T06:28:48Z",
    "tracking_number": "6462548410",
    "type": "bl",
    "total": 1
  }
]

💰 Pricing

You pay $7.00 per 1,000 tracked shipments ($0.007 per number COSCO returns data for), plus a small platform usage fee for compute and proxy traffic. There is no start fee. Example: tracking 1,000 numbers costs about $7 in events plus a few cents of usage. Unknown numbers, containers without a current status and shipments removed by the filter are not charged.

❓ FAQ

Is it legal to track COSCO shipments this way? The actor reads the same public tracking information anyone can see on the COSCO SHIPPING Lines website by entering a number. It doesn't log in or read private account data. Check your own use case with your legal team if you are unsure.

Do I need a COSCO account, login or proxy? No account or login. The proxy is included: datacenter exits by default, with an automatic switch to residential if COSCO starts refusing requests.

How many numbers can I track in one run? As many as you like. Runs of several hundred numbers finished in well under a minute of tracking time in our tests; very large lists simply take longer.

Why is a field empty? COSCO only shows what it has for that shipment: container numbers have no route or vessel legs, some containers have no ETA, and North American fields are only filled for shipments to the US or Canada. Numbers COSCO doesn't know return no row (or a free found: false row with "Add rows for numbers COSCO doesn't know").

Do I get the full container event history? No. COSCO's public tracking returns only the latest status of each container (its movement list comes back with the details blanked out), so statusHistory holds that latest status. Bills of lading and bookings add every vessel leg with its actual times.

Can I schedule it or use the API? Yes. Schedule the actor to run every few hours or daily, combine it with "Updated since", and read the results through the API or webhooks.

⚠️ Limits

  • Only COSCO SHIPPING Lines numbers (including OOCL-operated containers that COSCO tracks). Other carriers are not covered.
  • The full container movement history is not public (COSCO blanks it out); each container shows its latest status.
  • COSCO keeps tracking data for a limited time after a shipment ends; older bills of lading return no data.
  • Dates and times are local times as COSCO shows them (no time zone).

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.