AISbox

Live AIS vessel position data via API. Pay-as-you-go, no subscription required.

AISbox

How It Works

AISbox offers three ways to get vessel position data. Box and Follow create persistent watches that automatically poll for new data every 10 minutes. Track is a one-shot request with no ongoing billing.

Box Watch

Monitor all vessels in a geographic bounding box. When you start a box watch, you get the current positions of every vessel in the area. The watch then polls automatically every 10 minutes, capturing new position data as ships move through the box. You can optionally list up to 10 MMSIs to receive data for those vessels only — you're then charged only for updates in which they report new positions.

Pay-Per-Use

Initialization: $5.00 — returns the first snapshot immediately.

Polling: $0.20 per update — charged every 10 minutes, only when new positions are found. No change in data = no charge.

Duration Plans

Unlimited updates for a fixed period: $25/day, $150/week, $500/month (28 days). Purchase multiples at the same rate (e.g. 3 days = $75). Extend any time.

Tip: Start with pay-per-use to confirm your bounding box captures the vessels you need, then upgrade to a duration plan.

Vessel Watch

Follow a single vessel by its MMSI number. Starting a follow creates a watch on that vessel, returning its current position. Like box, the watch then polls every 10 minutes for updated positions as the vessel moves.

Pay-Per-Use

Initialization: $5.00 — returns the vessel's current position.

Polling: $0.20 per update — charged every 10 minutes, only when the vessel reports a new position.

Duration Plans

Unlimited updates for a fixed period: $25/day, $150/week, $500/month (28 days). Purchase multiples at the same rate (e.g. 3 days = $75). Extend any time.

Tip: Start with pay-per-use to confirm the vessel is available and reporting positions, then upgrade to a duration plan.

Vessel Recent Track

Fetch the past 24 hours of position history for a vessel by MMSI. This is a single request — no watch is created, no ongoing billing. You get the data and you're done.

Pricing

Cost: $5.00 per request.

Box and follow watches run until you explicitly stop them (unbox / unfollow) or your balance runs out. For longer monitoring, purchase a duration plan via buy_plan for unlimited updates at a fixed price. When a plan expires, the watch falls back to pay-per-use billing. Check your active watches, plans, and balance at any time with status.

Sample Responses

Box Watch

{
  "watch_id": 1,
  "data": [
    {
      "vessel_id": "3f9c2a71d04be5a8",
      "mmsi": "538010222",
      "vessel_name": "AURORA SPIRIT",
      "lat": 27.9506,
      "lon": -82.4572,
      "speed": 0.1,
      "course": 113,
      "heading": 227,
      "timestamp": "2026-05-16T10:00:00Z"
    },
    {
      "vessel_id": "b81e07c45fa2d390",
      "mmsi": null,
      "vessel_name": "GULF RUNNER",
      "lat": 27.9412,
      "lon": -82.4631,
      "speed": 8.2,
      "course": 44,
      "heading": 45,
      "timestamp": "2026-05-16T09:58:00Z"
    }
  ],
  "balance_cents": 4500,
  "next_update_at": "2026-05-16T10:10:00Z"
}

vessel_id identifies a vessel across updates. mmsi is null until it is known — look it up with vessel_mmsi. heading 511 means not available.

Follow Watch

{
  "watch_id": 2,
  "data": {
    "vessel_id": "3f9c2a71d04be5a8",
    "mmsi": "538010222",
    "vessel_name": "AURORA SPIRIT",
    "lat": 27.9506,
    "lon": -82.4572,
    "speed": 0.1,
    "course": 113,
    "heading": 227,
    "timestamp": "2026-05-16T10:00:00Z"
  },
  "balance_cents": 4500,
  "next_update_at": "2026-05-16T10:10:00Z"
}

Track (24hr History)

{
  "data": [
    [27.9506, -82.4572, 1778929200, 12.5, 227],
    [27.9612, -82.4481, 1778925600, 11.8, 225],
    [27.9718, -82.4390, 1778922000, 12.1, 224]
  ],
  "balance_cents": 4500
}

Track arrays are: [lat, lon, unix_timestamp, speed, heading]

Get an API Key

Your API key is shown only once. You'll see it for 5 minutes after payment. We store only a hash of it, so we can't show it again. Copy it somewhere safe before you leave that page. If you do lose it, email [email protected] from the address you paid with.
Already have a key? Use the same email to add funds to your existing balance. You won't get a new key.

