Vessel Tracking API
Access real-time Automatic Identification System (AIS) data for maritime vessels worldwide. The vessel tracking API returns live positions, crew-reported ETAs, vessel characteristics, and short-term historical position data.
What is AIS Vessel Tracking?
The Automatic Identification System (AIS) is a tracking system used on ships and by vessel traffic services for identifying and locating vessels. AIS transceivers automatically broadcast information such as position, speed, and navigational status at regular intervals. The API collects this data from AIS transmissions and third-party maritime data providers, exposing it through REST endpoints.
With VesselAPI's vessel tracking endpoints, you can monitor fleet movements, track shipments, analyze maritime traffic patterns, and integrate live ship data into your applications. The API supports integration into logistics platforms, maritime analytics dashboards, and port management systems.
Coverage: AIS data is received from terrestrial AIS receivers and ingested continuously. Satellite AIS is not currently included. Individual vessel transmission intervals range from 2–30 seconds while underway to up to 3 minutes while at anchor, depending on speed and navigation status. Coverage is strongest in coastal waters and port areas.
Use Cases
Fleet Management
Monitor your fleet in real-time. Track vessel locations, speeds, and crew-reported ETAs for operational planning.
Supply Chain Visibility
Use crew-reported ETAs and live position data to estimate delivery timing. Track cargo shipments from origin to destination.
Port Operations
Plan berth allocations and resource scheduling based on approaching vessel positions and ETAs. Reduce port congestion and waiting times.
Maritime Analytics
Use AIS data for market research and risk assessment. Analyze shipping patterns, trade routes, and vessel behavior.
Vessel Identifiers
The API accepts two types of vessel identifiers. Understanding when to use each will help you build more robust integrations.
MMSI (Maritime Mobile Service Identity)
A unique 9-digit number assigned to a vessel's radio equipment. MMSI numbers are transmitted with every AIS message and are the primary identifier for real-time tracking.
Format: 9 digits (e.g., 123456789)
Note: MMSI can change if a vessel is re-flagged or its radio equipment is replaced.
IMO Number
A permanent 7-digit number assigned by the International Maritime Organization that follows a vessel throughout its lifetime, regardless of flag changes or ownership transfers.
Format: 7 digits (e.g., 9074729)
Best for: Long-term vessel tracking and historical analysis.
Available Endpoints
/vessel/{id}
Get Vessel Information
Retrieve static vessel data including name, type, dimensions, flag state, builder, and ownership information. The {id} parameter accepts either MMSI or IMO number.
Parameters:
filter.idType- Identifier type:mmsiorimo(required)
Response includes:
- Vessel name, callsign, and former names
- Vessel type and operating status
- Dimensions (length, breadth, draft) with units
- Flag state (country and country code)
- IMO and MMSI numbers
- Year built, gross tonnage, deadweight tonnage
- Engine type, model name, and kilowatt power
- Home port
- Builder, owner, manager, and class society
/vessel/{id}/position
Get Current Position
Retrieve the most recent AIS position report for a vessel, including real-time coordinates, vessel identifiers, and timestamps.
Parameters:
filter.idType- Identifier type:mmsiorimo(required)
Response includes:
- Latitude and longitude coordinates
- GeoJSON location object
- Vessel name, MMSI, and IMO
- Course over ground (COG) and speed over ground (SOG)
- True heading and navigational status
- Suspected glitch indicator
- Timestamp of last position update and processed timestamp
Accuracy note: While latitude, longitude, COG, and SOG are derived from onboard GPS and sensors, values such as navigational status and heading may be crew-configured or dependent on equipment calibration. These fields can occasionally be outdated or inaccurate. The suspected_glitch flag indicates positions that may be unreliable.
/vessel/{id}/eta
Get Estimated Time of Arrival
Retrieve the vessel's reported destination and estimated time of arrival (ETA) as broadcast via AIS. This information is entered by the ship's crew and updated during the voyage.
Parameters:
filter.idType- Identifier type:mmsiorimo(required)
Response includes:
- Vessel MMSI, IMO, and name
- Reported destination port
- Estimated arrival date and time
- Current draught in meters
- Timestamp of when ETA information was received
Note: ETA data is crew-reported and may not always be accurate or up-to-date. For critical applications, consider cross-referencing with position data and route calculations.
/vessels/positions
Get Multiple Vessel Positions
Retrieve position data for multiple vessels in a single request. Ideal for fleet monitoring dashboards where you need to track many vessels simultaneously.
Parameters:
filter.ids- Comma-separated list of MMSI or IMO numbers (required)filter.idType- Identifier type:mmsiorimo(required)time.from/time.to- Time range filter in RFC3339 format (optional, defaults to past 2 hours)pagination.limit- Results per page (max 50, default 20)pagination.nextToken- Cursor for next page of results
/search/vessels
Search Vessels
Search for vessels by name or callsign. Useful when you don't have the MMSI or IMO but know the vessel's name.
Parameters:
filter.name- Vessel name (partial match supported)filter.callsign- Radio callsignfilter.flag- ISO 2-letter country code of flag state (e.g.,PA,SG)filter.vesselType- Vessel type classification (case-insensitive, e.g.,Container Ship)filter.mmsi- MMSI numberfilter.imo- IMO numberfilter.yearBuiltMin- Minimum year builtfilter.yearBuiltMax- Maximum year builtfilter.classSociety- Classification society (case-insensitive)filter.owner- Owner name (partial match, case-insensitive)pagination.limit- Results per page (max 50, default 20)pagination.nextToken- Cursor for next page of results
At least one filter parameter is required.
/location/vessels/bounding-box
Vessels in Bounding Box
Find all vessels within a rectangular geographic area. Perfect for map-based applications showing vessels in a specific region. Maximum span of 4 degrees (|dLat| + |dLon|).
Parameters:
filter.latBottom,filter.latTop- Latitude boundsfilter.lonLeft,filter.lonRight- Longitude boundstime.from/time.to- Time range filter in RFC3339 format (optional, defaults to past 2 hours)pagination.limit- Results per page (max 50, default 20)pagination.nextToken- Cursor for next page of results
/location/vessels/radius
Vessels Within Radius
Find all vessels within a specified distance from a center point. Ideal for proximity alerts and nearby vessel detection.
Parameters:
filter.latitude- Center point latitudefilter.longitude- Center point longitudefilter.radius- Search radius in meters (required, max 100,000)time.from/time.to- Time range filter in RFC3339 format (optional, defaults to past 2 hours)pagination.limit- Results per page (max 50, default 20)pagination.nextToken- Cursor for next page of results
Code Examples
Get Vessel Position (cURL)
curl -X GET "https://api.vesselapi.com/v1/vessel/253041000/position?filter.idType=mmsi" \
-H "Authorization: Bearer YOUR_API_KEY"
Search Vessels by Name (Python)
import requests
response = requests.get(
"https://api.vesselapi.com/v1/search/vessels",
headers={"Authorization": "Bearer YOUR_API_KEY"},
params={"filter.name": "EVERGREEN", "pagination.limit": 20}
)
data = response.json()
for vessel in data["vessels"]:
# Search results return Vessel objects with 'name' (not 'vessel_name')
print(f"{vessel['name']} - MMSI: {vessel['mmsi']}")
Get Vessels in Area (JavaScript)
const response = await fetch(
"https://api.vesselapi.com/v1/location/vessels/bounding-box?" +
new URLSearchParams({
"filter.latBottom": 51.0,
"filter.latTop": 52.0,
"filter.lonLeft": 3.0,
"filter.lonRight": 4.5
}),
{
headers: { "Authorization": "Bearer YOUR_API_KEY" }
}
);
const data = await response.json();
console.log(`Found ${data.vessels.length} vessels in the area`);
Response Fields
Vessel Static Data (/vessel/{id}, /search/vessels)
| Field | Description | Example |
|---|---|---|
| mmsi | Maritime Mobile Service Identity (9-digit) | 477045900 |
| imo | IMO number | 9321483 |
| name | Vessel's registered name | EVER GIVEN |
| call_sign | Radio callsign | H3RC |
| vessel_type | Type of vessel | Container Ship |
| country | Flag state country name | Panama |
| length / breadth / draft | Vessel dimensions with corresponding unit fields | 400 |
| gross_tonnage | Gross tonnage of the vessel | 220940 |
| deadweight_tonnage | Deadweight tonnage capacity | 199629 |
| year_built | Year the vessel was built | 2018 |
| operating_status | Current operating status | Active |
| owner_name / manager_name | Vessel owner and manager | Evergreen Marine Corp |
Additional fields such as former_names, builder, class_society, home_port, engine_type, and kilowatt_power are also available. See the API Explorer for the complete schema.
Position Data (/vessel/{id}/position, /vessels/positions, /location/vessels/*)
| Field | Description | Example |
|---|---|---|
| mmsi | Maritime Mobile Service Identity (9-digit) | 477045900 |
| imo | IMO number (if available) | 9321483 |
| vessel_name | Vessel's registered name | EVER GIVEN |
| latitude | Geographic latitude in decimal degrees | 1.2644 |
| longitude | Geographic longitude in decimal degrees | 103.8215 |
| timestamp | UTC time when AIS message was transmitted | 2026-01-15T12:30:00Z |
| processed_timestamp | UTC timestamp when the position was processed by the system | 2026-01-15T12:30:05Z |
| cog | Course Over Ground in degrees (0-359.9), null when unavailable | 231.5 |
| sog | Speed Over Ground in knots (0-102.2), null when unavailable | 14.1 |
| heading | True heading in degrees (0-359), null when unavailable | 230 |
| nav_status | AIS navigational status (0=under way using engine, 1=at anchor, 5=moored, etc.), null when unavailable | 0 |
| location | GeoJSON point for geospatial queries | {"type":"Point","coordinates":[103.82,1.26]} |
| suspected_glitch | Whether the position may be unreliable due to GPS glitch or corrupted AIS | false |
Accuracy note: Position fields like latitude, longitude, cog, and sog are derived from onboard GPS and sensors and are generally reliable. However, nav_status is manually set by the crew and is frequently outdated or incorrect. heading depends on gyrocompass calibration and may be unavailable on smaller vessels. Fields return null when the data is not available in the AIS transmission.
Ready to Start Tracking?
Try these endpoints interactively in the API Explorer, complete with live examples and response previews.