Vessel sanctions check for ship suppliers
# any 7-digit IMO number
curl https://arcnautical.com/api/v1/vessels/9169067/check
{
"imo": "9169067",
"sanctions": {
"status": "GREEN",
"detail": "No matches across OFAC SDN, OpenSanctions,
EU FSD, UN Consolidated, UK OFSI for this
vessel's identifiers and current name. …",
"coverageComplete": true,
"coverageGaps": []
},
"ownership": { "opacity": "HIGH", "score": 70 },
"vetting": { "grade": "C", "score": 41, "status": "marginal" },
"assessed": true,
"checkedAt": "2026-09-13T17:10:03.138Z"
}
When
The nomination or delivery order names the vessel. Screen the IMO before you commit stock, a truck, a barge or a launch. If the order carries only a name, ask for the IMO — it is on the ship's certificates, and a name is not an identifier.
Designations are published on OFAC's schedule, not yours. A hull that was clear when the order was taken can be listed the week it arrives. Re-screen on delivery day; the free check costs nothing and needs no account.
Hulls you supply on a recurring basis — liner services, managed fleets, contract bunkering — go on a standing monitor, up to 500 per batch. When a verdict changes you get a signed webhook, not a news alert.
What the answer says
A sanctions status is only as good as the coverage behind it. Every answer names which of the five lists it read for this hull, in coverageGaps — a source that was unreachable is named, never silently skipped.
| status | Meaning | For the delivery |
|---|---|---|
| RED | Confirmed match. | The hull's IMO or MMSI matches a designated entry exactly — identifier-level, not a name guess. This is the one to put in front of counsel before anything moves. |
| AMBER | Needs a human. | A name-level or potential match that could not be confirmed on the identifier. Someone checks the match against the certificates before the launch leaves. Collisions with a different hull are excluded from the verdict and left visible under matches. |
| GREEN | No match found. | No hit across the lists named in detail, for the vessel's identifiers and current name. Keep the record with the delivery-order number on it. |
| INCOMPLETE | No verdict is possible. | A mandatory list was unreachable, or the hull could not be resolved from the IMO. Not charged. Re-screen with the name from the delivery order in vessel_name; the keyed response carries a retry_after. |
Scope, stated plainly: prior names are not screened. A hull designated under a former name, in a source record that carries no IMO, will not be matched here — the response says so in every detail string rather than letting a GREEN imply more than it checked.
Why the IMO and not the name on the launch
OFAC's SDN list carries vessel entries with IMO numbers. A name check misses a tanker renamed twice since designation; the IMO survives renaming and reflagging, which is why we key on it. The scale of the problem, from our published datasets:
The numbers above are read from the same CC BY 4.0 datasets the screening is built on and refresh with them; each carries its own as-of date. All datasets →
How
Type the IMO. The sanctions verdict, ownership opacity and vetting grade come back in about a second with the lists that were read. No account, nothing retained against you, 100 an hour per IP.
Paste the day's nominations as they are — names, IMOs, any format — and read a go/no-go grid in under a minute. Names are resolved to hulls where that is possible, and the grid says when it was not.
POST /api/v1/screening-batchesUp to 50 IMOs per call on a self-serve key, each with your customer_reference (the delivery-order number) echoed back on the record. The same engine as the free check, plus the evidence per source. An INCOMPLETE is never charged.
Each keyed screening is retained 3,650 days and replays verbatim from GET /api/v1/screenings/{id}: verdict, evidence, which lists were reachable and how fresh each was, and whose name the identity rested on (identity_basis). Ten years is the OFAC recordkeeping period since 2024.
Questions
OFAC's 14 May 2020 maritime advisory, issued with the State Department and the Coast Guard, addresses ship chandlers by name alongside owners, managers, brokers, port operators, freight forwarders and commodity traders, and sets out the compliance practices it expects of them. Whether a particular delivery is a prohibited dealing is a question for your counsel; whether the hull is on a sanctions list is a question we answer in about a second, with the lists that were read named in the response.
OFAC SDN, OpenSanctions, the EU Financial Sanctions Database (EU FSD), the UN Security Council Consolidated List and the UK OFSI list. Every response names which of the five were reachable when the verdict was computed; a missing one is listed in coverageGaps, never silently skipped.
The IMO number is on the ship's certificates and on most nominations and delivery orders; ask for it, because a name is not an identifier and sanctioned hulls are renamed. If all you have is a name, paste it into the list screen, which resolves names to hulls where it can and says when it cannot. The API itself screens by IMO.
No verdict was possible: either a mandatory list was unreachable or the hull's identity could not be resolved from the IMO. It is never charged. When the cause is identity, re-screen with the vessel name from the delivery order in the vessel_name field; the response then reports identity_basis: "user" so the record shows whose name it relied on.
Ten years (3,650 days), the period OFAC now requires for records behind a transaction. GET /api/v1/screenings/{id} replays the same verdict, evidence and source freshness verbatim, and your customer_reference — the delivery-order number, say — is echoed on every record.
For a one-off hull, yes: it returns the sanctions verdict, ownership opacity and vetting grade with the lists that were read, 100 checks an hour per IP, no account, and it keeps no record against you. When you need a record you can produce in an audit, or a schedule of hulls screened in one call, a self-serve key does that: 10,000 assessments a month on a live key, 1,000 on a test key.
Free in the browser. A key when you need the record. Nobody will call you.