Port line-up data sources
A port line-up is the authority's own berthing schedule: which vessel, which berth, which cargo, which agent, in what order. There is no world line-up feed, and anyone offering one is offering something else.
Why no vendor sells a global line-up
Because there is nothing to buy. Every port authority publishes independently, in its own format, on its own schedule, or not at all. The formats found in practice range from a proper JSON API behind a modern front end, to a daily spreadsheet workbook, to a PDF, to a page of HTML that changes shape without notice.
Covering a port therefore means writing and owning a parser for that specific port, and maintaining it against a publication that can change with no warning and no changelog. That is the entire reason coverage is quoted port by port rather than sold as a feed.
The four shapes a publication comes in
Ranked by how long the parser survives contact with reality.
| Shape | What it costs to keep |
|---|---|
| A documented API | The best case and the rarest. Antwerp-Bruges, Rotterdam and Montreal each publish machine-readable vessel schedules, and a handful of terminal operators do the same for their own berths. Fields are named, changes are usually versioned, and a parser written once keeps working. Almost no dry cargo port outside northern Europe is in this category. |
| A spreadsheet published on a schedule | Workable. The columns are stable enough to key on and the file is easy to fetch. What breaks it is a human editing the workbook: a merged cell, a renamed sheet, a note typed into a data row. None of those announce themselves. |
| A daily PDF | Expensive. The layout is the schema, so a change of typesetter is a change of format, and a table split across a page break has to be reassembled before it can be read at all. |
| An HTML page | Cheap to start, unbounded to maintain. It works until the authority redesigns the site, which nobody announces, and then it silently returns nothing or, much worse, returns the wrong column. |
The failure that matters is not the parser that breaks. A parser that breaks throws, and somebody looks at it. The parser to fear is the one that keeps returning rows after the publication changed underneath it, because a stale or shifted berthing order looks exactly like a current one and nothing in the document says otherwise. Anything importing a line-up needs to record when the source was last successfully read, and show that date next to the data rather than filing it in a log.
What a line-up actually contains
| Field | Notes |
|---|---|
| Vessel name | As the authority writes it. Frequently a former name. |
| Berth | The point of the document. |
| Cargo | Commodity and often quantity. |
| Agent | Useful, and rarely available anywhere else. |
| ETA / ETB / ETD | Expected arrival, berthing, departure. |
| Status | Waiting, working, sailed. |
| IMO number | Never. No authority publishes one. |
The three time fields are not interchangeable and authorities are not consistent about which one they mean. ETA is when she is expected off the port, ETB is when she is expected on the berth, and the gap between them is the congestion the document exists to show. A line-up that carries only one date, unlabelled, has thrown away the thing a broker was reading it for.
The matching problem
Because there is no IMO, every line has to be matched to a hull by name, and names are the worst possible key. They collide: one register of 53,283 hulls held 2,359 shared names. They change: 11,869 hulls in Port State Control data have been inspected under more than one name.
So a match is a guess with a confidence attached, and any tool doing it must show the
authority's raw string alongside whatever hull it attached, never replacing one with the
other. A line-up that silently rewrites SEA FUJI YAMA to a register entry has
thrown away the only evidence of what was actually published.
Two things make the guess better without pretending it is certain. A cargo quantity on the line narrows the candidates to hulls that could lift it, which usually settles a collision between two ships sharing a name. And a name history settles the other half, because the authority is often printing a name the hull was sold out of years ago, and a matcher that knows only current names will invent a new ship rather than find the right one. The ranking that comes out of both is set out in ship names change, and they are not unique.
An unresolved row is not a failure. It is a row for a person to look at, and it must be parked as one rather than being forced onto the nearest hull or dropped. Forcing it attributes a berth to the wrong ship; dropping it makes the line-up quietly incomplete, which is worse, because nothing on the screen says a row is missing.
Why a line-up is not an arrival list
An arrival list derived from AIS is a different document with a different meaning. AIS carries a crew-keyed destination as free text, often abbreviated or stale. Measured across 94,337 fixes, 86% carry an ETA, so the weakness is not that the field is empty: only about half of those destinations resolve to a real port. And an ETA is a declaration by the crew about where she is going, never a berthing order from the port. Presenting one as the other gets an order quoted that does not exist.
The distinction survives every improvement to the AIS side of it. Even where a vendor has resolved the free text to a real port and attached a usable arrival time, what you have is still a declaration of intent typed on a bridge: no berth, no cargo, no agent, no order, and no authority behind it. That is a genuinely useful document under its own name and a dangerous one under this one. The same argument, from the chartering end, is in position list vs AIS vs port line-up.
What to do about the ports nobody publishes
Most of the world's berths are in this category, and no amount of money changes it. The line-up for those ports exists only in the agent's daily report, which arrives by e-mail to whoever asked for it, in whatever shape that agent writes. It is not a data source in any purchasable sense and it is frequently better than one, because the agent is standing there.
Which sets the honest scope for any tool. The ports worth building a parser for are the ports a particular desk actually trades, not a fixed list chosen once and then defended. A desk working the Arabian Gulf and the west coast of India needs four or five ports covered properly and gains nothing from a hundred it never fixes into.
References
- IMO, Revised Guidelines for the Onboard Operational Use of Shipborne Automatic Identification Systems (AIS), resolution A.1106(29), 2015. Destination and ETA are manually entered at the start of the voyage. imo.org
- Port of Antwerp-Bruges, PortStays and PortVoyages API. portofantwerpbruges.com
- Port of Rotterdam, API developer portal. portofrotterdam.com
Related
Neptune Atlas
Neptune Atlas does not import port line-ups and this version does not plan to, for the reason above: every port is its own parser against a publication that changes without notice, and a berthing order the software cannot actually see is the one answer a broking desk must never be handed. What it does carry is where a hull is and where her crew has declared for, drawn from the same feed as the live map and labelled as a declaration rather than as a berth. Every paid plan starts with 7 free days. A card is needed to start them, and cancelling before they end costs nothing.
Try 7 days free Ship chartering software for brokers What each plan includes