Vesselfinder Live Map Scraper avatar

Vesselfinder Live Map Scraper

Pricing

from $1.56 / 1,000 vessel positions

Go to Apify Store
Vesselfinder Live Map Scraper

Vesselfinder Live Map Scraper

Scrape live vessel (AIS) positions from VesselFinder by area (lat/lon/radius), with optional full detail: speed, course, destination, ETA, IMO, photo. No login, no browser.

Pricing

from $1.56 / 1,000 vessel positions

Rating

0.0

(0)

Developer

Romy

Romy

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 days ago

Last modified

Share

Scrape live vessel (AIS) positions from VesselFinder near any point on Earth, with optional full detail per vessel: speed, course, destination, ETA, country, IMO and a photo. Wraps VesselFinder's own public "Embed Map" API -- the same one embedded on thousands of third-party sites and apps. No login, no browser, no proxy needed.

Why

VesselFinder's embed-map widget (static.vesselfinder.net/web/vfem5/...) calls two genuinely public, unauthenticated endpoints -- verified live 2026-09-28 with plain curl from a home IP, no special headers, no cookies, no referer check required:

  • GET /api/pub/mp2?bbox=...&zoom=... -- bulk vessel positions in a bounding box, as a compact binary feed. The record layout was reverse-engineered from VesselFinder's own embed-map JavaScript and cross-checked against a real vessel's position/course/speed as shown in a live third-party tracking app's UI at the same moment -- every field matched exactly.
  • GET /api/embed/v5/click/{mmsi} -- one vessel's snapshot (name, IMO, country, speed, course, destination, ETA, photo) as clean JSON.

What the bulk position feed does NOT include: course, speed and a timestamp are only present for one "selected" vessel per call, not every vessel in the area -- a real upstream limitation, not a gap in this actor's parsing. Enable scrapeDetail to fetch those fields for every result via the second endpoint.

Coordinates: the bounding box VesselFinder expects is

lonMin,latMin, lonMax,latMax
in WGS84 degrees multiplied by 600,000 and floored to an integer -- this actor builds it for you from a plain lat/lon/radiusKm input, so you never need to construct it by hand.

Input

FieldTypeDefaultDescription
latnumber--Center latitude to search around. Required.
lonnumber--Center longitude to search around. Required.
radiusKminteger50Half-width of the search box around lat/lon, in km.
zoominteger8Map zoom level, 3-12 (capped -- see Known limitations).
maxVesselsinteger200Stop after this many unique vessels, nearest first.
scrapeDetailbooleanfalseAlso fetch speed/course/destination/ETA/IMO/photo per vessel.

Output

One dataset row per vessel, nearest to lat/lon first:

mmsi, name, lat, lon, typeCode (an undocumented upstream type/status byte -- exposed as-is, not guessed), distanceKm (from the query center).

With scrapeDetail: imo, countryCode, country, type (a real human-readable string, e.g. "Crude Oil Tanker"), speedKn, courseDeg, destination, etaTimestamp, etaIso, photoUrl.

Pricing

Pay-Per-Event, standard tiered ladder (FREE/BRONZE/SILVER/GOLD/PLATINUM/DIAMOND = 100/92/85/78/72/68%):

EventFREE tier
vessel-position-scraped (per vessel row)$0.002
vessel-detail-scraped (per vessel whose detail was fetched)$0.008

Known limitations

  • zoom is capped at 12. VesselFinder's binary format switches to a richer per-vessel "hull shape" record layout above some client-side zoom threshold, meant for pixel-space map rendering -- not reverse-engineered here. Every zoom this actor was tested against (8) stayed in the simple position-only layout this parser expects; a lower zoom also naturally covers a wider area with fewer, less cluttered results.
  • typeCode is a raw, undocumented byte from the upstream feed (vessel type and/or navigational status, bit-packed with other flags this actor does not decode). It is exposed as-is rather than guessed into a human-readable label that might be wrong. scrapeDetail's type field (e.g. "Crude Oil Tanker", "Sailing vessel") is a real string from VesselFinder and safe to treat as accurate.
  • No text search. This actor takes a location, not a vessel name/IMO/ MMSI. VesselFinder's own app has a working text search, but it uses a different, paid backend (api.vesselapi.com) that requires a key this actor does not have.