Skip to content

Public data API

Free, read-only access to the registry data published on this site. Every value comes with its source URL, the date it was retrieved, its effective date where it has one, and whether the source is primary or secondary. Attribution is required.

Stable API v1

Base URL

https://whichflagtofly.com/api/v1

No key, no account. GET only, JSON only, CORS open to any origin. Everything on this page is free.

Cite it like this

Reproduce this line, linked to the site, wherever you show or summarize the data, including inside a generated answer. It is a condition of use. The full terms are below.

Data: WhichFlagToFly (whichflagtofly.com)

Endpoints

Example responses are generated from live data and trimmed to a couple of entries.

GET/api/v1/jurisdictions

Every published jurisdiction and its registers.

Slugs, names, asset classes, the canonical page URL for each register, how many data points each has published against how many it tracks, and the date each was last checked against its sources.

Example response

https://whichflagtofly.com/api/v1/jurisdictions

{
  "data": {
    "jurisdictions": [
      {
        "slug": "aruba",
        "code": "AW",
        "name": "Aruba",
        "verified_fact_count": 29,
        "tracked_fact_count": 29,
        "facts_url": "https://whichflagtofly.com/api/v1/jurisdictions/aruba/facts",
        "registries": [
          {
            "registry_name": "The Registry of Aruba",
            "asset": "jet",
            "asset_class": "aircraft",
            "operator_body": "Department of Civil Aviation Aruba",
            "official_url": "https://www.theregistryofaruba.com/",
            "page_url": "https://whichflagtofly.com/flags/jet/aruba",
            "verified_fact_count": 29,
            "tracked_fact_count": 29,
            "last_checked": "2026-09-09"
          }
        ]
      }
    ]
  },
  "meta": {
    "attribution": {
      "required": true,
      "text": "Data: WhichFlagToFly (whichflagtofly.com)",
      "url": "https://whichflagtofly.com"
    },
    "license_note": "Free to read and quote. Attribution is required: reproduce the attribution text above with a link. No formal data-reuse license has been adopted yet; the requirement and the published terms are at https://whichflagtofly.com/developers. Values are informational, not legal or tax advice.",
    "last_checked": "2026-09-12",
    "api_version": "v1",
    "tier": "free"
  }
}

GET/api/v1/jurisdictions/{slug}/facts

Every published data point for one jurisdiction.

Each fact carries its key and label, its display value and currency, its source URL and name, its retrieval date, its effective date, its source tier and the register it belongs to. An unknown slug returns a 404.

Parameters

asset
Optional. `yacht` or `jet` (`aircraft` is accepted as an alias for `jet`). Narrows the response to one register class. An unrecognized value returns a 400.

Example response

https://whichflagtofly.com/api/v1/jurisdictions/{slug}/facts

