SHIP & PORT INTELLIGENCE
Maritime Data API
One API for all maritime data. Vessel tracking, port events, emissions, safety records, classification data, and navigation infrastructure. 682,000+ vessels and 59,000+ ports across 230 countries.
682K+
Vessels
59K+
Ports
230
Countries
9
Data Categories
3
Official SDKs
All Maritime Data in One API
Instead of stitching together multiple data providers, VesselAPI gives you a single REST API covering the full maritime data landscape.
Vessel Tracking
Real-time AIS positions, speed, heading, and crew-reported ETAs. Query by vessel ID or geographic area.
Port Events
Vessel arrivals and departures detected every minute. Search by port, vessel, or time range across 59,000+ ports.
Vessel Emissions
EU MRV-verified CO2 emissions, fuel consumption by type, and energy efficiency metrics for 16,000+ vessels.
Vessel Enrichment
Classification records, ownership and management details, technical specifications, and certificate status.
Safety & Compliance
Marine casualty records, port state control inspections, deficiency reports, and detention history.
Ports Database
59,000+ ports worldwide with UN/LOCODE identifiers, coordinates, facilities, depths, and capabilities.
NAVTEX Messages
Maritime safety broadcasts including weather warnings, navigational hazards, and search and rescue operations.
Navigation Infrastructure
Lighthouses, radio beacons, DGPS stations, and mobile offshore drilling units with positions and characteristics.
Developer Tools
Official SDKs for TypeScript, Python, and Go. MCP server for AI assistant integration with Claude, Cursor, and more.
Why Use a Unified Maritime Data API
One API Key, All Data
Stop managing multiple maritime data vendor contracts and integrations. One API key gives you access to vessel positions, port data, emissions, safety records, and more.
Consistent Data Model
All endpoints follow the same REST conventions, authentication, pagination, and error handling. Learn one pattern, use it everywhere.
Cross-Reference Everything
Link a vessel's current position to its emissions record, port history, classification status, and inspection results using the same MMSI or IMO number.
Built for Developers
RESTful JSON API with OpenAPI spec, interactive API reference, official SDKs in 3 languages, and an MCP server for AI assistant integration.
Get Started in Minutes
Sign up, get your API key, and start querying maritime data with simple HTTP requests.
# Search for a vessel by name
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.vesselapi.com/v1/search/vessels?filter.name=EVER%20GIVEN"
# Get its current position
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.vesselapi.com/v1/vessel/353136000/position"
# Check its port history
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.vesselapi.com/v1/portevents/vessel/353136000"
# Look up emissions data
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.vesselapi.com/v1/vessel/9811000/emissions?filter.idType=imo"
Prefer SDKs? Use our official TypeScript, Python, or Go SDKs for auto-pagination, typed responses, and built-in retry logic.
Use SDKs or Ask Your AI Assistant
Integrate all maritime data categories with official SDKs, or let your AI assistant explore ship and port data for you.
Claude Code (MCP Server)
With the VesselAPI MCP server installed, ask your AI assistant in natural language:
# In your Claude Code terminal:
> Give me a full profile of the EVER GIVEN — position, port history,
> emissions, and any safety inspections
# Claude chains multiple MCP tools automatically:
# 1. search_vessels → finds MMSI 353136000 / IMO 9811000
# 2. get_vessel_position → current location and speed
# 3. get_port_events_by_vessel → recent port calls
# 4. get_vessel_emissions → CO2 and fuel data
# 5. get_vessel_inspections → PSC inspection history
#
# Then synthesizes a comprehensive vessel report.
> What ships arrived at Rotterdam (NLRTM) in the last 24 hours?
# Claude calls get_port_events with unlocode NLRTM and summarizes
# all arrivals with vessel names, types, and timestamps.
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" });
// Build a complete vessel profile from multiple data sources
const mmsi = 353136000;
const [position, eta, emissions] = await Promise.all([
client.vessels.position(mmsi, "mmsi"),
client.vessels.eta(mmsi, "mmsi"),
client.emissions.byVessel(9811000, "imo"),
]);
console.log(`${position.vesselName} @ ${position.latitude}, ${position.longitude}`);
console.log(`ETA: ${eta.destination} at ${eta.eta}`);
console.log(`CO2: ${emissions.data[0]?.co2EmissionsTotal}t`);
// Get port events at Rotterdam
const events = await client.portEvents.byPort("NLRTM");
for (const event of events.data) {
console.log(`${event.vesselName} ${event.event} at ${event.timestamp}`);
}
Python
from vesselapi import VesselClient
client = VesselClient(api_key="YOUR_API_KEY")
# Cross-reference vessel data across categories
vessel = client.vessels.get(353136000, "mmsi")
position = client.vessels.position(353136000, "mmsi")
port_history = client.port_events.by_vessel(353136000, "mmsi")
print(f"{vessel.name} ({vessel.vessel_type})")
print(f"Position: {position.latitude}, {position.longitude}")
print(f"Recent ports: {[e.port_name for e in port_history.data[:5]]}")
# Search ports by country
for port in client.search.ports(country="NL", type="Seaport"):
print(f"{port.name} ({port.unlo_code})")
Frequently Asked Questions
What maritime data does the API cover?
VesselAPI provides 9 categories of maritime data: real-time vessel tracking (AIS positions), port events, vessel emissions (EU MRV), vessel enrichment (classification, ownership), safety and compliance (inspections, casualties), ports database, NAVTEX messages, and navigation infrastructure.
How many vessels and ports are covered?
The API covers 682,000+ vessels across 230 flag states and 59,000+ ports worldwide. Over 43,000 vessels report positions per hour, and 76,000+ port events are detected daily.
Is there a free tier?
Yes. VesselAPI offers a free tier that gives you access to all maritime data endpoints. Sign up to get your API key and start making requests immediately. No credit card required.
What format does the API return?
All endpoints return JSON. Authentication is via Bearer token. Pagination uses cursor-based tokens. The full OpenAPI/Swagger spec is available for code generation.
Are there SDKs available?
Yes. Official SDKs are available for TypeScript/Node.js, Python, and Go. All SDKs include auto-pagination, typed errors, and automatic retry with exponential backoff. An MCP server is also available for AI assistant integration.
Can I use this as a MarineTraffic or VesselFinder API alternative?
VesselAPI serves similar use cases — real-time vessel tracking, port events, and vessel data enrichment — with a developer-focused REST API, transparent pricing, and a free tier to get started.
Start Building with Maritime Data
Get your free API key and access vessel tracking, port events, emissions, and more in minutes.