Get every privacy-eligible vessel visit at one UN/LOCODE whose arrival falls in the 1-c…
Get every privacy-eligible vessel visit at one UN/LOCODE whose arrival falls in the 1-calendar-month period selected by required start=YYYY-MM-01. Includes per-vessel visit counts, arrivals, departures, stay durations, identity and dimensions, monthly section…
by aisfleet.com · discovered, not yet claimed by its owner · updated 2026-10-09
Mirrored from Coinbase's public x402 Bazaar. The description is the provider's own text and has not been reviewed here; the payment requirements are copied as published.
What it does
Get every privacy-eligible vessel visit at one UN/LOCODE whose arrival falls in the 1-calendar-month period selected by required start=YYYY-MM-01. Includes per-vessel visit counts, arrivals, departures, stay durations, identity and dimensions, monthly sections, quality flags and observed dwell statistics. Only complete periods with full capture coverage are sold, and a sold report is delivered whole at the listed price; the free port offer publishes visit and vessel counts first.
Tags: ais · port · intelligence · visits · maritime · bazaar
Call contract
- Method
- GET
- Input
- query parameters
- Output
- json
- Last paid call
- 2026-10-09
{
"start": "2025-07-01"
}{
"calendar_months": 1,
"coverage_start": "2025-06-01T00:00:00Z",
"license_url": "https://aisfleet.com/agent-data-license/",
"periods": [
{
"month": "2025-07",
"summary": {
"completed_visit_count": 1,
"departure_not_observed_count": 0,
"estimated_arrival_count": 0,
"estimated_departure_count": 0,
"observed_dwell_seconds": {
"average": 28800,
"median": 28800,
"sample_visits": 1,
"total": 28800
},
"repeat_vessel_count": 0,
"vessel_count": 1,
"visit_count": 1
},
"vessels": [
{
"ais_type": 70,
"beam_meters": 28,
"call_sign": "ABCD",
"completed_visit_count": 1,
"draught_meters": 9.2,
"flag": "NL",
"imo": "9876543",
"length_meters": 180,
"mmsi": "123456789",
"name": "EXAMPLE TRADER",
"observed_dwell_seconds": {
"average": 28800,
"median": 28800,
"sample_visits": 1,
"total": 28800
},
"total_stay_seconds": 28800,
"vessel_kind": {
"kind": "cargo",
"label": "Cargo"
},
"visit_count": 1,
"visits": [
{
"arrival_estimated": false,
"arrived_at": "2025-07-08T09:12:00Z",
"departed_at": "2025-07-08T17:12:00Z",
"departure_estimated": false,
"duration_seconds": 28800,
"last_confirmed_at": "2025-07-08T17:12:00Z"
}
]
}
],
"window_end": "2025-08-01T00:00:00Z",
"window_start": "2025-07-01T00:00:00Z"
}
],
"port": {
"country": "NL",
"locode": "NLRTM",
"name": "Rotterdam"
},
"product": "port-intelligence-month",
"provider": "AIS Fleet",
"summary": {
"completed_visit_count": 1,
"departure_not_observed_count": 0,
"estimated_arrival_count": 0,
"estimated_departure_count": 0,
"observed_dwell_seconds": {
"average": 28800,
"median": 28800,
"sample_visits": 1,
"total": 28800
},
"repeat_vessel_count": 0,
"vessel_count": 1,
"visit_count": 1
},
"visit_basis": "arrival_at",
"window_end": "2025-08-01T00:00:00Z",
"window_end_exclusive": true,
"window_start": "2025-07-01T00:00:00Z"
}Use with an agent
- Discover. Agents find this listing with
GET https://bazaar.saylorinnovations.com/discovery/search?query=…, the MCP toolsearch_resources, or/discovery/resources. - Inspect. Fetch
/resources/30586.jsonfor the price and payment options. - Pay. Call
GET https://aisfleet.com/api/x402/v1/ais/ports/:locode/intelligence-month. The provider answers402with its payment requirements. An x402 client signs one of the options below and retries withPAYMENT-SIGNATURE. - Execute. The provider returns
200with the data. Agent Bazaar is not in the request path and never sees your payment.
For humans
You don't need an account or an API key; you need a wallet holding a small amount of USDC on Base, and an x402-capable client (see the examples below). Call the endpoint unpaid first to see exactly what it asks for.
Pricing & payment
- Price
- $1 / request
- Protocol
- x402 v2
- Auth
- No account or API key. Pay per request.
- Networks
- Base
- Demand
- 1 calls · 1 unique payers in 30d (public x402 Bazaar data)
x402 payment requirements
| Scheme | Network | Asset | Amount | Pay to | Timeout |
|---|---|---|---|---|---|
| exact | Base eip155:8453 | USDC | $1 | 0xa4b5056e8260d49213e64c081b504c8535c14bc4 | 300s |
accepts[] (raw JSON)
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0xa4b5056e8260d49213e64c081b504c8535c14bc4",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "1000000",
"amountUsd": 1,
"maxTimeoutSeconds": 300
}
]Schemas
Output schema (JSON Schema)
{
"additionalProperties": false,
"properties": {
"example": {
"additionalProperties": false,
"properties": {
"calendar_months": {
"const": 1,
"type": "integer"
},
"coverage_start": {
"format": "date-time",
"type": "string"
},
"license_url": {
"format": "uri",
"type": "string"
},
"periods": {
"items": {
"additionalProperties": false,
"properties": {
"month": {
"pattern": "^\\d{4}-\\d{2}$",
"type": "string"
},
"summary": {
"additionalProperties": false,
"properties": {
"completed_visit_count": {
"minimum": 0,
"type": "integer"
},
"departure_not_observed_count": {
"minimum": 0,
"type": "integer"
},
"estimated_arrival_count": {
"minimum": 0,
"type": "integer"
},
"estimated_departure_count": {
"minimum": 0,
"type": "integer"
},
"observed_dwell_seconds": {
"additionalProperties": false,
"properties": {
"average": {
"minimum": 0,
"type": [
"integer",
"null"
]
},
"median": {
"minimum": 0,
"type": [
"integer",
"null"
]
},
"sample_visits": {
"minimum": 0,
"type": "integer"
},
"total": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"sample_visits",
"total",
"average",
"median"
],
"type": "object"
},
"repeat_vessel_count": {
"minimum": 0,
"type": "integer"
},
"vessel_count": {
"minimum": 0,
"type": "integer"
},
"visit_count": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"vessel_count",
"visit_count",
"repeat_vessel_count",
"completed_visit_count",
"departure_not_observed_count",
"estimated_arrival_count",
"estimated_departure_count",
"observed_dwell_seconds"
],
"type": "object"
},
"vessels": {
"items": {
"additionalProperties": false,
"properties": {
"ais_type": {
"type": [
"integer",
"null"
]
},
"beam_meters": {
"type": [
"number",
"null"
]
},
"call_sign": {
"type": [
"string",
"null"
]
},
"completed_visit_count": {
"minimum": 0,
"type": "integer"
},
"draught_meters": {
"type": [
"number",
"null"
]
},
"flag": {
"type": [
"string",
"null"
]
},
"imo": {
"pattern": "^[0-9]+$",
"type": [
"string",
"null"
]
},
"length_meters": {
"type": [
"number",
"null"
]
},
"mmsi": {
"pattern": "^[0-9]{9}$",
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"observed_dwell_seconds": {
"additionalProperties": false,
"properties": {
"average": {
"minimum": 0,
"type": [
"integer",
"null"
]
},
"median": {
"minimum": 0,
"type": [
"integer",
"null"
]
},
"sample_visits": {
"minimum": 0,
"type": "integer"
},
"total": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"sample_visits",
"total",
"average",
"median"
],
"type": "object"
},
"total_stay_seconds": {
"minimum": 0,
"type": "integer"
},
"vessel_kind": {
"additionalProperties": false,
"properties": {
"kind": {
"type": "string"
},
"label": {
"type": "string"
}
},
"required": [
"kind",
"label"
],
"type": "object"
},
"visit_count": {
"minimum": 1,
"type": "integer"
},
"visits": {
"items": {
"additionalProperties": false,
"properties": {
"arrival_estimated": {
"type": "boolean"
},
"arrived_at": {
"format": "date-time",
"type": "string"
},
"departed_at": {
"format": "date-time",
"type": [
"string",
"null"
]
},
"departure_estimated": {
"type": "boolean"
},
"duration_seconds": {
"minimum": 0,
"type": [
"integer",
"null"
]
},
"last_confirmed_at": {
"format": "date-time",
"type": "string"
}
},
"required": [
"arrived_at",
"departed_at",
"duration_seconds",
"last_confirmed_at",
"arrival_estimated",
"departure_estimated"
],
"type": "object"
},
"minItems": 1,
"type": "array"
}
},
"required": [
"mmsi",
"imo",
"name",
"call_sign",
"flag",
"ais_type",
"vessel_kind",
"length_meters",
"beam_meters",
"draught_meters",
"visit_count",
"completed_visit_count",
"total_stay_seconds",
"observed_dwell_seconds",
"visits"
],
"type": "object"
},
"type": "array"
},
"window_end": {
"format": "date-time",
"type": "string"
},
"window_start": {
"format": "date-time",
"type": "string"
}
},
"required": [
"month",
"window_start",
"window_end",
"summary",
"vessels"
],
"type": "object"
},
"maxItems": 1,
"minItems": 1,
"type": "array"
},
"port": {
"additionalProperties": false,
"properties": {
"country": {
"type": "string"
},
"locode": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"locode",
"name",
"country"
],
"type": "object"
},
"product": {
"const": "port-intelligence-month",
"type": "string"
},
"provider": {
"const": "AIS Fleet",
"type": "string"
},
"summary": {
"additionalProperties": false,
"properties": {
"completed_visit_count": {
"minimum": 0,
"type": "integer"
},
"departure_not_observed_count": {
"minimum": 0,
"type": "integer"
},
"estimated_arrival_count": {
"minimum": 0,
"type": "integer"
},
"estimated_departure_count": {
"minimum": 0,
"type": "integer"
},
"observed_dwell_seconds": {
"additionalProperties": false,
"properties": {
"average": {
"minimum": 0,
"type": [
"integer",
"null"
]
},
"median": {
"minimum": 0,
"type": [
"integer",
"null"
]
},
"sample_visits": {
"minimum": 0,
"type": "integer"
},
"total": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"sample_visits",
"total",
"average",
"median"
],
"type": "object"
},
"repeat_vessel_count": {
"minimum": 0,
"type": "integer"
},
"vessel_count": {
"minimum": 0,
"type": "integer"
},
"visit_count": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"vessel_count",
"visit_count",
"repeat_vessel_count",
"completed_visit_count",
"departure_not_observed_count",
"estimated_arrival_count",
"estimated_departure_count",
"observed_dwell_seconds"
],
"type": "object"
},
"visit_basis": {
"const": "arrival_at",
"type": "string"
},
"window_end": {
"format": "date-time",
"type": "string"
},
"window_end_exclusive": {
"const": true,
"type": "boolean"
},
"window_start": {
"format": "date-time",
"type": "string"
}
},
"required": [
"provider",
"product",
"port",
"window_start",
"window_end",
"window_end_exclusive",
"calendar_months",
"visit_basis",
"coverage_start",
"summary",
"periods",
"license_url"
],
"type": "object"
},
"type": {
"const": "json",
"type": "string"
}
},
"required": [
"type",
"example"
],
"type": "object"
}Example shape — generated from the schema, not a captured live response
{
"example": {
"calendar_months": 0,
"coverage_start": "2026-01-01T00:00:00Z",
"license_url": "https://example.com",
"periods": [
{
"month": "string",
"summary": {
"completed_visit_count": 0,
"departure_not_observed_count": 0,
"estimated_arrival_count": 0,
"estimated_departure_count": 0,
"observed_dwell_seconds": {
"average": 0,
"median": 0,
"sample_visits": 0,
"total": 0
},
"repeat_vessel_count": 0,
"vessel_count": 0,
"visit_count": 0
},
"vessels": [
{
"ais_type": 0,
"beam_meters": 0,
"call_sign": "string",
"completed_visit_count": 0,
"draught_meters": 0,
"flag": "string",
"imo": "string",
"length_meters": 0,
"mmsi": "string",
"name": "string",
"observed_dwell_seconds": {
"average": null,
"median": null,
"sample_visits": null,
"total": null
},
"total_stay_seconds": 0,
"vessel_kind": {
"kind": null,
"label": null
},
"visit_count": 0,
"visits": [
"value"
]
}
],
"window_end": "2026-01-01T00:00:00Z",
"window_start": "2026-01-01T00:00:00Z"
}
],
"port": {
"country": "string",
"locode": "string",
"name": "string"
},
"product": "string",
"provider": "string",
"summary": {
"completed_visit_count": 0,
"departure_not_observed_count": 0,
"estimated_arrival_count": 0,
"estimated_departure_count": 0,
"observed_dwell_seconds": {
"average": 0,
"median": 0,
"sample_visits": 0,
"total": 0
},
"repeat_vessel_count": 0,
"vessel_count": 0,
"visit_count": 0
},
"visit_basis": "string",
"window_end": "2026-01-01T00:00:00Z",
"window_end_exclusive": true,
"window_start": "2026-01-01T00:00:00Z"
},
"type": "string"
}Examples
curl -X GET 'https://aisfleet.com/api/x402/v1/ais/ports/:locode/intelligence-month'
# -> 402 Payment Required; read PAYMENT-REQUIRED
# retry the identical request with PAYMENT-SIGNATUREconst res = await fetch("https://aisfleet.com/api/x402/v1/ais/ports/:locode/intelligence-month", {
"method": "GET"
});
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}import httpx
res = httpx.request("GET", "https://aisfleet.com/api/x402/v1/ais/ports/:locode/intelligence-month")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerDetails
- Provider
- aisfleet.com
- Endpoint
- https://aisfleet.com/api/x402/v1/ais/ports/:locode/intelligence-month
- Machine-readable
/resources/30586.json