Datalastic Historical API
Past AIS positions for vessels and zones.
Past AIS positions for vessels and zones.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/datalastic-historical-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Datalastic Maritime Historical API
description: Datalastic provides real-time AIS vessel tracking, historical ship movements, vessel specifications, and global port data over REST. A database of 750,000+ ships is queryable by MMSI, IMO, or Datalastic UUID. All endpoints are served from https://api.datalastic.com/api/v0 and authenticate with an api-key query parameter tied to a subscription plan. Usage is metered in monthly database credits - most endpoints deduct one credit per vessel or port returned, and historical endpoints deduct one credit per vessel per day of data. All plans share a limit of 600 API calls per minute.
version: v0
contact:
name: Datalastic
url: https://datalastic.com
servers:
- url: https://api.datalastic.com/api/v0
description: Datalastic production API
security:
- apiKey: []
tags:
- name: Historical
description: Past AIS positions for vessels and zones.
paths:
/inradius_history:
get:
operationId: getInRadiusHistory
tags:
- Historical
summary: Historical vessel traffic within a radius
description: Replays past vessel traffic for a zone. Cost is calculated as the number of days multiplied by the number of vessels per day (maximum 500 vessels per day).
parameters:
- name: lat
in: query
description: Latitude of the zone center point. Requires lon.
required: false
schema:
type: number
- name: lon
in: query
description: Longitude of the zone center point. Requires lat.
required: false
schema:
type: number
- name: port_uuid
in: query
description: Port UUID to use as the zone center point.
required: false
schema:
type: string
- name: port_unlocode
in: query
description: Port UN/LOCODE to use as the zone center point.
required: false
schema:
type: string
- name: radius
in: query
description: Search radius in nautical miles. Maximum 50 NM.
required: true
schema:
type: number
maximum: 50
- $ref: '#/components/parameters/Days'
- $ref: '#/components/parameters/From'
- $ref: '#/components/parameters/To'
responses:
'200':
description: Historical vessel traffic for the requested zone and period.
content:
application/json:
schema:
$ref: '#/components/schemas/VesselListResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/vessel_history:
get:
operationId: getVesselHistory
tags:
- Historical
summary: Historical vessel track
description: Returns past AIS positions for a vessel identified by uuid, mmsi, or imo, filtered by a days lookback or an explicit from/to date range in YYYY-MM-DD format. A maximum of 31 days may be requested from the from date. Each day of data per vessel deducts 1 credit.
parameters:
- $ref: '#/components/parameters/Uuid'
- $ref: '#/components/parameters/Mmsi'
- $ref: '#/components/parameters/Imo'
- $ref: '#/components/parameters/Days'
- $ref: '#/components/parameters/From'
- $ref: '#/components/parameters/To'
responses:
'200':
description: Historical track positions for the vessel.
content:
application/json:
schema:
$ref: '#/components/schemas/VesselHistoryResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
components:
parameters:
Imo:
name: imo
in: query
description: Vessel International Maritime Organization number (7-digit).
required: false
schema:
type: string
To:
name: to
in: query
description: End date for the data in YYYY-MM-DD format.
required: false
schema:
type: string
format: date
Mmsi:
name: mmsi
in: query
description: Vessel Maritime Mobile Service Identity (9-digit number).
required: false
schema:
type: string
From:
name: from
in: query
description: Start date for the data in YYYY-MM-DD format. A maximum of 31 days may be requested from this date.
required: false
schema:
type: string
format: date
Days:
name: days
in: query
description: Number of days back from today to return data for (for example days=5 returns the last 5 days).
required: false
schema:
type: integer
Uuid:
name: uuid
in: query
description: Datalastic vessel UUID.
required: false
schema:
type: string
schemas:
VesselHistoryResponse:
type: object
properties:
data:
type: object
properties:
uuid:
type: string
description: Datalastic vessel UUID.
name:
type: string
description: Vessel name.
mmsi:
type: string
description: Maritime Mobile Service Identity.
imo:
type: string
description: International Maritime Organization number.
positions:
type: array
description: Historical track positions.
items:
type: object
properties:
lat:
type: number
lon:
type: number
speed:
type: number
course:
type: number
heading:
type: number
destination:
type: string
last_position_epoch:
type: integer
last_position_UTC:
type: string
meta:
$ref: '#/components/schemas/Meta'
VesselPosition:
type: object
description: Real-time AIS position data for a vessel.
properties:
uuid:
type: string
description: Datalastic vessel UUID.
name:
type: string
description: Vessel name.
mmsi:
type: string
description: Maritime Mobile Service Identity.
imo:
type: string
description: International Maritime Organization number.
country_iso:
type: string
description: Flag country ISO code.
type:
type: string
description: Vessel type.
type_specific:
type: string
description: Vessel subtype.
lat:
type: number
description: Latitude of the last reported position.
lon:
type: number
description: Longitude of the last reported position.
speed:
type: number
description: Speed over ground in knots.
course:
type: number
description: Course over ground in degrees.
heading:
type: number
description: True heading in degrees.
navigation_status:
type: string
description: AIS navigational status.
destination:
type: string
description: Reported destination.
last_position_epoch:
type: integer
description: Unix timestamp of the last position report.
last_position_UTC:
type: string
description: UTC timestamp of the last position report.
VesselListResponse:
type: object
properties:
data:
type: object
properties:
vessels:
type: array
items:
$ref: '#/components/schemas/VesselPosition'
total:
type: integer
description: Number of vessels returned.
meta:
$ref: '#/components/schemas/Meta'
Meta:
type: object
description: Response metadata.
properties:
duration:
type: number
description: Server processing time in seconds.
endpoint:
type: string
description: The endpoint that served the request.
success:
type: boolean
description: Whether the request succeeded.
Error:
type: object
properties:
meta:
type: object
properties:
success:
type: boolean
error:
type: string
description: Error message, for example Too Many Requests.
responses:
TooManyRequests:
description: Rate limit exceeded. All plans share a limit of 600 API calls per minute.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Missing or invalid api-key.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: No vessel or resource matched the supplied identifier.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
apiKey:
type: apiKey
in: query
name: api-key
description: Personal API key issued with a Datalastic subscription. Passed as the api-key query parameter on every request.