An AIS nearby API lists ships whose last position falls inside a circle around a lat/lon — the practical way to watch a port approach without a separate geofence path. On Vessels API that is GET https://vessels-api.com/api/V1/vessels/nearby with header X-API-Key. Required: latitude, longitude. Optional: radius (nautical miles, default 50, max 200), limit (default 50), max_age_minutes (default 1440 = 24h, max 10080 = 7d).
Starter is $19.99/mo (2,500 calls) with a 7-day trial. Envelope: {status,success,message,data}. MCP: https://mcp.vessels-api.com (tool catalog includes nearby). Docs: vessels-api.com/docs (Nearby vessels).
Use cases
- Port approach. Center on the harbor (docs fixture: Buenos Aires
-34.60,-58.38,radius=30) and alert whendistance_nmdrops. - Traffic density. Plot
data.vessels[]; weigh each row withposition.age_minutes(a ship at 15 knots covers ~15 NM per hour). - Freshness. Tighten
max_age_minutesfor time-critical boards; the default 1440 drops vessels that stopped reporting.
Request: 30 NM off Buenos Aires
curl -H "X-API-Key: YOUR_API_KEY" \
"https://vessels-api.com/api/V1/vessels/nearby?latitude=-34.60&longitude=-58.38&radius=30"
Response: official nearby fixture
{
"status": 200,
"success": true,
"message": "OK",
"data": {
"center": { "latitude": -34.60, "longitude": -58.38 },
"radius_nm": 30,
"max_age_minutes": 1440,
"total": 12,
"vessels": [
{
"imo": null,
"mmsi": "258785000",
"name": null,
"ship_type": null,
"position": {
"latitude": -34.603722,
"longitude": -58.381592,
"timestamp_utc": "2026-02-09T10:30:00Z",
"age_minutes": 12
},
"distance_nm": 5.2,
"speed_knots": 15.5,
"course_degrees": 145.0,
"navigational_status": "Underway using engine"
}
]
}
}
There is no /geofence route. Nearby is the radius query. Live-position on a single IMO is a different Professional+ path.
Go live
1. Register — 7-day trial.
2. Copy X-API-Key.
3. GET nearby with lat, lon, and radius in NM.
4. Filter on distance_nm and age_minutes.




