{
 "schema_version": "uisge-open-datasets/v1",
 "release": "2026-10-23",
 "licence": {
  "recommended": "CC BY 4.0",
  "url": "https://creativecommons.org/licenses/by/4.0/",
  "status": "pending owner confirmation",
  "attribution": "Uisge Beatha (uisgebeatha.co.uk), open datasets, release 2026-10-23"
 },
 "documentation": "https://uisgebeatha.co.uk/data/open-datasets/",
 "generated_at": "2026-10-23T18:53:01+00:00",
 "versioning": "Each run is a release named by its date. Field names and meanings are fixed within a schema version; a breaking change bumps it (v2). Compare csv_sha256 to see whether a file changed.",
 "datasets": [
  {
   "name": "open-bottles",
   "title": "Bottle catalogue facts",
   "description": "Every bottle we list, with label facts and our style, region, distillery, cask and peat tags.",
   "as_of": "2026-10-23",
   "tag_confidence": "included",
   "csv": "/data/open-bottles.csv",
   "json": "/data/open-bottles.json",
   "rows": 1498,
   "csv_sha256": "c837581b84b8af04b6924700bc16e10bec3416a84ebd5b64c8cdc141ba377587",
   "csv_bytes": 433034,
   "fields": [
    {
     "name": "bottle_id",
     "type": "integer",
     "description": "Our stable bottle identifier."
    },
    {
     "name": "slug",
     "type": "string",
     "description": "URL slug; the bottle page is url."
    },
    {
     "name": "name",
     "type": "string",
     "description": "Bottle name as we record it (no size)."
    },
    {
     "name": "url",
     "type": "string",
     "description": "The bottle's page on uisgebeatha.co.uk."
    },
    {
     "name": "distillery_name",
     "type": "string",
     "description": "Distillery name, from our distillery records where we have one."
    },
    {
     "name": "age_years",
     "type": "integer",
     "description": "Stated age in years; blank when there is no age statement."
    },
    {
     "name": "no_age_statement",
     "type": "boolean",
     "description": "true when the bottle carries no age statement."
    },
    {
     "name": "vintage",
     "type": "integer",
     "description": "Distillation year where stated."
    },
    {
     "name": "abv_percent",
     "type": "number",
     "description": "Stated strength, % ABV."
    },
    {
     "name": "volume_ml",
     "type": "integer",
     "description": "Bottle size in millilitres."
    },
    {
     "name": "pack_count",
     "type": "integer",
     "description": "Bottles in the pack, for multi-packs."
    },
    {
     "name": "style",
     "type": "list",
     "description": "Style tag slug(s), '|'-separated in the CSV."
    },
    {
     "name": "style_confidence",
     "type": "list",
     "description": "Confidence of each style tag, in the same order: explicit, derived or inferred."
    },
    {
     "name": "country",
     "type": "list",
     "description": "Country tag slug(s), '|'-separated in the CSV."
    },
    {
     "name": "country_confidence",
     "type": "list",
     "description": "Confidence of each country tag, in the same order: explicit, derived or inferred."
    },
    {
     "name": "region",
     "type": "list",
     "description": "Region tag slug(s), '|'-separated in the CSV."
    },
    {
     "name": "region_confidence",
     "type": "list",
     "description": "Confidence of each region tag, in the same order: explicit, derived or inferred."
    },
    {
     "name": "distillery",
     "type": "list",
     "description": "Distillery tag slug(s), '|'-separated in the CSV."
    },
    {
     "name": "distillery_confidence",
     "type": "list",
     "description": "Confidence of each distillery tag, in the same order: explicit, derived or inferred."
    },
    {
     "name": "brand",
     "type": "list",
     "description": "Brand tag slug(s), '|'-separated in the CSV."
    },
    {
     "name": "brand_confidence",
     "type": "list",
     "description": "Confidence of each brand tag, in the same order: explicit, derived or inferred."
    },
    {
     "name": "bottler",
     "type": "list",
     "description": "Bottler tag slug(s), '|'-separated in the CSV."
    },
    {
     "name": "bottler_confidence",
     "type": "list",
     "description": "Confidence of each bottler tag, in the same order: explicit, derived or inferred."
    },
    {
     "name": "bottling",
     "type": "list",
     "description": "Bottling tag slug(s), '|'-separated in the CSV."
    },
    {
     "name": "bottling_confidence",
     "type": "list",
     "description": "Confidence of each bottling tag, in the same order: explicit, derived or inferred."
    },
    {
     "name": "smoke",
     "type": "list",
     "description": "Smoke tag slug(s), '|'-separated in the CSV."
    },
    {
     "name": "smoke_confidence",
     "type": "list",
     "description": "Confidence of each smoke tag, in the same order: explicit, derived or inferred."
    },
    {
     "name": "cask",
     "type": "list",
     "description": "Cask tag slug(s), '|'-separated in the CSV."
    },
    {
     "name": "cask_confidence",
     "type": "list",
     "description": "Confidence of each cask tag, in the same order: explicit, derived or inferred."
    },
    {
     "name": "format",
     "type": "list",
     "description": "Format tag slug(s), '|'-separated in the CSV."
    },
    {
     "name": "format_confidence",
     "type": "list",
     "description": "Confidence of each format tag, in the same order: explicit, derived or inferred."
    }
   ]
  },
  {
   "name": "open-distilleries",
   "title": "Distilleries",
   "description": "Active, closed and revived distilleries with founding and closing years, owner and stated capacity.",
   "as_of": "2026-10-23",
   "csv": "/data/open-distilleries.csv",
   "json": "/data/open-distilleries.json",
   "rows": 340,
   "csv_sha256": "3465bd89bfd46193ae270ea3c111c81fc3bddb62bbe08dcfd64c1aa8dd1ff954",
   "csv_bytes": 52473,
   "fields": [
    {
     "name": "slug",
     "type": "string",
     "description": "Our distillery identifier."
    },
    {
     "name": "name",
     "type": "string",
     "description": "Distillery name."
    },
    {
     "name": "country",
     "type": "string",
     "description": "Country."
    },
    {
     "name": "region",
     "type": "string",
     "description": "Whisky region (Scotch regions use the Highland/Lowland/Speyside/Islay/Campbeltown split)."
    },
    {
     "name": "status",
     "type": "string",
     "description": "Active, Closed or Revived, as of owner_as_of / the record snapshot."
    },
    {
     "name": "founded",
     "type": "integer",
     "description": "Year founded."
    },
    {
     "name": "closed_year",
     "type": "integer",
     "description": "Year closed, for closed sites."
    },
    {
     "name": "closed_kind",
     "type": "string",
     "description": "closed, mothballed or dismantled."
    },
    {
     "name": "demolished",
     "type": "boolean",
     "description": "true when the buildings are known to be demolished."
    },
    {
     "name": "revived_year",
     "type": "integer",
     "description": "Year production restarted, for revived sites."
    },
    {
     "name": "owner",
     "type": "string",
     "description": "Current owning company."
    },
    {
     "name": "owner_group",
     "type": "string",
     "description": "Parent group, where the owner belongs to one."
    },
    {
     "name": "owner_as_of",
     "type": "date",
     "description": "Date the owner was last checked."
    },
    {
     "name": "owner_confidence",
     "type": "string",
     "description": "high, medium or low."
    },
    {
     "name": "capacity_lpa",
     "type": "integer",
     "description": "Stated annual capacity in litres of pure alcohol (not production); blank when not stated."
    },
    {
     "name": "capacity_confidence",
     "type": "string",
     "description": "high, medium or low."
    },
    {
     "name": "whiskipedia_url",
     "type": "string",
     "description": "The distillery's Whiskipedia article, where there is one."
    },
    {
     "name": "url",
     "type": "string",
     "description": "The distillery's page on uisgebeatha.co.uk, where there is one."
    }
   ]
  },
  {
   "name": "open-smws-codes",
   "title": "SMWS codes",
   "description": "Scotch Malt Whisky Society code numbers and the distillery or producer behind each.",
   "as_of": "2026-10-23",
   "csv": "/data/open-smws-codes.csv",
   "json": "/data/open-smws-codes.json",
   "rows": 245,
   "csv_sha256": "a593973c4e0af0d34fe3fc1a03c22ee8e76461e0e279a065a302e3dcb3bfe765",
   "csv_bytes": 20380,
   "fields": [
    {
     "name": "code",
     "type": "string",
     "description": "SMWS code prefix and number, e.g. 1, G4, B2."
    },
    {
     "name": "prefix",
     "type": "string",
     "description": "Code prefix; blank for malt whisky."
    },
    {
     "name": "number",
     "type": "integer",
     "description": "Code number."
    },
    {
     "name": "kind",
     "type": "string",
     "description": "Spirit type for the prefix."
    },
    {
     "name": "name",
     "type": "string",
     "description": "Distillery or producer behind the code."
    },
    {
     "name": "country",
     "type": "string",
     "description": "Country."
    },
    {
     "name": "region",
     "type": "string",
     "description": "Region, for whisky codes."
    },
    {
     "name": "status",
     "type": "string",
     "description": "Distillery status, for whisky codes."
    },
    {
     "name": "whiskipedia_url",
     "type": "string",
     "description": "Whiskipedia article, where there is one."
    }
   ]
  }
 ],
 "excluded": [
  {
   "fields": "Whiskybase rating, votes and URL",
   "reason": "Whiskybase data; written permission to republish is pending (docs/whiskybase.md)."
  },
  {
   "fields": "Retailer prices, delivery costs, stock, offer links and retailer names per offer",
   "reason": "Retailers' data that changes daily; the price studies publish dated aggregates instead."
  },
  {
   "fields": "Retailer product descriptions and listing titles",
   "reason": "Retailers' copyright text."
  },
  {
   "fields": "Product images",
   "reason": "Retailers' or producers' copyright."
  },
  {
   "fields": "Barcodes (GTIN)",
   "reason": "Taken from retailer feeds, not our own records."
  },
  {
   "fields": "Price band tag",
   "reason": "Derived from retailer prices and changes with them."
  },
  {
   "fields": "Flavour and occasion tags",
   "reason": "Flavour tags come only from retailer description keywords; occasion tags are too sparse to be useful."
  },
  {
   "fields": "Tag evidence and provenance strings",
   "reason": "They quote retailer listing titles and descriptions."
  },
  {
   "fields": "Third-party flavour scores (Whisky Classified, Diageo/Dave Broom flavour map)",
   "reason": "Not ours; cite the originals instead."
  }
 ],
 "corrections": "Corrections are welcome; reported errors are fixed in the next release."
}