{
  "data": {
    "jurisdiction": {
      "slug": "cayman-islands",
      "code": "KY",
      "name": "Cayman Islands"
    },
    "asset": null,
    "facts": [
      {
        "fact_key": "eligibility_owner",
        "label": "Who may own a registered vessel",
        "value_display": "Merchant Shipping Act 2024 s.4(1): qualified owners include Cayman Islands citizens; nationals or citizens of an EU or EEA Member State or of an 'approved country', including their overseas countries, territories and dependencies; bodies corporate, shipping entities or foreign companies incorporated, established or registered in the United Kingdom or any of its Overseas Territories or Crown Dependencies, in an EU/EEA Member State, or in an approved country; and foreign companies under s.183 of the Companies Act (2023 Revision) carrying on business in the Islands. Section 4(2): an unqualified person may be one of the owners provided a majority interest is held by qualified persons. MACI additionally requires an owner who is not resident or incorporated in the Cayman Islands to appoint a Representative Person resident on the Islands before registration. 'Approved country' is defined in s.4(3) as either (a) a country designated as having AML/CFT measures equivalent to the Islands under s.5(2)(a) of the Proceeds of Crime Act (2024 Revision), or (b) 'a country whose citizens are persons qualified to own a ship registered in the United Kingdom': two alternatives, so limb (b) stands on its own. MACI's Guidance Note 03/2024 relies on limb (b): its footnote to the qualified-owner list says an approved country 'includes a country whose citizens are persons qualified to own a ship registered in the United Kingdom', and s.2.3 points to regulation 7 of the United Kingdom's Merchant Shipping (Registration of Ships) Regulations 1993. That regulation qualifies British citizens, British Overseas Territories and Crown Dependencies citizens, British Overseas citizens, British subjects, British Nationals (Overseas), Commonwealth citizens, citizens of the twenty countries and territories in its Schedule 6 (Argentina, Aruba, Bahrain, Brazil, the Canary Islands, China, the Faroe Islands, Haiti, Israel, Japan, Liberia, Madeira, the Marshall Islands, Monaco, Panama, South Korea, Switzerland, Suriname, the United Arab Emirates and the United States), and bodies corporate incorporated in the United Kingdom, an EEA State, a Commonwealth state, a Schedule 6 country or a relevant British possession. Guidance Note 03/2024 s.2.1 states the point of the 2024 Act plainly: the ownership criteria 'has been widened and aligned with those for owning a ship registered in the United Kingdom'. Conyers, writing on Cayman superyacht registration, states that 'More than 70 countries are now qualifying jurisdictions for the purposes of owning Cayman flagged vessels', a figure the statutory limbs comfortably support once the EU and EEA, the Commonwealth, Schedule 6 and the overseas territories and dependencies of each are added together. No separate approved-country list is published by MACI or by the Anti-Money Laundering Steering Group today.",
        "currency": null,
        "source_tier": "primary",
        "source_url": "https://www.cishipping.com/sites/default/files/lawsregulations/MerchantShippingAct,2024.pdf",
        "source_name": "Cayman Islands Merchant Shipping Act, 2024 (Act 1 of 2024), published by the Maritime Authority of the Cayman Islands",
        "retrieved_at": "2026-09-01",
        "effective_date": null,
        "registry": {
          "registry_name": "Cayman Islands Shipping Registry",
          "asset": "yacht",
          "asset_class": "yacht",
          "page_url": "https://whichflagtofly.com/flags/yacht/cayman-islands"
        }
      },
      {
        "fact_key": "eligibility_vessel",
        "label": "Which vessels qualify",
        "value_display": "Eligibility is set by ownership and by discretion, not by the ship's size or age. Merchant Shipping Act 2024 s.5(1): 'Subject to sections 7 and 8, this section has effect for the purpose of determining whether a ship is entitled to be registered in the Islands under this Act.' Section 5(2): 'a ship is entitled to be registered if a majority interest in the ship is owned by one or more persons qualified to be owners of Cayman Islands ships by virtue of section 4(1)'; s.5(5)(a) defines a majority interest as legal title to thirty-three or more of the sixty-four shares into which the property in the ship is divided. Section 5(3)-(4): where the majority owners are not resident in the Islands the ship is entitled to be registered only if a representative person is appointed, and where there are multiple owners and no such requirement arises the ship is entitled to be registered only if a resident representative person is appointed or a resident owner is nominated managing owner. Section 7(1) then gives an override: notwithstanding that a ship is entitled to be registered, the Chief Executive Officer may direct the Registrar of Shipping not to register it if satisfied that, having regard to (a) the condition of the ship so far as is relevant to safety or to a risk of pollution, (b) the safety, health and welfare of persons employed or engaged in any capacity on board, (c) the possibility that the ship is being used for criminal or unlawful purposes, or (d) the record of the owner's management and operational quality, 'it would be detrimental to the interests of the Islands or of international shipping for the ship to be registered'. Section 13(1) requires every ship to be measured and its tonnage ascertained before registration, and s.13(4) disapplies that requirement for a pleasure vessel of less than twenty-four meters in length where the owner submits the prescribed particulars to the Registrar's satisfaction before registration. The registry does operate that s.7(1) discretion as published practice, and it publishes the trigger. MACI's own FAQ on whether a commercial vessel must be surveyed before registration answers: 'Yes. Prior to accepting a commercial vessel for registration, a Merchant Ship Flag-in Matrix \"scoring\" system is used by Cayman to ensure that the vessel meets minimum safety and operational standards. Generally vessels over 15 years old or those vessels with a medium to high score may require a pre-registration survey, depending on the particular case.' So fifteen years is a survey trigger, not a cut-off: an older yacht is registrable, it is simply more likely to be inspected first. On vessel type, practitioners report one standing exclusion the Act does not contain: Ogier's Cayman vessel-registration guide states that the register is 'authorised to certify all sizes and types of vessel (other than fishing vessels, except those owned locally and operating in Cayman waters)', and the Official Guide to Ship Registries records the same limit as policy rather than statute: 'as a matter of policy, fishing vessels are not currently being registered except those owned locally and operating in Cayman waters'.",
        "currency": null,
        "source_tier": "primary",
        "source_url": "https://www.cishipping.com/sites/default/files/lawsregulations/MerchantShippingAct,2024.pdf",
        "source_name": "Cayman Islands Merchant Shipping Act, 2024 (Act 1 of 2024), published by the Maritime Authority of the Cayman Islands",
        "retrieved_at": "2026-09-01",
        "effective_date": null,
        "registry": {
          "registry_name": "Cayman Islands Shipping Registry",
          "asset": "yacht",
          "asset_class": "yacht",
          "page_url": "https://whichflagtofly.com/flags/yacht/cayman-islands"
        }
      }
    ]
  },
  "meta": {
    "attribution": {
      "required": true,
      "text": "Data: WhichFlagToFly (whichflagtofly.com)",
      "url": "https://whichflagtofly.com"
    },
    "license_note": "Free to read and quote. Attribution is required: reproduce the attribution text above with a link. No formal data-reuse license has been adopted yet; the requirement and the published terms are at https://whichflagtofly.com/developers. Values are informational, not legal or tax advice.",
    "last_checked": "2026-09-12",
    "api_version": "v1",
    "tier": "free"
  }
}

