portofrotterdam.com APIportofrotterdam.com ↗
Access vessel movements, container throughput statistics, anchorage performance, and nautical notices for the Port of Rotterdam via a single REST API.
curl -X GET 'https://api.parse.bot/scraper/5828d945-9313-405f-8026-3a26e1d63dfb/get_vessel_movements?query=MAERSK' \ -H 'X-API-Key: $PARSE_API_KEY'
Get current (Present), expected, and departed vessel movements at the Port of Rotterdam. Supports optional filtering by vessel name. Returns arrays of vessels grouped by status.
| Param | Type | Description |
|---|---|---|
| query | string | Optional vessel name filter (case-insensitive partial match, e.g. 'MAERSK'). Filters across Present, Expected, and Departed lists. |
{
"type": "object",
"fields": {
"Present": "array of vessels currently at port with fields: imo, name, berth, operator, datetime, etc.",
"Departed": "array of vessels that have departed",
"Expected": "array of vessels expected to arrive"
},
"sample": {
"data": {
"Present": [
{
"imo": "9769099",
"mmsi": "249455000",
"name": "RAN NOVA",
"ucrn": "NLRTM26008112",
"berth": "WAALH 2 C. STEINWEG PIER 1",
"length": "3066",
"breadth": "1050",
"draught": "400",
"datetime": "2026-04-10T10:35:00Z",
"operator": "Ran Offshore AS",
"call_sign": "9HA6264",
"flag_code": "MLT",
"gross_tonnage": "378",
"year_of_build": "2022",
"port_of_registry": "Valletta",
"ship_category_code": "B32A2ST"
}
],
"Departed": [],
"Expected": []
},
"status": "success"
}
}About the portofrotterdam.com API
This API provides 5 endpoints covering live and scheduled vessel movements, port performance metrics, and official nautical notices for the Port of Rotterdam. The get_vessel_movements endpoint returns vessels grouped into Present, Expected, and Departed arrays — each record including IMO number, berth, operator, and datetime. Container throughput, anchorage statistics, and active port notices round out the coverage.
Vessel Movements and Details
get_vessel_movements returns three arrays — Present, Expected, and Departed — each containing vessel records with fields like imo, name, berth, operator, and datetime. An optional query parameter filters results by vessel name using a case-insensitive partial match, making it straightforward to track vessels operated by a specific carrier such as 'MAERSK'. For deeper lookup, get_vessel_details accepts an imo number, a UCRN, or an exact vessel name and returns fields including flag_code, port_of_registry, and current_status. The endpoint returns a stale_input indicator if the vessel is not found in current movements.
Port Performance Statistics
get_port_performance_anchorage exposes time-series data for anchorage area activity. Response fields include anchorage_years_months (period labels in YYYY-M format), ds_avg_anchorage_time_in_days and ss_avg_anchorage_time_in_days for deep-sea and short-sea vessels respectively, percent_direct_to_berth, and port_visits. Filtering is available by date_from, date_to, year, month, and vessel_type. get_container_throughput_statistics returns quarterly TEU figures (teu_q), year-over-year change percentages (teu_q_diff_percentage), import/export splits, empty/full container ratios, and throughput broken down by service type — deep sea, short sea, and no liner.
Nautical Notices
get_port_notices returns the current set of active PIN and BAS nautical notices. Each notice object contains a content string with the full notice text, including start date, duration, and description. Typical notices cover navigation warnings, bridge disruptions, and capacity arrangements. This endpoint takes no input parameters and always reflects the currently active notice set.
- Monitor which vessels are currently berthed at Rotterdam and which are expected to arrive, using
PresentandExpectedarrays fromget_vessel_movements. - Look up a specific container ship's berth assignment and flag state by querying
get_vessel_detailswith its IMO number. - Track quarterly TEU throughput trends and year-over-year changes with
teu_q_diff_percentagefromget_container_throughput_statistics. - Analyze the percentage of vessels arriving direct-to-berth versus anchoring first, using
percent_direct_to_berthfromget_port_performance_anchorage. - Alert logistics teams to active navigation warnings or bridge disruptions by polling
get_port_noticesfor current BAS and PIN notices. - Compare average anchorage wait times for deep-sea versus short-sea vessels across custom date ranges using
ds_avg_anchorage_time_in_daysandss_avg_anchorage_time_in_days. - Filter vessel arrivals by carrier name to track fleet presence at Rotterdam in near-real time.
| 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 the Port of Rotterdam offer an official developer API?+
What does `get_vessel_details` return, and how do I search for a vessel?+
imo, name, berth, operator, flag_code, port_of_registry, and current_status (one of 'Present', 'Expected', or 'Departed'). You can pass an imo number, a UCRN, or an exact vessel name via the vessel_id parameter. If the vessel is not found in current movements, the response includes a stale_input indicator rather than an error.Does the API cover cargo tonnage or commodity-level breakdowns beyond container TEU?+
How current is the vessel movement data, and does it cover historical arrivals?+
get_port_performance_anchorage and get_container_throughput_statistics both accept date_from/date_to or year/quarter filters for historical statistical data, but individual historical vessel calls are not retrievable through this API. You can fork it on Parse and revise to add a historical vessel calls endpoint if that data becomes accessible.Can I filter nautical notices by type, such as only navigation warnings or only bridge disruptions?+
get_port_notices takes no input parameters and returns all currently active notices in a single array. Filtering by notice type (PIN vs BAS, or by category like bridge disruption) is not available — each notice is returned as a full content string. You can fork this API on Parse and revise it to add type-based filtering on top of the returned notice set.