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 provide an MMSI filter list to receive data for specific vessels only.

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": [
    {
      "mmsi": "538010222",
      "lat": 27.9506,
      "lon": -82.4572,
      "speed": 0.1,
      "heading": 227,
      "course": 113.9,
      "vessel_name": "AURORA SPIRIT",
      "timestamp": "2026-05-16T10:00:00"
    },
    {
      "mmsi": "367596000",
      "lat": 27.9412,
      "lon": -82.4631,
      "speed": 8.2,
      "heading": 45,
      "course": 44.7,
      "vessel_name": "GULF RUNNER",
      "timestamp": "2026-05-16T09:58:00"
    }
  ],
  "balance_cents": 4500,
  "next_update_at": "2026-05-16T10:10:00Z"
}

Follow Watch

{
  "watch_id": 2,
  "data": {
    "lat": 27.9506,
    "lon": -82.4572,
    "speed": 0.1,
    "heading": 227
  },
  "balance_cents": 4500,
  "next_update_at": "2026-05-16T10:10:00Z"
}

Track (24hr History)

{
  "data": [
    [27.9506, -82.4572, 1747393200, 12.5, 227],
    [27.9612, -82.4481, 1747389600, 11.8, 225],
    [27.9718, -82.4390, 1747386000, 12.1, 224]
  ],
  "balance_cents": 4500
}

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

Get an API Key

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) may take 10–20 seconds to respond. Set your HTTP client timeout to at least 30 seconds. Do not retry or abort — you will be charged on the first request regardless.

Box

Start a watch

curl -X POST /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 filter by MMSI:

curl -X POST /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 /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. Call as often as you like.

Stop the watch

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

Follow

Start a watch

curl -X POST /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 /api -H "Content-Type: application/json" \
  -d '{"key":"ak_...","type":"follow_data","watch_id":1}'

Returns the most recent position. Call as often as you like.

Stop the watch

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

Track

curl -X POST /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 /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 /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 /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 /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