For developers
Sea route & distance API
One GET request returns the practical sea route between any two ports or coordinates: distance in nautical miles, kilometers and statute miles, voyage time at your speed, the canals and straits used, and optional route geometry. Computed over the open Eurostat global shipping-lane network, the same class of network behind freight routing tools, at a fraction of incumbent API pricing.
The endpoint
curl "https://marine-os-lime.vercel.app/api/v1/searoute?from=SGSIN&to=NLRTM&speed=14&geometry=1" \ -H "Authorization: Bearer mos_your_key"
{
"from": { "name": "Singapore", "code": "SGSIN", "lat": 1.26, "lng": 103.83 },
"to": { "name": "Rotterdam", "code": "NLRTM", "lat": 51.92, "lng": 4.50 },
"distance": { "nm": 8439.2, "km": 15629.4, "mi": 9711.7 },
"hours": 602.8,
"passages": ["malacca", "suez", "gibraltar", "dover"],
"geometry": { "type": "LineString", "coordinates": [[103.83, 1.26], ...] }
}| Parameter | Description |
|---|---|
| from, to | UN/LOCODE (e.g. SGSIN) or "lat,lng". About 1,600 major ports resolve by code. |
| speed | Knots. When set, the response includes voyage hours. |
| avoid | Comma list of passages to route around: suez, panama, kiel, corinth, gibraltar, dover, bosporus, malacca, sunda, babelmandeb, ormuz, bering, magellan, northwest, northeast, cape_horn. |
| geometry | geometry=1 adds a GeoJSON LineString of the route. |
POST with a JSON body is also supported. Every response carries an X-Quota-Remaining header.
Voyage estimation endpoint
For chartering desks and voyage-estimation tools: one call returns distance, steaming time, bunker consumption and cost — and when you pass freight and cargo, voyage revenue, TCE (time charter equivalent), and the voyage result. All economic inputs are optional; send what you have, get back what can be computed.
curl "https://marine-os-lime.vercel.app/api/v1/voyage?from=CNSHA&to=NLRTM&speed=12.5&consumption=28\ &bunker_price=560&port_days=4&freight_rate=42&cargo=55000&other_costs=180000" \ -H "Authorization: Bearer mos_your_key"
{
"distance": { "nm": 10587.3, "km": 19607.7, "mi": 12183.6 },
"passages": ["malacca", "suez", "gibraltar", "dover"],
"time": { "seaDays": 35.29, "portDays": 4, "totalDays": 39.29, "seaHours": 847.0 },
"bunkers": { "seaMt": 988.1, "portMt": 0, "totalMt": 988.1, "costUsd": 553337 },
"economics": {
"revenueUsd": 2310000, "bunkerCostUsd": 553337, "otherCostsUsd": 180000,
"tceUsdPerDay": 40128, "voyageResultUsd": null
},
"assumptions": { "speedKnots": 12.5, "consumptionMtPerDay": 28, ... }
}| Parameter | Description |
|---|---|
| from, to, speed, avoid | Same as the searoute endpoint. Speed defaults to 12 knots. |
| consumption, port_consumption | Bunker consumption in mt/day steaming and in port. |
| bunker_price | USD per mt — turns consumption into bunker cost. |
| port_days | Total days in port (load + discharge); added to voyage days. |
| freight_rate, cargo | USD/mt and cargo mt — together they give voyage revenue. |
| other_costs | Lump-sum USD for port dues, canal tolls, etc. |
| hire | USD/day time-charter hire — adds the charterer-side voyage result. |
TCE = (revenue − bunker cost − other costs) ÷ total voyage days. Voyage estimation calls count against the same monthly quota. Want to eyeball a distance first? Use the free sea distance calculator.
Emissions & EU compliance endpoint
/api/v1/emissions returns, for any port pair: emissions by gas (CO₂/CH₄/N₂O), EU ETS allowances due under the 2026 rules with euro cost at your EUA price, FuelEU Maritime balance and penalty exposure, and an indicative CII rating. Included in every plan — full documentation on the Voyage Emissions API page, or try the free EU ETS calculator.
In your language
Python
import requests
r = requests.get(
"https://marine-os-lime.vercel.app/api/v1/searoute",
params={"from": "SGSIN", "to": "NLRTM", "speed": 14},
headers={"Authorization": "Bearer mos_your_key"},
)
route = r.json()
print(route["distance"]["nm"], "nm,", route["hours"], "h")JavaScript
const res = await fetch(
"https://marine-os-lime.vercel.app/api/v1/searoute?from=SGSIN&to=NLRTM&speed=14",
{ headers: { Authorization: "Bearer mos_your_key" } }
)
const route = await res.json()
console.log(route.distance.nm, "nm,", route.hours, "h")How the pricing compares
Sea distance APIs are priced all over the map. Public list prices as of August 2026 (verify with each vendor):
| Provider | Listed entry price | Calls included |
|---|---|---|
| Marine OS Route API | $799/mo billed annually | 10,000/mo (~$0.08 per call) |
| Searoutes | from ~400 EUR/mo | 3,000/mo listed at entry |
| NAVAPI | from ~6,900 EUR/yr | unlimited (annual commitment) |
| Seametrix | from ~1,500 EUR/yr | plan-dependent |
Providers differ in what they model (ECA zones, vessel-specific constraints, emissions methodology). If you need planning-grade port-to-port distances, times, and geometry, run the same queries against a trial key of each and compare numbers and cost. Our sea distance API guide walks through the whole provider landscape.
Pricing
Starter
For small desks and side projects.
- 100 API calls per month
- Distance + voyage estimation endpoints
- All passages and route geometry included
- Cancel anytime
Annual
Billed yearly ($9,588/yr). Save 33% vs monthly.
- 10,000 API calls per month
- All passages and route geometry included
- Email support from the founder
- Cancel anytime in Stripe
Monthly
No commitment.
- 10,000 API calls per month
- All passages and route geometry included
- Email support from the founder
- Cancel anytime in Stripe
Want to test first? Email support.marineos@gmail.com for a free 100-call trial key. Comparable sea-distance APIs list from roughly 400 EUR per month, so run the same queries against both and compare.
Honest scope
Distances are computed over the open Eurostat maritime network: realistic, planning-grade port-to-port figures of the kind freight tools publish. It is not a weather-routed or draft-optimized voyage plan, and it is not for navigation. If you need to sanity-check the output, our free sea distance pages publish the same engine's numbers for 56 known routes.
Frequently asked questions
How are the distances calculated?
Shortest path over the open Eurostat global shipping-lane network with your canal and strait choices applied, plus the exact start and end points stitched on. Distance is measured along that path; hours are distance divided by your speed.
How does pricing compare to Searoutes, NAVAPI, and Seametrix?
As publicly listed, Searoutes starts around 400 EUR per month with 3,000 calls included, NAVAPI from about 6,900 EUR per year, and Seametrix from about 1,500 EUR per year. The Marine OS API is $799 per month billed annually with 10,000 calls included, which works out to roughly $0.08 per call. Verify current pricing with each vendor; a free trial key makes it easy to run the same queries against both.
What happens if I go over 10,000 calls?
Calls beyond the quota return HTTP 429 until the monthly reset. If you consistently need more, email us and we will set up a higher tier.
Which ports are supported?
About 1,600 major seaports resolve by UN/LOCODE, and any point on earth works as "lat,lng", which covers smaller harbors and offshore points.
Is there a free trial?
Yes. Email support.marineos@gmail.com and we will issue a trial key with 100 calls so you can validate the numbers against your current provider before subscribing.
How do I cancel?
Subscriptions run through Stripe and can be canceled anytime; your key stays active until the end of the paid period.
