---
title: "Real-time positions for up to 100 vessels"
method: GET
path: "/api/v0/vessel_bulk"
tags: ["Live Tracking"]
---

# Real-time positions for up to 100 vessels

`GET /api/v0/vessel_bulk`

## Request

- Base URL: `https://api.datalastic.com`
- URL: `https://api.datalastic.com/api/v0/vessel_bulk`
- Auth: one of:
  - API key in header `x-api-key`
  - API key in query parameter `api-key`
- TypeScript: <https://skmtc.dev/datalastic/apis/datalastic-maritime-api/docs/api/v0/vessel_bulk/get.ts> (a function with typed inputs; its response is checked against the schema)

Retrieve tracking data for up to 100 vessels in one call by repeating
the `mmsi`, `imo`, or `uuid` parameter. Returns the same fields as
`/vessel`. Credits are only deducted for vessels successfully retrieved.

In rare cases a single identifier matches more than one vessel, for
example a placeholder MMSI shared by several ships. This endpoint
returns every match and charges per vessel returned. Use `/vessel` when
you need exactly one vessel per identifier.

**Credit cost:** 1 per vessel returned, capped at 100 credits per request.

## Query parameters

- `mmsi` string[]
- `imo` string[]
- `uuid` string[]

## Response `200`

Results for all queried vessels.

- object
  - `data` VesselLive[]
    - `uuid` string, uuid
    - `name` string
    - `mmsi` string
    - `imo` string
    - `eni` string, nullable: European Number of Identification (inland waterways).
    - `country_iso` string
    - `country_name` string
    - `type` string
    - `type_specific` string
    - `lat` number, float
    - `lon` number, float
    - `speed` number, float: Speed over ground in knots.
    - `course` number, float: Course over ground in degrees (0-360).
    - `heading` number, float: True heading in degrees (0-360).
    - `navigational_status` string
    - `destination` string, nullable
    - `last_position_epoch` integer
    - `last_position_UTC` string, date-time
    - `area` string, nullable
  - `meta` Meta
    - `duration` number, float: Server-side query time in seconds.
    - `endpoint` string
    - `success` boolean
    - `next` string: Pagination token. Present on paginated endpoints (`/vessel_find`) only when more results exist. Pass it back as the `next` query parameter to fetch the following page.

## Other responses

- `400`: Missing required parameter or invalid parameter value.
- `401`: Invalid or expired API key.
- `402`: API key is valid but the credit balance is exhausted or the subscription has expired. Purchase more credits to continue.
- `404`: Requested vessel, port, or resource was not found. No credits deducted.
- `429`: More than 600 API calls in a single minute. The response carries a `Retry-After` header with the wait in seconds. Use it for backoff.
- `500`: Server-side error. Retry the request.

## Changes

- **2026-09-08** `a29cf323d1c3`: 1 warning, 10 info
  - deleted the `query` request parameter `api-key`
  - added the new optional `query` request parameter `uuid`
  - for the `query` request parameter `imo`, the type was generalized from `string` to `array`
  - for the `query` request parameter `mmsi`, the type was generalized from `string` to `array`
  - …7 more

[Operation history](https://skmtc.dev/datalastic/apis/datalastic-maritime-api/changes/api/v0/vessel_bulk/get.md)

---

[API](https://skmtc.dev/datalastic/apis/datalastic-maritime-api.md) - [All operations](https://skmtc.dev/datalastic/apis/datalastic-maritime-api/llms.txt) - [OpenAPI document](https://skmtc.dev/datalastic/apis/datalastic-maritime-api/revisions/2097cdbffcb4?raw)
