AUTOMATIC IDENTIFICATION SYSTEM
AIS Data API
Access processed AIS data through a simple REST API. Real-time vessel positions, navigation status, speed, heading, and ship identifiers from terrestrial AIS receivers covering 682,000+ vessels.
682K+
Vessels in Registry
900K+
Position Reports/Hour
230
Flag States
REST
JSON API
What is AIS Data?
The Automatic Identification System (AIS) is a maritime tracking system required on all commercial vessels. AIS transponders continuously broadcast vessel identity, position, speed, and navigation status over VHF radio. VesselAPI collects, processes, and enriches this raw AIS data into clean, queryable REST endpoints.
No raw AIS decoding needed. VesselAPI handles AIS message parsing, deduplication, position validation, and vessel identity resolution. You query clean JSON — not raw NMEA sentences.
AIS Data Fields Available
Position Data
Latitude, longitude, speed over ground (SOG), course over ground (COG), true heading, and navigational status from AIS position reports.
Vessel Identifiers
MMSI (9-digit Maritime Mobile Service Identity), IMO number (7-digit permanent identifier), vessel name, and radio callsign.
Voyage Data
Crew-reported destination, estimated time of arrival (ETA), and current draught from AIS voyage-related messages.
Static Vessel Data
Vessel type, dimensions (length, breadth, draft), gross tonnage, deadweight tonnage, year built, flag state, and engine specifications.
Navigation Status
AIS navigation status codes including "under way using engine," "at anchor," "moored," "restricted maneuverability," and more.
Spatial Queries
Query AIS data by geographic area using bounding box or radius search. H3-indexed for sub-second spatial lookups.
What Developers Build with AIS Data
Vessel Tracking Dashboards
Build interactive maps showing real-time ship positions. Use area queries to display all vessels in a port, channel, or shipping lane.
Trade Intelligence Platforms
Combine AIS position data with port events and vessel details to analyze trade flows, commodity movements, and shipping patterns.
Maritime Risk Assessment
Monitor vessel movements in sanctioned waters. Detect unusual behavior patterns like AIS gaps, dark voyages, or unexpected port calls.
Logistics & ETA Prediction
Feed AIS position and speed data into arrival prediction models. Improve supply chain visibility with real-time ship location data.
Query AIS Data in Seconds
Get vessel positions, identifiers, and navigation status with a single API call.
# Get all vessels in the Port of Rotterdam area
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.vesselapi.com/v1/location/vessels/bounding-box?\
filter.latBottom=51.85&filter.latTop=52.05&\
filter.lonLeft=3.95&filter.lonRight=4.20"
{
"data": [
{
"mmsi": 244780362,
"imo": 9280619,
"vesselName": "STENA HOLLANDICA",
"latitude": 51.9876,
"longitude": 4.0543,
"sog": 0.1,
"cog": 180.2,
"heading": 178,
"navStatus": "Moored",
"timestamp": "2026-03-22T14:28:05Z"
}
],
"pagination": {
"nextToken": "eyJsYXN0X2lk..."
}
}
SDKs available: Official SDKs for TypeScript, Python, and Go handle pagination, retries, and typed responses automatically.
Use SDKs or Ask Your AI Assistant
Integrate AIS data with official SDKs or let your AI assistant query vessel positions and details for you.
Claude Code (MCP Server)
With the VesselAPI MCP server installed, ask your AI assistant in natural language:
# In your Claude Code terminal:
> Find all vessels currently in the English Channel
# Claude calls get_vessels_in_area with a bounding box and responds:
# "Found 142 vessels in the English Channel area. Here are the largest:
# - EVER GIVEN (container ship) at 51.02°N, 1.35°E, 18.2 knots
# - MARVEL (bulk carrier) at 50.95°N, 1.12°E, 12.1 knots
# ..."
> What type of vessel is MMSI 244780362 and where is it?
# Claude calls get_vessel and get_vessel_position:
# "STENA HOLLANDICA (MMSI 244780362) is a Passenger/Ro-Ro Cargo Ship,
# flag Netherlands, built 2010. Currently moored at 51.99°N, 4.05°E
# near Hook of Holland."
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" });
// Search AIS data by vessel name
for await (const vessel of client.search.vessels({ name: "EVER GIVEN" })) {
console.log(`${vessel.name} | MMSI: ${vessel.mmsi} | IMO: ${vessel.imo}`);
}
// Get all vessels in a bounding box (English Channel)
const vessels = await client.location.vesselsByBoundingBox({
latBottom: 50.5, latTop: 51.2,
lonLeft: -1.5, lonRight: 2.0,
});
console.log(`Found ${vessels.data.length} vessels in the area`);
Python
from vesselapi import VesselClient
client = VesselClient(api_key="YOUR_API_KEY")
# Get vessel static data (AIS message type 5)
vessel = client.vessels.get(211331640, "mmsi")
print(f"{vessel.name} | Type: {vessel.vessel_type} | Flag: {vessel.country}")
# Find vessels in a radius (50km around Singapore Strait)
nearby = client.location.vessels_by_radius(
latitude=1.27, longitude=103.75, radius=50000
)
for v in nearby.data:
print(f"{v.vessel_name}: {v.sog} knots, {v.nav_status}")
Frequently Asked Questions
Is there a free AIS API?
Yes. VesselAPI offers a free tier with access to all AIS data endpoints including vessel positions, area queries, ETAs, and vessel search. Sign up to get your API key instantly.
Do I need to decode raw AIS messages?
No. VesselAPI processes raw AIS data (NMEA sentences) into clean, structured JSON. You get parsed position reports, vessel details, and navigation data without handling AIS message types or NMEA decoding.
What AIS message types are supported?
The API ingests and processes all common AIS message types including position reports (types 1-3, 18-19), static data (type 5, 24), and voyage data. The data is normalized into consistent JSON fields.
What is the difference between MMSI and IMO?
MMSI is a 9-digit number assigned to the vessel's radio equipment and can change between owners. IMO is a permanent 7-digit identifier tied to the hull. The API supports both and resolves them automatically.
Does the AIS API include historical data?
The API provides access to recent position history. Batch position queries support time range filtering. Contact us if you need extended historical AIS data.
How does the AIS API handle coverage gaps?
AIS data is collected from terrestrial receivers, so coverage is strongest in coastal waters and port areas. Open-ocean coverage from satellite AIS is not currently included. Each position report includes a timestamp so you can assess data freshness.
Start Using AIS Data Today
Get your free API key and query live AIS vessel data in minutes. No credit card required.