IACS Vessel Classification Data API: How to Query Class Status by IMO Number
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:
| Field | Description |
|---|---|
imo | IMO number (unique vessel identifier) |
vessel_name | Current registered name |
class | Classification society (DNV, LR, BV, etc.) |
status | Class status (In Class, Suspended, Withdrawn) |
date_of_survey | Last survey date |
date_of_next_survey | Next survey due date |
date_of_latest_status | When the status last changed |
reason_for_status | Reason 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:
- Scrape the IACS website to find the latest download link
- Download and extract the ZIP file (~50MB+)
- Parse the CSV with its non-standard formatting (semicolon separator, dates embedded in ship names)
- Deduplicate records and handle data quality issues
- Load it into a database
- 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
- Fleet monitoring dashboards — show class status and upcoming survey dates for a managed fleet
- Risk scoring for marine insurance — flag vessels with suspended or withdrawn class during quoting
- Port state compliance checks — verify a vessel's classification before port entry
- Vessel due diligence tools — include class history in sale and purchase workflows
- Maritime data enrichment — add classification data to existing vessel records in your product
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.
| Plan | Lookups/month | Price |
|---|---|---|
| Free | 100 | $0 |
| Starter | 5,000 | $49/mo |
| Pro | 50,000 | $199/mo |
| Enterprise | Unlimited | Custom |
Get started in 2 minutes
Register for a free API key and start querying vessel classification data.
Get Free API KeyThe full API reference and source code are available on GitHub.