GET/api/v1/fact-keys

The data-point catalog.

Every fact key the API can return, with its label and the service categories it belongs to. This is the dataset's schema, listed in full whether or not any register has published a value for a given key.

Example response

https://whichflagtofly.com/api/v1/fact-keys

{
  "data": {
    "fact_keys": [
      {
        "fact_key": "eligibility_owner",
        "label": "Who may own a registered vessel",
        "groups": [
          "yacht-registration"
        ]
      },
      {
        "fact_key": "eligibility_vessel",
        "label": "Which vessels qualify",
        "groups": [
          "yacht-registration"
        ]
      }
    ]
  },
  "meta": {
    "attribution": {
      "required": true,
      "text": "Data: WhichFlagToFly (whichflagtofly.com)",
      "url": "https://whichflagtofly.com"
    },
    "license_note": "Free to read and quote. Attribution is required: reproduce the attribution text above with a link. No formal data-reuse license has been adopted yet; the requirement and the published terms are at https://whichflagtofly.com/developers. Values are informational, not legal or tax advice.",
    "last_checked": null,
    "api_version": "v1",
    "tier": "free"
  }
}

Response shape

Every successful response is {"data": …, "meta": …}. `data` holds the resource. `meta` holds the attribution requirement, the license position, `last_checked` (the newest date anything in the payload was checked against its source, or null) and `api_version`.

Every failure is {"error": {"code": …, "message": …}, "meta": …} with the matching HTTP status. The codes are stable strings you can branch on: `not_found`, `bad_request`, `rate_limited` and `internal_error`. Messages are for humans and may change.

Fields may be added to responses over time. Within a version they are not removed or renamed, so ignore any field you do not recognize.

What is in the data

This API serves the same data points as the public pages: every data point that meets our publication floor, and nothing else. Whether a data point meets the floor depends on the type of source, whether the source states an effective date, and how recently the source was read. The same rule applies to every row.

Each fact includes its provenance: `source_url`, `source_name`, `retrieved_at`, `effective_date` and `source_tier`. `source_tier` is `primary` for a register, regulator, statute or official fee schedule, and `secondary` for a law-firm briefing, a trade publication or an aggregator.

Facts carry no review status and no score.

A data point reported to us as wrong is marked disputed and is not served. An absent value means nothing has been published yet. It does not mean zero, and it does not mean the requirement does not exist. Each register carries `verified_fact_count` and `tracked_fact_count` so you can see the difference.

`verified_fact_count` counts the data points that meet the publication floor. Each register also carries `last_checked`, the most recent date any of its published rows was checked against its source. The register's own page shows the same date.

Attribution (required)

Use of this API requires attribution. Reproduce the attribution text below, linked to the URL in `meta.attribution.url`, wherever the data or anything derived from it is displayed, quoted or summarized, including inside a generated answer.

Every response states the requirement: `meta.attribution.required` is always true, and the `X-Attribution-Required: true` header is set on every reply, including errors.

Attribution is a condition of use. No data-reuse license has been adopted yet. When one is published it will appear here and in `meta.license_note`, and it will not be narrower than the terms on this page today.

Rate limits

60 requests per 60 seconds per client IP, as a sliding window. Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`.

Over the limit you get `429` with a `Retry-After` header in whole seconds and a `rate_limited` error body. Refused requests do not count against the limit, so a retry after the stated delay will succeed.

Responses are cached at the edge. If you need the whole corpus, fetch it once and cache it rather than requesting every jurisdiction each time. If you need a higher limit, write to info@whichflagtofly.com. The limit is there to stop runaway scripts. It is not a commercial gate.

Versioning

The version is in the path: `/api/v1`. Within a version, fields may be added but are not removed, renamed or retyped, and an endpoint does not start returning less than it did.

A breaking change ships as a new version path, and the old path keeps working while it is deprecated. `meta.api_version` names the version that served your response.

Tiers

Everything on this page is free, needs no key and no account, and is served at the `free` tier. `meta.tier` says so on every response.

A premium tier is planned and is not switched on. If it is enabled it will be additive: these endpoints will keep working without a key and will return at least what they return today.