BagComply

Use the data

Everything on this site is generated from one dataset: 155 airlines, 370 allowance rows and 193 sources. That dataset is downloadable today. A read-only API and an MCP server are built on the same rows and are described below, but they are not reachable yet — this page says so plainly rather than letting you find out from a failed request.

Status at a glance

Which data access paths are available today
Path Available Note
CSV download Yes Three files, CC BY 4.0
Read-only API Yes api.bagcomply.com — two routes, same contentHash as this page.
MCP server Yes 7 tools live at mcp.bagcomply.com (streamable HTTP, no auth).

Subdomain status checked 2026-10-25.

The dataset

Four entities, one row per record. The CSV bundle carries three of them; the fourth is served through the API envelope.

Entities in the dataset, their record counts and their CSV file
Entity Records CSV rows What it is
airline 155 370 One row per allowance, so an airline with four tiers appears four times. Conditions are flattened into an applies_to column.
source 193 193 The page each figure was copied from, with its verbatim excerpt, evidence tier and collection date.
specialItem 2 — Regulatory and industry baselines for batteries and power banks. Not in the CSV bundle yet — available through the API envelope only.
luggageProduct 24 24 Manufacturer-published case dimensions, with the measurement basis and a verification flag per product.

Licence: CC BY 4.0. Attribution text and a ready-made citation are below. Every row carries its source_url, evidence_tier, checked_on and needs_review, so a derived table can be audited back to the airline page it came from.

The API

Read-only JSON over HTTPS, no key, no rate-limit account. The shape below is what the deployed handler returns — it is written up here so that an integrator can build against the contract before the host resolves.

API endpoints
Endpoint Returns
GET / Service description, the entity list, and the data-status contract explained below.
GET /api/v1/:entity All records for one entity, with a count and the metadata envelope.
GET /api/v1/:entity/:id One record, or { item: null } with a 404 — a missing id is never an empty object.

Every response carries the same four metadata fields: apiVersion, contentHash, disclaimer and (on list endpoints) count. contentHash is the same hash printed on the download page, so a consumer can prove that an API response and a CSV file came from the same build. Add ?lang=zh for localised name fields where a translation exists.

The MCP server

7 tools over the Model Context Protocol, backed by the same rows and the same judgement engine as the website. The point of the tool split is that each one returns something quotable on its own, rather than a paginated blob the model has to slice.

MCP tools and what each answers
Tool Name Answers
list_airlines List / search airlines Which airlines are covered, and what their IATA codes are.
get_airline Get one airline's baggage rules Every allowance row for one airline, with conditions and sources.
search_baggage_rules Search baggage-rule rows across airlines The flat allowance table with filters for tier, cabin and free text. Each row is quotable on its own.
check_baggage Check whether a bag fits A verdict for one bag against one airline, from the same engine the site uses.
check_special_item Check a power bank or spare battery A verdict for a battery or power bank against the recorded limits.
compare_airlines Compare two airlines' baggage rules Two airlines side by side, condition by condition.
answer_query Route a natural-language question Convenience entry that dispatches to one of the tools above and returns its full payload.

answer_query is a convenience router, not a second contract: it dispatches to one of the six atomic tools and returns that tool's full payload under result, plus a routed block saying which tool it chose. Integrate against the atomic tools; use the router only when the question is already in natural language.

What every consumer must pass through

This is the part that is easy to drop and expensive to get wrong. Four facts travel with the data and must reach the end reader unchanged:

Citing and correcting

Suggested citation:

BagComply. Airline cabin and checked baggage allowance dataset. Retrieved 2026-10-25 from https://bagcomply.com/data/. Licensed CC BY 4.0.

Cite the download page rather than a versioned file path: the files are rebuilt whenever the data changes, and citing the page keeps the reader pointed at the current rows. If you need to pin a build, record the contentHash your copy carries — it identifies the exact dataset.

Corrections are the point of publishing sources. If a row disagrees with the airline's own page, write to editorial@bagcomply.com with the airline, the URL and what the page says; the editorial policy describes how a correction is recorded rather than silently overwritten.

What the dataset does not contain

Download the dataset · Collection and checking method · Data insights