Vessel Class Finder: Why We Built a Vessel Classification API on IACS Data

IACS publishes ship class data only as a ZIP file. We built Vessel Class Finder, a free lookup and vessel classification API to check a ship's class status by IMO.

Vessel Class Finder lets you check a ship's class status by IMO number in a couple of seconds. You type seven digits and get back the classification society, whether the ship is in class, suspended or withdrawn, its last and next survey dates, and why the status last changed. It's a free web lookup and a vessel classification API, built on the public IACS "Vessels in Class" dataset, which IACS only publishes as a ZIP file.

That last detail is the whole reason the product exists, so let me start there.

Why build a vessel classification API at all?

Because the data is public and still oddly hard to use.

IACS, the association of the 12 major classification societies, publishes a list of every ship its members class. It's genuinely useful information. If you charter ships, insure them, finance them or screen them for compliance, "is this vessel in class?" is one of the first questions you ask. The problem is the format. You download a ZIP, unpack a CSV, open it in Excel, and search for the IMO. Then you do it again next week, because the file changes.

We kept running into this in our own maritime work. On RMS, the platform we built for a ship repair broker, one of the background jobs is literally called classification-society cleanup. Class data mattered there, and it was always a file to fetch and parse rather than something you could just ask for.

At some point the obvious thought arrives: if we need this, other people building maritime software need it too. And the people who aren't building software, the compliance analyst or the chartering desk, are doing the ZIP-and-Excel routine by hand.

What do you actually get when you look up an IMO?

Here's a real lookup for IMO 9321483, the container ship Emma Maersk:

{
  "imo": "9321483",
  "vessel_name": "EMMA MAERSK",
  "class": "ABS",
  "society": "ABS (American Bureau of Shipping)",
  "status": "Delivered",
  "in_class": true,
  "date_of_survey": "29/04/2026",
  "date_of_next_survey": "08/03/2031",
  "date_of_latest_status": "26/01/2007",
  "reason_for_status": "by society for other reasons"
}

That's the whole idea. One identifier in, a clear answer out. "Delivered", "Reinstated" and "Reassigned" all mean the ship is in class. "Suspended" means class is temporarily invalid. "Withdrawn" means the society no longer classes it. If the statuses and reason codes are new to you, there's a page that explains every IACS status code in plain language.

How do you check a ship's class status by IMO?

There are three ways, depending on who you are.

If you need one answer now, use the lookup box on the homepage. No signup, no card. Paste an IMO, read the result.

If you're building software, call the API. One POST request takes up to 100 IMO numbers at once:

curl -X POST https://vessel-class-finder-production.up.railway.app/vessels \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"imos": [9321483]}'

The API guide walks through authentication, batch requests and the response fields.

If you live in an AI assistant, there's an MCP server. Connect it to Claude, Cursor or another MCP client and you can ask "is IMO 9321483 in class?" in plain English. Single lookups work without a key. Setup takes a minute.

How much data is behind it?

The snapshot from 30 September 2026 covers 60,223 ships across all 12 IACS societies. Of those, 50,826 are in class, 575 are suspended and 4,848 are withdrawn. ClassNK classes the most ships (10,117), followed by Bureau Veritas (9,958) and ABS (8,787).

The reasons are where it gets interesting. 1,589 ships have "survey overdue" as the reason for their latest status. 431 were transferred to a non-IACS society, and 266 were sold for scrap. For a compliance team, a transfer away from IACS is exactly the kind of signal worth a second look. You can see how the societies compare on the class societies page.

We refresh the data every Sunday. The scraper loads the new file into a staging table and swaps it in, so lookups never hit a half-loaded dataset.

Who is it for?

Four groups, mostly.

  • Compliance and KYC teams at banks, traders and ship finance houses. A withdrawn or suspended class, or a move to a non-IACS society, is a risk indicator. It sits alongside sanctions screening, not instead of it. More on the sanctions and KYC use case.
  • Chartering and vetting desks. Is the nominated ship in class, is a survey overdue, did anything change recently? See charter vetting.
  • Marine insurers and brokers. Keeping class is usually a condition of cover, so monitoring a book of vessels matters. See marine insurance.
  • Maritime software companies that want class data inside their own vetting, chartering or fleet tools without maintaining a scraper.

There's also a local angle I care about. Greece is the largest ship-owning nation in the world by tonnage, and I'm Greek, so this one is close to home.

What can't it do?

I'd rather say this up front than have someone find out later.

It's IACS's public dataset, so it doesn't replace class certificates or the society's own records. It only covers ships classed by the 12 IACS members; a ship with a non-IACS society won't show up. The refresh is weekly, so a change made yesterday might not be there yet. And it does no sanctions-list matching. It tells you about class, nothing more.

Those limits are also why it's cheap. 100 lookups a month are free. Starter is $49 a month for 5,000, Pro is $199 for 50,000, and enterprise volumes are on request. The code is open source on GitHub, so you can see exactly what it does with the data.

What did building it teach us?

Small, boring products are underrated. Vessel Class Finder does one thing: it turns a ZIP file into an answer. There's no dashboard to learn and no onboarding call. That narrowness made it fast to build and easy to explain, and it's the same lesson we keep relearning with clients. The most valuable software is often the piece that removes one repetitive step from somebody's week.

It's one of our own products, like Callen AI, and the pattern holds: we build things we've needed ourselves, ship them small, and listen to who shows up. Most of it was built with Claude Code, including the API, the Stripe billing and the MCP server, which is a nice loop when the result is a tool Claude itself can call.

Where do you start?

Try a ship you know. Go to vesselclassfinder.com, paste an IMO number, and see what comes back. If you want to wire a vessel classification API into your own product, grab a free key there and read the API guide.

And if you're sitting on a messy maritime workflow of your own, the kind that lives in a spreadsheet nobody wants to touch, that's the work we do. Book a call and tell me about it.

Want a senior engineering read on what you're building?

30-minute call. Direct, no pitch deck, no junior hand-offs.

Book a 30-min strategy call →