By paying you agree to the Terms of Service and Refund Policy.

Bounding Box Tool

Draw a rectangle on the map to get bbox coordinates for the Box endpoint.

Draw a rectangle on the map above.

API Reference

All requests are POST /api with a JSON body containing your key and a type.

Note: Requests that initialize a watch (box, follow) or fetch historical data (track) usually respond within a minute, and never take more than 90 seconds. Set your HTTP client timeout to at least 100 seconds. If no data arrives in time, the request fails and the charge is refunded automatically. Don't retry while a request is still pending: each retry starts a new watch and is charged separately. If your client disconnects, check status to see whether the watch started.

Box

Start a watch

curl -X POST https://aisbox.net/api -H "Content-Type: application/json" \
  -d '{"key":"ak_...","type":"box","bbox":[27.5,-83.0,28.0,-82.5]}'

Returns initial vessel positions and a watch_id you'll use for all subsequent calls. Optionally limit it to up to 10 vessels by MMSI. MMSIs we haven't seen before can add up to a minute to the start; an unknown MMSI fails the request and refunds the charge:

curl -X POST https://aisbox.net/api -H "Content-Type: application/json" \
  -d '{"key":"ak_...","type":"box","bbox":[27.5,-83.0,28.0,-82.5],
       "mmsi_filter":["538010222","367596000"]}'

Get latest data

curl -X POST https://aisbox.net/api -H "Content-Type: application/json" \
  -d '{"key":"ak_...","type":"box_data","watch_id":1}'

Returns the most recent snapshot. New data appears every ~10 minutes. Up to 6 requests per 10 minutes per watch.

Look up a vessel's MMSI

curl -X POST https://aisbox.net/api -H "Content-Type: application/json" \
  -d '{"key":"ak_...","type":"vessel_mmsi","watch_id":1,"vessel_id":"b81e07c45fa2d390"}'

Returns {"vessel_id": "...", "mmsi": "367596000"} for a vessel the watch has seen. Free. An MMSI we already know answers at once; otherwise the lookup can take up to a minute, and you can make 5 of those per 10 minutes. Once found, the vessel carries its MMSI in all later data.

Stop the watch

curl -X POST https://aisbox.net/api -H "Content-Type: application/json" \
  -d '{"key":"ak_...","type":"unbox","watch_id":1}'

Follow

Start a watch

curl -X POST https://aisbox.net/api -H "Content-Type: application/json" \
  -d '{"key":"ak_...","type":"follow","mmsi":"538010222"}'

Returns the vessel's current position and a watch_id.

Get latest data

curl -X POST https://aisbox.net/api -H "Content-Type: application/json" \
  -d '{"key":"ak_...","type":"follow_data","watch_id":1}'

Returns the most recent position. Up to 6 requests per 10 minutes per watch.

Stop the watch

curl -X POST https://aisbox.net/api -H "Content-Type: application/json" \
  -d '{"key":"ak_...","type":"unfollow","watch_id":1}'

Track

curl -X POST https://aisbox.net/api -H "Content-Type: application/json" \
  -d '{"key":"ak_...","type":"track","mmsi":"538010222"}'

Returns 24 hours of position history. Single request, no watch created.


Duration Plans

Purchase a plan

curl -X POST https://aisbox.net/api -H "Content-Type: application/json" \
  -d '{"key":"ak_...","type":"buy_plan","watch_id":1,"plan_type":"day","quantity":3}'

Deducts from your balance and activates immediately.
plan_type: day ($25), week ($150), or month ($500, 28 days). quantity: number of units (default 1).
If the subscription already has an active plan, the new time is added to the existing expiry.


Account

Check status

curl -X POST https://aisbox.net/api -H "Content-Type: application/json" \
  -d '{"key":"ak_...","type":"status"}'

Returns your balance, email, and all watches (active and stopped).

Rotate API key

curl -X POST https://aisbox.net/api -H "Content-Type: application/json" \
  -d '{"key":"ak_...","type":"rotate_key","email":"[email protected]"}'

Generates a new API key and permanently invalidates the old one. Requires your email as confirmation.

Refund

curl -X POST https://aisbox.net/api -H "Content-Type: application/json" \
  -d '{"key":"ak_...","type":"refund"}'

Stops all active watches and refunds your remaining balance to the original payment method.

API Console

Build and send requests. Charged operations deduct from your balance.

Response