VESSEL POSITIONS
Ship Tracking API
Track vessel positions with AIS data. Query ship locations, speed, heading, and crew-reported ETAs for 700,000+ vessels through a simple REST API.
700K+
Vessels in DB
50K+
Vessels reporting / hour
230+
Flag states
<1 min
Update Latency
What the Ship Tracking API Provides
Access AIS position data, vessel metadata, and crew-reported ETAs through RESTful endpoints. Built for developers who need reliable ship position data.
AIS Vessel Positions
Latitude, longitude, speed over ground, course, heading, and navigational status. Updated continuously from terrestrial AIS receivers.
Area-Based Queries
Find all vessels within a bounding box or radius. Query by geographic area with spatial indexing for fast responses.
Crew-Reported ETAs
Access destination and ETA data as reported by vessel crew via AIS. Includes draught information for port planning.
Batch Position Queries
Retrieve positions for multiple vessels in a single request. Filter by MMSI or IMO number with time range support.
Vessel Search
Find vessels by name, callsign, flag, type, or year built. Full-text search with flexible filters.
MMSI & IMO Resolution
Query by either MMSI or IMO number. The API automatically resolves vessel identifiers across all endpoints.
Who Uses Ship Tracking APIs
Fleet Management
Monitor your fleet. Track vessel locations, speeds, and ETAs for operational planning and route optimization.
Supply Chain Visibility
Track cargo shipments from origin to destination. Use live positions and ETAs to estimate delivery timing and reduce uncertainty.
Port Operations
Plan berth allocations based on approaching vessel positions and ETAs. Reduce congestion and optimize resource scheduling.
Maritime Analytics
Analyze shipping patterns, trade routes, and vessel behavior. Build dashboards and models with AIS position data.
Get a Ship Position in Seconds
One HTTP request. Vessel position data. No complex setup required.
# Get the current position of a vessel by MMSI
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.vesselapi.com/v1/vessel/211331640/position"
{
"mmsi": 211331640,
"imo": 9548480,
"vesselName": "NORDIC POLLUX",
"latitude": 53.5432,
"longitude": 9.9846,
"timestamp": "2026-03-22T14:32:10Z",
"sog": 12.4,
"cog": 245.3,
"heading": 244,
"navStatus": "Under way using engine"
}
SDKs available: Use our official SDKs for TypeScript, Python, and Go with auto-pagination, typed errors, and retry logic built in.
Use SDKs or Ask Your AI Assistant
Integrate ship tracking with official SDKs or query maritime data directly from Claude Code, Cursor, or any MCP-compatible AI assistant.
Claude Code (MCP Server)
With the VesselAPI MCP server installed, ask your AI assistant in natural language:
# In your Claude Code terminal:
> Where is the vessel NORDIC POLLUX right now?
# Claude calls get_vessel_position and responds:
# "NORDIC POLLUX (MMSI 211331640) is currently at 53.5432°N, 9.9846°E
# near Hamburg, Germany. Speed: 12.4 knots, heading 244°, under way using engine."
> Show me all vessels within 50km of Rotterdam port
# Claude calls get_vessels_in_radius with Rotterdam coordinates and returns
# a list of vessels in the area with their positions and navigation status.
Setup: Install with npx -y vesselapi-mcp and add to your MCP client configuration. Works with Claude Desktop, Cursor, Claude Code, and Windsurf.
TypeScript
import { VesselClient } from "vesselapi";
const client = new VesselClient("YOUR_API_KEY");
// Get a single vessel position
const { vesselPosition } = await client.vessels.position("211331640", { filterIdType: "mmsi" });
console.log(`${vesselPosition.vessel_name}: ${vesselPosition.latitude}, ${vesselPosition.longitude}`);
// Find all vessels near a port (50km radius)
const nearby = await client.location.vesselsRadius({
latitude: 51.9,
longitude: 4.05,
radius: 50000,
});
for (const v of nearby.vessels) {
console.log(`${v.vessel_name} - nav status ${v.nav_status}`);
}
Python
from vessel_api_python import VesselClient
client = VesselClient(api_key="YOUR_API_KEY")
# Get a single vessel position
pos = client.vessels.position("211331640", filter_id_type="mmsi").vessel_position
print(f"{pos.vessel_name}: {pos.latitude}, {pos.longitude}")
# Get crew-reported ETA
eta = client.vessels.eta("211331640", filter_id_type="mmsi").vessel_eta
print(f"Destination: {eta.destination}, ETA: {eta.eta}")
Available Endpoints
/v1/vessel/{id}/position
Get the latest position for a single vessel by MMSI or IMO number.
/v1/vessels/positions
Get positions for multiple vessels in a single request. Filter by time range.
/v1/location/vessels/bounding-box
Find all vessels within a geographic bounding box. H3-indexed for fast spatial queries.
/v1/location/vessels/radius
Find all vessels within a radius (up to 100 km) of a given coordinate.
/v1/vessel/{id}/eta
Get the crew-reported ETA, destination, and draught for a vessel.
/v1/search/vessels
Search vessels by name, callsign, flag, or vessel type.
Frequently Asked Questions
How often are ship positions updated?
AIS transmission intervals range from 2-30 seconds while a vessel is underway, to up to 3 minutes while at anchor. Position data is ingested continuously from terrestrial AIS receivers with sub-minute latency.
Can I track vessels by area instead of individual MMSI?
Yes. The bounding box and radius endpoints let you query all vessels in a geographic area. The bounding box supports areas up to 4 degrees span, and the radius endpoint supports up to 100 km.
Is there a free ship tracking API tier?
Yes. VesselAPI offers a free tier that gives you access to all ship tracking endpoints. Sign up to get your API key and start querying vessel positions immediately.
What data is included in each position report?
Each position includes latitude, longitude, speed over ground (SOG), course over ground (COG), heading, navigational status, vessel name, MMSI, IMO, and timestamp.
Do you support both MMSI and IMO lookups?
Yes. All vessel endpoints accept either MMSI or IMO as the identifier. Specify the type with the filter.idType parameter. The API resolves identifiers automatically.
Does the API include satellite AIS data?
Currently, VesselAPI ingests data from terrestrial AIS receivers. Coverage is strongest in coastal waters and port areas. Open-ocean satellite AIS is not currently included.
Start Tracking Ships Today
Get your free API key and make your first ship position query in minutes.