REAL-TIME VESSEL POSITIONS
Ship Tracking API
Track vessel positions in real-time with AIS data. Query live ship locations, speed, heading, and crew-reported ETAs for 682,000+ vessels through a simple REST API.
682K+
Vessels Tracked
43K+
Active Per Hour
230
Countries
<1 min
Update Latency
What the Ship Tracking API Provides
Access real-time AIS position data, vessel metadata, and crew-reported ETAs through RESTful endpoints. Built for developers who need reliable ship position data.
Live Vessel Positions
Latitude, longitude, speed over ground, course, heading, and navigational status. Updated continuously from 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, owner, class society, 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 in real-time. 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 real-time AIS position data.
Get a Ship Position in Seconds
One HTTP request. Real-time 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 { VesselAPI } from "vesselapi";
const client = new VesselAPI({ apiKey: "YOUR_API_KEY" });
// Get a single vessel position
const position = await client.vessels.position(211331640, "mmsi");
console.log(`${position.vesselName}: ${position.latitude}, ${position.longitude}`);
// Find all vessels near a port (50km radius)
const nearby = await client.location.vesselsByRadius({
latitude: 51.9,
longitude: 4.05,
radius: 50000,
});
for (const vessel of nearby.data) {
console.log(`${vessel.vesselName} - ${vessel.navStatus}`);
}
Python
from vesselapi import VesselClient
client = VesselClient(api_key="YOUR_API_KEY")
# Get a single vessel position
position = client.vessels.position(211331640, "mmsi")
print(f"{position.vessel_name}: {position.latitude}, {position.longitude}")
# Get crew-reported ETA
eta = client.vessels.eta(211331640, "mmsi")
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, vessel type, owner, or class society.
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.