Public files
Paths are relative to https://airliftusa.com. Files are static: fetch them directly, no key needed. Please cache for at least an hour and attribute “Airlift Sealanes” with a link.
Files marked “and hourly” are published twice. The weekly copy under /assets/json/sealanes/ ships with the site and is what the prerendered pages and search engines see. The hourly copy sits at the same path under /sealanes/data/ — /sealanes/data/index.json, /sealanes/data/routes/INMUN-to-USNYC.json and so on — and is regenerated from the carrier schedule feed every hour by a scheduled job on Google Cloud, which writes it to Cloud Storage; it is served through this site at the paths above, so nothing about how you read these files changes. Read the hourly copy first and fall back to the weekly one when it answers with anything that is not JSON (a missing object is served as the site’s HTML shell with a 200) or when its meta.generatedAt is older than the copy you already have. Nothing else moves hourly: the Lane Pulse compares two weekly editions, the IMF PortWatch figures are refreshed weekly at source, and the terminal lists come from the SMDG code list.
| File | Contents | Refreshed |
|---|---|---|
| /assets/json/sealanes/index.json | Every port pair with sailing counts, carriers, transit spread and Airlift history; carrier and service rosters; snapshot metadata. | weekly, and hourly at /sealanes/data/ |
| /assets/json/sealanes/routes/<ORIGIN>-to-<DESTINATION>.json | One port pair: every published sailing with carrier, service string, vessel, voyage, ETD, ETA, transit days, legs; services on the pair; schematic sea line. | weekly, and hourly at /sealanes/data/ |
| /assets/json/sealanes/services/<scac-code>.json | A service string: port pairs, ports called, the observed rotation (ports in median-day order with arrival and departure day offsets and calls seen) and the vessels deployed with sailings and voyages each. | weekly, and hourly at /sealanes/data/ |
| /assets/json/sealanes/vessels/<vessel-slug>.json | A vessel: sailings, carriers, strings, every dated port call in the window (ETA, ETD, service, voyage, pairs), the next call after the snapshot date, and AIS particulars when heard. | weekly, and hourly at /sealanes/data/ |
| /assets/json/sealanes/vessels-index.json | Roster of vessels with their own page. | weekly, and hourly at /sealanes/data/ |
| /assets/json/sealanes/carriers/<carrier-slug>.json | A carrier: port pairs, strings, vessel count. | weekly, and hourly at /sealanes/data/ |
| /assets/json/sealanes/ports/<UNLOCODE>.json | A port: UN/LOCODE facts and CBP Schedule D code, services calling, carriers, vessels, port pairs from and to it, and every scheduled arrival and departure read from the cohort's sailings, plus the IANA time zone and the nearby ports. | weekly, and hourly at /sealanes/data/ |
| /assets/json/sealanes/terminals/<UNLOCODE>.json | A port's container terminals from the SMDG Terminal Code List (terminal code, facility code, name, operator, coordinates, website, address), the port's IANA time zone with its UTC offset, and the nearby ports that could be used instead with the distance and the number of carrier services calling both. | weekly (terminal list refreshed from SMDG on demand) |
| /assets/json/sealanes/ports/<UNLOCODE>.pairs.json | Port pairs starting or ending at a port (the compact file the port-code pages embed). | weekly, and hourly at /sealanes/data/ |
| /assets/json/sealanes/portwatch/chokepoints.json | IMF PortWatch daily transit calls for the 28 maritime chokepoints over 90 days, with seven- and 28-day averages for all ships and for container ships, the 90-day baseline and the official advisory desks for each area. | weekly |
| /assets/json/sealanes/portwatch/ports/<UNLOCODE>.json | IMF PortWatch daily container-ship calls at a Sealanes port over 90 days, with seven- and 28-day averages, the 90-day baseline and how the port was matched onto the PortWatch port list. | weekly |
| /assets/json/sealanes/portwatch/routes.json | Which of the 28 chokepoints each port pair’s schematic sea line passes, and how close. | weekly |
| /assets/json/sealanes/portwatch/index.json | The PortWatch roster: every Sealanes port with its PortWatch port, match method and current averages, plus the ports PortWatch does not cover. | weekly |
| /assets/json/sealanes/pulse.json | The Lane Pulse: week-over-week withdrawn, rescheduled and added sailings by lane. | weekly |
| /assets/json/sealanes/history/series.json | Per-edition totals and lane counts, up to 52 editions. | weekly |
| /sealanes-pulse.xml | RSS feed of Lane Pulse editions. | weekly |
| https://api.myairliftusa.com/api/v1/sealanes/live/positions | Same payload as positions.json, served by the live AIS service from one open aisstream.io subscription; ETag and 60-second cache; the site reads this first and falls back to the static file. | continuous |
| /sealanes/live/positions.json | Last reported AIS position, status, speed, course, destination and ETA for vessels in the snapshot (present only where the live layer is enabled). | every 2 hours |
| /sealanes/data/manifest.json | When the hourly copy was generated (`generatedAt`), the date of the carrier schedules in it, and the number of routes, carrier services, ships, carriers, ports and sailings it holds. Read this to see how old the live copy is without downloading it. | hourly |
MCP server
A single-file, dependency-free MCP server (stdio, JSON-RPC 2.0, Node 20 or newer) reads these files from this site — the hourly copy first, the weekly one as fallback — and, for a port pair Sealanes does not cover, checks the live schedule feed. Download it, then point an MCP client such as Claude Desktop at it:
curl -O https://airliftusa.com/assets/sealanes-mcp.mjs
node sealanes-mcp.mjs # speaks MCP on stdin/stdout{
"mcpServers": {
"airlift-sealanes": {
"command": "node",
"args": [
"/path/to/sealanes-mcp.mjs"
]
}
}
} The server reads from https://airliftusa.com by default. The files in the table above and the script itself are served from that address once Sealanes is deployed there; until then, set SEALANES_BASE_URL to a host that serves them, or SEALANES_LOCAL=1 to read a local checkout of the Airlift repository.
| Tool | Returns |
|---|---|
| sealanes_lanes | port pairs by lane with sailing counts and transit spreads |
| sealanes_route | sailings, carriers, strings and Airlift history for a port pair; falls back to the live feed for pairs outside the cohort |
| sealanes_service | a service string: port pairs, observed rotation with day offsets, vessels deployed |
| sealanes_vessel | a vessel: sailings, strings, upcoming port calls and next call, AIS particulars and last position |
| sealanes_port | a port: facts, time zone, container terminals, nearby ports, services calling, pairs, carriers, vessels and scheduled arrivals and departures |
| sealanes_carrier | a carrier: port pairs, strings, vessel count |
| sealanes_pulse | the latest Lane Pulse |
| sealanes_chokepoints | transit traffic through the 28 IMF PortWatch chokepoints, for all of them or only the ones a route crosses, with the official advisory desks |
| sealanes_live_vessels | vessels reporting on AIS |
Terms and method
Sailing dates, ships and port calls come from the carriers’ own published schedules for departures in the next four weeks, and your browser asks the schedule feed again when you open a page. A carrier service or a ship gets its own page once it has appeared on at least three of those sailings. Transit times labelled “Airlift history” are the typical range on Airlift’s own shipments for that lane, and the sea lines on the maps are schematic.
Provided for planning only. Schedules, routings and ship assignments change without notice; confirm with your carrier or with Airlift before booking. Nothing on these pages is a rate, a guarantee of space or a guaranteed transit time. Reuse is subject to the site terms and conditions; the data is provided as-is and must not be presented as a live booking or rate source.
The terminal lists in terminals/<UNLOCODE>.json are the SMDG Terminal Code List (CC-BY 4.0), republished every few weeks; time zones are the IANA time-zone database. Keep both attributions if you reuse those files.