cnc-line.com APIwww.cnc-line.com ↗
Track CNC Line (CMA CGM intra-Asia) shipments by container, bill of lading, or booking number. Get route, vessel, moves, and progress data.
curl -X GET 'https://api.parse.bot/scraper/33ba42b8-ac2c-4d7b-bf6f-20c1163598fa/get_shipment_tracking?reference=CMAU1043320' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed Python client. Install the CLI, sign in, then pull this API’s generated client:
pip install parse-sdk parse login parse add --marketplace cnc-line-com-api
parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: CNC Line shipment tracking — fetch container status and movement history."""
from parse_apis.CNC_Line_Shipment_Tracking_API import CNCLine, NotFoundError
client = CNCLine()
# Track a container by its ISO 6346 reference number.
shipment = client.shipments.get(reference="CMAU1043320")
print(f"Found: {shipment.found}, Container: {shipment.container_reference}")
# Inspect the route: port of loading to port of discharge.
if shipment.route:
print(f"Route: {shipment.route.port_of_loading} -> {shipment.route.port_of_discharge}")
# Walk the movement history — each move records a location, vessel, and status.
if shipment.moves:
for move in shipment.moves.past_moves[:3]:
print(f" [{move.state}] {move.date} — {move.status_description} at {move.location} ({move.terminal})")
# Check progress milestones and dates.
if shipment.progress:
print(f"Sea progress: {shipment.progress.progression_on_sea}%")
if shipment.dates:
print(f"ETA: {shipment.dates.estimated_time_of_arrival}")
# Handle a reference that does not exist.
try:
missing = client.shipments.get(reference="XXXX0000000")
print(f"Lookup returned found={missing.found}")
except NotFoundError as exc:
print(f"Not found: {exc}")
print("exercised: shipments.get / route / moves / progress / dates / NotFoundError")
Track a shipment by container number, bill of lading, or booking number. Returns detailed shipment tracking data including container status, route (port of loading, port of discharge), movement history (past, current, and provisional moves with vessel/voyage details), and progress indicators. The reference can be a container number (e.g. CMAU1043320), bill of lading number, or booking number.
| Param | Type | Description |
|---|---|---|
| referencerequired | string | Container number, bill of lading number, or booking number to track. Container numbers follow ISO 6346 format (4 letters + 7 digits, e.g. CMAU1043320). Multiple references (up to 3) can be comma-separated. |
{
"type": "object",
"fields": {
"dates": "object with ISO datetime strings for key milestones",
"found": "boolean indicating whether the shipment was found",
"moves": "object with past_moves, current_moves, and provisional_moves arrays",
"route": "object with port_of_loading, port_of_discharge, place_of_origin, final_place_of_delivery",
"vessel": "object with vessel name and mode of transport",
"progress": "object with progression percentages and completion flags",
"bl_number": "bill of lading number",
"reference": "the reference that was searched",
"booking_number": "associated booking number",
"container_size": "container size code",
"container_type": "container type code",
"additional_info": "object with collection/delivery addresses and remaining days",
"container_status": "integer status code",
"container_reference": "container number if found"
},
"sample": {
"data": {
"dates": {
"empty_return_date": null,
"loaded_on_board_time": null,
"place_of_origin_date": null,
"port_of_loading_date": "2025-12-09T04:10:00",
"actual_time_of_arrival": null,
"port_of_discharge_date": "2026-01-05T09:58:00",
"estimated_time_of_arrival": "2026-01-05T09:58:00",
"final_place_of_delivery_date": null
},
"found": true,
"moves": {
"past_moves": [
{
"date": "2025-12-05T17:08:00",
"state": "DONE",
"vessel": "",
"voyage": "",
"location": "COCHIN",
"terminal": "CHAKIAT AGENCIES PVT. LTD., DEPOT",
"location_code": "INCOK",
"mode_of_transport": "TRUCK",
"status_description": "Empty to shipper"
}
],
"current_moves": [
{
"date": "2026-01-21T12:00:00",
"state": "CURRENT",
"vessel": "",
"voyage": "",
"location": "FREMANTLE",
"terminal": "ABC CONTAINERS PTY LTD",
"location_code": "AUFRE",
"mode_of_transport": "TRUCK",
"status_description": "Empty in depot"
}
],
"provisional_moves": []
},
"route": {
"place_of_origin": "",
"port_of_loading": "INCOK",
"port_of_discharge": "AUFRE",
"final_place_of_delivery": "",
"alternate_base_port_export": "",
"alternate_base_port_import": ""
},
"vessel": {
"name": null,
"mode_of_transport": "TRUCK"
},
"progress": {
"progression_on_sea": 100,
"progression_pre_pol": 100,
"progression_post_pod": 0,
"is_final_delivery_done": true,
"is_place_of_origin_done": true,
"is_port_of_loading_done": true,
"is_port_of_discharge_done": true
},
"bl_number": "",
"reference": "CMAU1043320",
"booking_number": "",
"container_size": "22",
"container_type": "G1",
"additional_info": {
"remaining_days": -166,
"delivery_address": null,
"collection_address": null,
"empty_return_address": null,
"empty_return_reference": ""
},
"container_status": 18,
"container_reference": "CMAU1043320"
},
"status": "success"
}
}About the cnc-line.com API
The CNC Line API exposes 1 endpoint — get_shipment_tracking — that returns up to 10 structured response fields for any CNC Line shipment identified by container number, bill of lading, or booking number. Response data includes the full movement history (past, current, and provisional moves), port-to-port route details, vessel name, and a progress object showing how far along the shipment is toward final delivery.
What the API Returns
The get_shipment_tracking endpoint accepts a single reference parameter — a container number (ISO 6346 format), bill of lading number, or booking number — and returns a structured response covering the full lifecycle of the shipment. The found boolean tells you immediately whether the reference resolved to a live shipment record. Key fields include bl_number, booking_number, and container_size for identifying the shipment, plus a dates object with ISO datetime strings for milestone events such as departure and arrival.
Route and Vessel Data
The route object exposes port_of_loading, port_of_discharge, place_of_origin, and final_place_of_delivery, giving you the complete origin-to-destination picture for each shipment. The vessel object returns the vessel name and mode of transport, which is particularly useful when tracking multi-leg intra-Asia moves within the CMA CGM Group network.
Movement History and Progress
The moves object breaks movement history into three arrays: past_moves, current_moves, and provisional_moves. Each move entry includes vessel and voyage details, allowing you to reconstruct the shipment's full path and anticipate upcoming legs. The progress object provides numeric progression percentages alongside boolean completion flags, so you can build dashboards or alerting logic without parsing raw date strings.
The cnc-line.com API is a managed, monitored endpoint for www.cnc-line.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when www.cnc-line.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official www.cnc-line.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Automatically update an internal TMS when a CNC Line container's
current_moveschanges - Trigger customer notifications when
progresscompletion flags indicate a shipment has departed or arrived - Aggregate
routedata across multiple bookings to analyze port pair frequency for intra-Asia lanes - Cross-reference
vesseldetails with a vessel schedule feed to estimate actual vs. expected arrival - Flag overdue shipments by comparing
datesmilestone timestamps against expected transit windows - Build a shipment visibility dashboard that surfaces
provisional_movesto show upcoming port calls
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does CNC Line offer an official developer API?+
What does the `moves` object actually contain?+
moves object contains three arrays: past_moves (completed legs), current_moves (the shipment's active position), and provisional_moves (planned future legs). Each entry includes vessel name, voyage identifier, and associated port information. This lets you reconstruct the full itinerary and flag which leg is currently in progress.Can I search for multiple shipments in a single request?+
get_shipment_tracking endpoint accepts one reference per call. Bulk or batch lookups across multiple container or BL numbers are not currently supported. You can fork this API on Parse and revise it to add a batch endpoint that accepts an array of references.Does the API return estimated time of arrival (ETA) dates?+
dates object contains ISO datetime strings for key milestones, but specific labeling of individual date fields (e.g., a dedicated ETA field) depends on what CNC Line exposes for each shipment. Not every field in the dates object is guaranteed to be populated for every shipment, particularly for future legs. You can fork the API on Parse and revise it to surface or rename specific date fields for your use case.