AIS Vessel Tracking API - Finland & Baltic Ships, Port Calls
Pricing
from $0.50 / 1,000 vessel positions
AIS Vessel Tracking API - Finland & Baltic Ships, Port Calls
AIS vessel tracking: live AIS ship positions, vessel details (IMO, type, destination, ETA, size) and Finnish port calls from the official Fintraffic Digitraffic open API (CC BY 4.0). Northern Baltic Sea, Gulf of Finland and Bothnia. From $0.50 per 1,000 vessels.
Pricing
from $0.50 / 1,000 vessel positions
Rating
0.0
(0)
Developer
Christian Machon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Security
Limited permissionsShare
AIS vessel tracking API for Finnish and northern Baltic waters: live AIS ship positions with vessel details, plus port calls at Finnish ports, as clean JSON.
Get live AIS ship positions with ship details, plus port calls at Finnish ports, as clean JSON. The data comes from the official Fintraffic Digitraffic open marine API. It covers the northern Baltic Sea, the Gulf of Finland, the Gulf of Bothnia, the Archipelago Sea, the Åland Sea and Lake Saimaa.
- 🚢 Vessels mode: the latest AIS position of every vessel the Finnish coastal stations hear. Each record has lat/lon, speed, course, heading and navigational status. It is joined with name, IMO, call sign, ship type, destination, ETA, draught, length and beam.
- ⚓ Port calls mode: arrivals and departures that ships report to Portnet for Finnish ports (Helsinki, Kotka, HaminaKotka, Turku, Rauma, Oulu, Kokkola, Pori, Hanko, Naantali, Mariehamn and more). Each call includes ETA/ETD/ATA/ATD, berth, previous and next port, voyage, crew count, draught and ship agent.
- ✅ Official, licensed open data (CC BY 4.0, commercial use allowed). There is no scraping of tracking websites, no login and no proxies.
- ⚡ Fast and cheap. A typical run takes 1–3 seconds and makes 1–3 API requests. It costs $0.50 per 1,000 vessel positions and $1 per 1,000 port calls.
Use cases
- AI agents and chatbots: "Which tankers are moving in the Gulf of Finland right now?" or "When does the Finnsirius arrive in Helsinki?"
- Logistics and freight forwarding: watch ETAs of inbound vessels at Finnish ports and see berths and agents.
- Port and terminal operations: list expected, arrived and departed calls per port for the next days.
- Commodity and energy analysts: count tankers and bulk carriers in the area, and watch draught changes and destinations.
- Maritime security, insurance and research: find vessels near a point (an area circle sorted by distance) and check navigational status and position age.
How it works
- Choose mode:
vesselsorportCalls. - Add filters. Use MMSI, IMO or vessel name in both modes. In vessels mode you can also set an area circle, ship categories, max position age and moving only. In port calls mode you can set ports, an ETA window and a status.
- Set maxItems and run. You get one dataset item per vessel or per port call. A run summary with the attribution is saved as
OUTPUTin the key-value store.
The actor calls meri.digitraffic.fi politely. It identifies itself with the Digitraffic-User header, uses gzip, sends requests one at a time at least 1 s apart, and retries with backoff on errors. Digitraffic caches responses for about one minute, so polling more often than once a minute gives you nothing new.
Input examples
Vessels within 15 km of Helsinki, nearest first:
{ "mode": "vessels", "latitude": 60.15, "longitude": 24.95, "radiusKm": 15, "maxItems": 25 }
Moving tankers and cargo ships anywhere in the coverage area:
{ "mode": "vessels", "shipCategories": ["tanker", "cargo"], "movingOnly": true, "maxAgeMinutes": 30, "maxItems": 50 }
Track specific ships:
{ "mode": "vessels", "mmsi": ["230985490", "273121120"], "maxAgeMinutes": 1440 }
Port calls at Helsinki and Kotka in the next 3 days:
{ "mode": "portCalls", "ports": ["FIHEL", "FIKTK"], "from": "now", "to": "+3 days", "status": ["expected"], "maxItems": 50 }
| Field | Type | Default | Notes |
|---|---|---|---|
mode | string | vessels | vessels or portCalls |
mmsi | string[] | – | 9-digit MMSI numbers (both modes) |
imo | string[] | – | 7-digit IMO numbers (both modes) |
vesselName | string | – | Case-insensitive partial name match |
latitude, longitude | number | – | Centre of an area circle (vessels mode) |
radiusKm | number | 20 | Circle radius, up to 1000 km |
shipCategories | string[] | all | cargo, tanker, passenger, fishing, tug, pilot, search-and-rescue, law-enforcement, military, dredging, sailing, pleasure, high-speed-craft, towing, service, other, unknown |
maxAgeMinutes | integer | 60 | Only positions newer than this (max 1440) |
movingOnly | boolean | false | Skip vessels slower than 0.5 kn |
ports | string[] | all | UN/LOCODEs such as FIHEL, FIKTK, FIHMN, FITKU, FIRAU, FIOUL |
from, to | string | -1 day, +7 days | ETA window: ISO dates or relative values (now, +48 hours, 3 days ago) |
status | string[] | all | expected, arrived, departed |
maxItems | integer | 100 | Max records returned and charged (up to 5000) |
Output examples
A vessel record (vessels mode):
{"mmsi": 273121120, "imo": 9439383, "name": "ONIKS", "callSign": "UAFG4","shipType": 80, "shipTypeLabel": "Tanker", "shipCategory": "tanker","latitude": 60.105878, "longitude": 27.436067, "speedKnots": 9.2, "courseDegrees": 237.1, "headingDegrees": 239,"rateOfTurn": 0, "navStatus": 0, "navStatusLabel": "under way using engine", "positionAccuracyHigh": true,"positionTime": "2026-10-29T19:40:01.157Z", "positionAgeMinutes": 0,"destination": "FOR ORDER", "eta": "2026-12-03T08:00:00.000Z", "etaText": "12-03 08:00 UTC","draughtMeters": 15, "lengthMeters": 243, "beamMeters": 42,"metadataTime": "2026-10-29T19:35:34.141Z", "hasMetadata": true,"source": "Source: Fintraffic / digitraffic.fi, license CC 4.0 BY (https://creativecommons.org/licenses/by/4.0/). Data reformatted by Atlas Data."}
A port call record (port calls mode):
{"portCallId": 3408150, "port": "FIKTK", "portName": "Kotka", "portAreaCode": "MUSKU", "portAreaName": "MUSSALO (KUIVA)","berthCode": "A2", "berthName": "MUSA2", "status": "departed","eta": "2026-10-29T04:15:00.000Z", "etd": "2026-10-29T16:30:00.000Z", "ata": "2026-10-29T04:20:00.000Z", "atd": "2026-10-29T14:45:00.000Z","vesselName": "Prima Viking", "imo": 9195810, "mmsi": 230011000, "callSign": "OJOX", "flag": "FI","vesselTypeCode": 70, "vesselType": "dry cargo vessel","prevPort": "PLGDY", "prevPortName": "Gdynia", "nextPort": "NLAMS", "nextPortName": "Amsterdam", "voyage": "Gdynia-Kotka-Amsterdam","crewOnArrival": 9, "arrivalDraughtMeters": 3.8, "departureDraughtMeters": 5.6, "arrivalWithCargo": true,"agents": [{ "name": "Prima Logistics Oy Ab Ltd", "role": "ship agent", "direction": "Arrival or whole PortCall" }],"updatedAt": "2026-10-29T15:51:25.000Z","source": "Source: Fintraffic / digitraffic.fi, license CC 4.0 BY (https://creativecommons.org/licenses/by/4.0/). Data reformatted by Atlas Data."}
The tables are available as dataset views Vessel positions and Port calls. Export them as JSON, CSV or Excel, or read them through the API.
Pricing
Pay per event. You only pay for records you receive.
| Event | Price |
|---|---|
| Actor start | $0.00005 per run |
| Vessel position (vessels mode) | $0.0005 per vessel ($0.50 / 1,000) |
| Port call (port calls mode) | $0.001 per call ($1 / 1,000) |
For example, 25 vessels near a port cost $0.0126, and 20 port calls cost $0.0201. Set a maximum charge per run and the actor stops exactly at that limit.
Data quality notes
- Coverage is where Finnish AIS base stations receive signals: roughly latitude 57–66°N and longitude 17–35°E. This is not global AIS.
- Ship details come from AIS static messages heard in the last 24 hours. A few vessels have none (
hasMetadata: false). In that case name, type and size are null. - AIS ETA has no year.
etaTextis the raw value andetais the nearest plausible date. Destination and ETA are typed in by the crew and can be stale. - Port call
statusis derived from the actual times (ATA/ATD). Portnet sometimes carries over old actual times from previous calls. Times more than 30 days away from the planned ETA/ETD are dropped and listed indataNotes. - Ship masters' names are never output.
FAQ
Is this legal to use commercially? Yes. Fintraffic publishes Digitraffic data under Creative Commons Attribution 4.0, which allows commercial use and redistribution with attribution. Every record carries the required attribution in the source field. If you republish the data, keep the credit: "Source: Fintraffic / digitraffic.fi, license CC 4.0 BY". See the Digitraffic terms of service. Atlas Data reformats the data (it renames fields, decodes codes, derives status, size and distance). The data is provided as is, without warranty, and is not for navigation.
Is this MarineTraffic / VesselFinder data? No. It comes only from the Finnish authority's open API.
How fresh is it? Positions are near real time, usually under 1 minute old. The API caches responses for about 1 minute.
Can I track ships worldwide? No. Coverage is the Finnish sea area and nearby parts of the Baltic Sea.
Does it work in AI agents and MCP? Yes. The input is small and flat, the output is consistent JSON, and runs finish in seconds. It is well suited to the run-sync API and pay-per-call gateways.