Vesselfinder Live Map Scraper
Pricing
from $1.56 / 1,000 vessel positions
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
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,latMaxlat/lon/radiusKm
input, so you never need to construct it by hand.
Input
| Field | Type | Default | Description |
|---|---|---|---|
lat | number | -- | Center latitude to search around. Required. |
lon | number | -- | Center longitude to search around. Required. |
radiusKm | integer | 50 | Half-width of the search box around lat/lon, in km. |
zoom | integer | 8 | Map zoom level, 3-12 (capped -- see Known limitations). |
maxVessels | integer | 200 | Stop after this many unique vessels, nearest first. |
scrapeDetail | boolean | false | Also 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%):
| Event | FREE tier |
|---|---|
vessel-position-scraped (per vessel row) | $0.002 |
vessel-detail-scraped (per vessel whose detail was fetched) | $0.008 |
Known limitations
zoomis 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.typeCodeis 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'stypefield (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.