IACS Vessel Classification Data API: How to Query Class Status by IMO Number

March 2026 · 5 min read

If you're building maritime software, you've probably needed vessel classification data at some point — the class society, survey dates, class status, reason for withdrawal. The kind of data you need to assess compliance, flag risk, or populate a fleet dashboard.

That data exists. IACS (the International Association of Classification Societies) publishes it. But getting it into your application programmatically is a different story.

What is IACS vessel classification data?

IACS member societies — DNV, Lloyd's Register, Bureau Veritas, ClassNK, ABS, and others — collectively classify over 90% of the world's cargo-carrying tonnage. When a vessel is "in class," it means the hull and machinery meet the society's rules and have been surveyed on schedule.

The data IACS publishes includes:

FieldDescription
imoIMO number (unique vessel identifier)
vessel_nameCurrent registered name
classClassification society (DNV, LR, BV, etc.)
statusClass status (In Class, Suspended, Withdrawn)
date_of_surveyLast survey date
date_of_next_surveyNext survey due date
date_of_latest_statusWhen the status last changed
reason_for_statusReason for withdrawal or suspension

This data matters for insurers underwriting marine risk, port state control systems checking compliance, ship operators tracking their fleet, and any maritime SaaS product that displays vessel information.

The problem: getting this data into your application

IACS publishes vessel-in-class data on their website as a downloadable ZIP file containing a semicolon-delimited CSV. There is no API. No webhook. No structured feed.

To use this data programmatically, you typically have to:

  1. Scrape the IACS website to find the latest download link
  2. Download and extract the ZIP file (~50MB+)
  3. Parse the CSV with its non-standard formatting (semicolon separator, dates embedded in ship names)
  4. Deduplicate records and handle data quality issues
  5. Load it into a database
  6. Build and maintain this pipeline to run on a schedule

That's 2-4 weeks of engineering work to build, plus ongoing maintenance every time the source format changes. If you're a small team building a maritime product, that's time you don't have.

A simpler approach: query by IMO via REST API

Vessel Class Finder handles the entire pipeline — scraping, parsing, deduplication, storage, and weekly refresh — and exposes the result as a clean REST API. You send IMO numbers, you get structured JSON back.

Register for an API key:

curl -X POST https://vessel-class-finder-production.up.railway.app/register \
  -H "Content-Type: application/json" \
  -d '{"email": "you@company.com", "password": "your-password"}'

Log in to receive your API key:

curl -X POST https://vessel-class-finder-production.up.railway.app/login \
  -H "Content-Type: application/json" \
  -d '{"email": "you@company.com", "password": "your-password"}'

# Response:
# {"message": "Login successful", "token": "jwt...", "apiKey": "your-api-key"}

Query vessels by IMO number:

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": [9200079]}'

Response:

[
  {
    "imo": 9200079,
    "vessel_name": "NORDIC AURORA",
    "class": "DNV",
    "status": "In Class",
    "date_of_survey": "15/06/2025",
    "date_of_next_survey": "15/06/2028",
    "date_of_latest_status": "01/01/2024",
    "reason_for_status": ""
  }
]

You can query multiple IMOs in a single request by passing an array. The response returns all matching vessels.

How the data stays fresh

The pipeline runs on a weekly schedule, pulling the latest data from IACS every Sunday. It uses a staging table approach — new data is loaded into a temporary table first, then swapped atomically — so the API never returns stale or partial results during a refresh.

What you can build with this

Pricing

The API has a free tier (100 lookups/month) so you can test the integration before committing. Paid plans start at $49/month for 5,000 lookups.

PlanLookups/monthPrice
Free100$0
Starter5,000$49/mo
Pro50,000$199/mo
EnterpriseUnlimitedCustom

Get started in 2 minutes

Register for a free API key and start querying vessel classification data.

Get Free API Key

The full API reference and source code are available on GitHub.