Maersk APImaersk.com ↗
Track Maersk containers, list active vessels and ports, search locations, and check port-pair sailing availability via a single structured JSON API.
What is the Maersk API?
This API exposes 5 endpoints covering Maersk's fleet, port network, and shipment tracking. Use get_container_tracking to retrieve a full chronological event history for any active container or Bill of Lading, including gate-out, load, discharge, and arrival timestamps. Other endpoints enumerate the active vessel fleet with IMO numbers, list worldwide ports with UN location codes, resolve city names to Maersk geo IDs, and query available sailings between any two ports over a 4-week window.
curl -X GET 'https://api.parse.bot/scraper/0bef50e0-3839-4914-bb15-ebb7793a5b7d/get_container_tracking?tracking_number=MRKU9157416' \ -H 'X-API-Key: $PARSE_API_KEY'
Retrieve container tracking information by container number. Returns shipment origin, destination, container details, and a chronological sequence of tracking events (gate-out, gate-in, load, discharge, arrivals, departures) with timestamps. Requires a valid active container or Bill of Lading number; returns input_not_found for numbers with no tracking data. The endpoint warms up an Akamai-protected session before querying, which adds one extra round-trip on first call.
| Param | Type | Description |
|---|---|---|
| tracking_numberrequired | string | Container number (4 letters + 7 digits, e.g. MRKU9157416) or Bill of Lading number (9 characters) |
{
"type": "object",
"fields": {
"origin": "object with terminal, city, country, country_code, and location_code for shipment origin",
"containers": "array of container objects with container_num, container_size, container_type, iso_code, operator, origin, destination, locations (tracking events), eta_final_delivery, and status",
"destination": "object with terminal, city, country, country_code, and location_code for shipment destination",
"last_update_time": "ISO 8601 timestamp of last tracking update",
"is_container_search": "boolean indicating if this was a container number search"
},
"sample": {
"status": "blocked",
"message": "Blocked by ip_ban",
"block_type": "ip_ban"
}
}About the Maersk API
Container and Shipment Tracking
get_container_tracking accepts either a container number (4 letters + 7 digits, e.g. MRKU9157416) or a 9-character Bill of Lading number via the tracking_number parameter. The response includes an origin and destination object — each with terminal, city, country, country_code, and location_code — plus a containers array that carries per-container details such as container_size, container_type, iso_code, and a locations sequence of timestamped tracking events. The last_update_time field is an ISO 8601 timestamp indicating data freshness, and is_container_search distinguishes container-number queries from B/L lookups.
Fleet and Port Reference Data
list_active_vessels returns an array of all currently active Maersk vessels, each with a vesselMaerskCode, vesselName, vesselIMONumber, flagISOCountryCode, and callSign — useful for cross-referencing vessels returned in sailing results. list_active_ports enumerates every port Maersk serves worldwide; each port object includes isoCountryCode, countryName, unLocationCode, cityName, portName, portCode, and regionCode. Both endpoints take no parameters and return complete snapshots.
Location Search and Route Availability
search_locations resolves a free-text city or port name into structured geo-identifiers. Passing a city_name string returns up to 25 results sorted by city name, each with latitude, longitude, unLocCode, maerskGeoLocationId, and type. The maerskGeoLocationId values feed directly into check_port_pair_availability, which accepts origin_geo_id, destination_geo_id, and an optional departure_date (ISO YYYY-MM-DD). The response lists individual sailings with departure_date, arrival_date, transit_time as an ISO 8601 duration, route_code, and a vessels array, along with summary fields: is_bookable, total_sailings, search_date_from, and search_date_to covering the 4-week search window.
The Maersk API is a managed, monitored endpoint for maersk.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when maersk.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 maersk.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?+
- Monitor live shipment status by polling
get_container_trackingwith a container number and parsing the ordered event sequence for gate-in, load, and discharge milestones. - Build a port directory tool using
list_active_portsto map UN location codes to Maersk internal port codes for EDI or booking integrations. - Resolve customer-entered city names to
maerskGeoLocationIdvalues viasearch_locationsbefore querying route availability. - Check transit times and available departure dates between two ports using
check_port_pair_availabilityto power a freight quote tool. - Cross-reference vessel names in sailing results against the
list_active_vesselsIMO numbers for fleet tracking dashboards. - Alert logistics teams when
total_sailingsdrops to zero for a given port pair, signaling schedule gaps. - Validate origin and destination port codes in shipment records by comparing against the
unLocationCodefield fromlist_active_ports.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Maersk have an official developer API?+
What tracking events does `get_container_tracking` return, and how are they structured?+
containers array where each container object includes a locations field — a chronological list of tracking events. Events cover milestones such as gate-out, gate-in, vessel load, discharge, departure, and arrival. Each event carries a timestamp. The last_update_time field at the top level indicates when the tracking record was last refreshed.Does `check_port_pair_availability` return freight rates or booking prices?+
is_bookable flag and total_sailings count. Freight rate or spot price data is not included. You can fork this API on Parse and revise it to add a pricing-focused endpoint if that data is accessible.Can I look up historical container movements beyond the current active shipment?+
get_container_tracking endpoint covers active containers and Bills of Lading with a current tracking record. Deep historical archives for completed or aged shipments are not currently returned. You can fork the API on Parse and revise it to target historical shipment records if the source exposes that data separately.How fresh is the vessel and port list data from `list_active_vessels` and `list_active_ports`?+
last_updated timestamp, so treat results as current but not guaranteed to reflect same-day fleet changes.