Maersk APImaersk.com ↗
Track Maersk containers, query active vessels and ports, check port-pair sailings, and browse 200+ shipping routes via a single REST API.
What is the Maersk API?
The Maersk API covers 11 endpoints spanning container tracking, fleet data, port listings, location search, and point-to-point sailing availability. The get_container_tracking endpoint returns a full chronological event sequence — gate-out, load, discharge, arrivals — for any container number or Bill of Lading. Fleet and port data come from list_active_vessels and list_active_ports, while route discovery spans 25 categories and 200+ named routes.
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 Tracking and Fleet Data
The get_container_tracking endpoint accepts a container number (4 letters + 7 digits, e.g. MRKU9157416) or a 9-character Bill of Lading number. The response includes origin and destination objects with terminal, city, country, and UN location code, plus a containers array carrying per-container fields such as container_size, iso_code, operator, and a sequence of timestamped tracking events. last_update_time gives the ISO 8601 timestamp of the most recent data refresh. list_active_vessels returns the full active Maersk fleet — each vessel entry includes vesselIMONumber, vesselMaerskCode, flagISOCountryCode, and callSign.
Ports, Locations, and Geo IDs
list_active_ports returns every Maersk-served port worldwide, with fields including unLocationCode, portCode, regionCode, countryName, and cityName. To resolve a city or port name to coordinates and a Maersk-specific identifier, use search_locations with a city_name parameter; results include latitude, longitude, unLocCode, and maerskGeoLocationId. That maerskGeoLocationId is required input for check_port_pair_availability.
Sailing Availability and Route Discovery
check_port_pair_availability takes origin_geo_id and destination_geo_id (obtained from search_locations) and an optional departure_date in YYYY-MM-DD format. It searches a 4-week window and returns a sailings array with departure_date, arrival_date, transit_time as an ISO 8601 duration, route_code, and a vessels array per sailing. The is_bookable boolean indicates whether any sailings exist for the pair.
Route Browsing
Route discovery has four entry points. list_route_categories returns all 25 categories with their slugs. list_routes_by_category accepts a category_slug and returns matching routes. list_all_routes aggregates every route across all categories — 200+ entries — with a category_summary breakdown. search_routes matches a free-text query against route names, slugs, and category names, returning total_matches and a routes array. get_country_routes narrows results by region slug and country name, while get_route_details resolves a single route_code slug to an ordered port sequence with transit times.
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?+
- Track inbound shipments by container number and alert on gate-out or discharge events.
- Build a port database by ingesting
list_active_portsfor all UN location codes and region codes. - Check whether a direct Maersk sailing exists between two ports before requesting a freight quote.
- Look up vessel IMO numbers and flag countries for fleet compliance reporting.
- Resolve city names to
maerskGeoLocationIdvalues to feed into availability checks. - Enumerate all routes in a category (e.g. intra-Asia-Pacific feeder routes) for network analysis.
- Monitor transit times between a fixed port pair by polling
check_port_pair_availabilityweekly.
| 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 offer an official developer API?+
What exactly does get_container_tracking return, and does it cover all carriers?+
How do I find the geo IDs needed for check_port_pair_availability?+
search_locations with a city_name string such as 'Rotterdam' or 'Singapore'. Each result includes a maerskGeoLocationId field, which is the value expected by origin_geo_id and destination_geo_id in check_port_pair_availability.Does the API return live vessel positions or AIS location data?+
list_active_vessels returns fleet metadata — vessel name, IMO number, Maersk code, flag country, and call sign — but not real-time geographic positions or AIS tracks. You can fork the API on Parse and revise it to add a vessel-position endpoint sourced from a public AIS data provider.Does check_port_pair_availability return freight rates or booking prices?+
is_bookable boolean, but no rate or price data. You can fork the API on Parse and revise it to add an endpoint that retrieves publicly visible spot rate data from Maersk's quote flow.