Port-to-Port Distance API LIVE

Real maritime sea routes for 6,700+ ports worldwide. ECA zones, canal routing, piracy zones — all in one JSON call.

GET https://neobulkcarriers.com/api/distance_public.php ?key=YOUR_API_KEY &from_port=Fujairah &to_port=Singapore &from=56.3417,25.1288 &to=103.8198,1.3521

Simple, transparent pricing

Start free. Scale as you grow. No setup fees.

FREE
$0 /mo

  • ✅ 100 requests / day
  • ✅ 1,000 requests / month
  • ✅ Full JSON response
  • ✅ DB cache (fast repeat)
  • ❌ ECA zone detail
  • ❌ Email support
Get Free Key
BASIC
$29 /mo

  • ✅ 1,000 requests / day
  • ✅ 10,000 requests / month
  • ✅ Full JSON response
  • ✅ ECA zone detail
  • ✅ Canal restrictions
  • ❌ Priority support
Get Basic Key
ENTERPRISE
Custom

  • ✅ Unlimited requests
  • ✅ SLA guarantee
  • ✅ Custom integration help
  • ✅ Dedicated support
  • ✅ Invoice billing
  • ✅ White-label option
Contact Us

Quickstart

Three steps to your first sea route calculation.

1. Get your API key

Email info@neobulkcarriers.com with your company name and intended use case. We'll send your key within 24 hours.

2. Make your first request
curl -X GET \ "https://neobulkcarriers.com/api/distance_public.php" \ -H "X-Api-Key: nbk_your_key_here" \ -G \ --data-urlencode "from_port=Fujairah" \ --data-urlencode "to_port=Singapore" \ --data-urlencode "from=56.3417,25.1288" \ --data-urlencode "to=103.8198,1.3521"
3. Parse the response
{ "ok": true, "from_port": "Fujairah", "to_port": "Singapore", "distance_nm": 3241.7, "distance_eca_nm": 142.3, "duration_hours": 281.9, "gateways_used": "auto", "traversed": ["Strait of Malacca"], "eca_zones": [], "piracy_zones": ["Gulf of Aden"], "canal_restrictions": [], "source": "calculated", "plan": "pro", "response_ms": 847 }
Code samples
import requests response = requests.get( "https://neobulkcarriers.com/api/distance_public.php", headers={"X-Api-Key": "nbk_your_key_here"}, params={ "from_port": "Fujairah", "to_port": "Singapore", "from": "56.3417,25.1288", "to": "103.8198,1.3521", } ) data = response.json() print(f"Distance: {data['distance_nm']} nm")

API Reference

Endpoint
GET or POST https://neobulkcarriers.com/api/distance_public.php
Authentication

Pass your key as an HTTP header X-Api-Key (preferred) or as a query parameter ?key=.

Request Parameters
ParameterTypeRequiredDescription
from_portstringRequiredDeparture port name (for logging & display)
to_portstringRequiredDestination port name
fromstringRequiredDeparture coordinates as "longitude,latitude"
tostringRequiredDestination coordinates as "longitude,latitude"
gatewaysstringOptionalForce routing through canals: suez, panama, kiel (comma-separated)
speed_knotfloatOptionalVessel speed in knots. Default: 11.5
Response Fields
FieldTypeDescription
okbooltrue on success
distance_nmfloatTotal sea distance in nautical miles
distance_eca_nmfloatDistance within ECA (Emission Control Area) zones
duration_hoursfloatEstimated voyage duration at requested speed
gateways_usedstringCanals the route passes through, or "auto"
traversedarrayNamed straits and passages on the route
eca_zonesarrayECA zones encountered
piracy_zonesarrayHigh-risk piracy areas on route
canal_restrictionsarrayCanal size/draft restrictions relevant to route
sourcestringcalculated (live) or cache (from DB, instant)
response_msintServer response time in milliseconds

Error Codes

HTTP CodeErrorMeaning
200Success
400Bad RequestMissing or invalid parameters
401UnauthorizedMissing or invalid API key
403ForbiddenKey disabled or expired
429Too Many RequestsDaily or monthly limit reached
502Calculation FailedRoute could not be computed (very rare)
// Error response shape { "ok": false, "error": "Daily limit reached.", "daily_limit": 100, "used_today": 100, "resets_at": "2026-04-04 00:00:00 UTC+0 (midnight)" }
© 2026 NeoBulk Carriers — Port Distance API  |  info@neobulkcarriers.com