COSTA.
v1.0 · Published November 2025

An open standard for cannabis product data.

COSTA is the Cannabis Open Standards Technology Alliance. We maintain a vendor-neutral schema that lets licensed producers publish product information once — and have it read consistently by every dispensary, marketplace, regulator, and search engine that consumes it.

Read the spec →Adopt for your catalog
The problem

Every retailer wants your data in a different shape.

Licensed producers maintain the same product catalog in five different formats — one per marketplace, one per provincial board, one for their own website, one for their distributor, one for the GS1 feed. Consumers see inconsistent THC numbers, missing terpene data, and stale availability across the channels they shop on. COSTA fixes the format problem so everyone can fix the data problem.

01 / Standardize

One schema, every channel

A single JSON-LD and XML representation for cannabinoids, terpenes, strain, packaging, testing, and regulatory data — built on schema.org so search engines understand it natively.
02 / Decentralize

You host your own data

No central authority, no API to pay for, no gatekeeper. Embed the JSON-LD on your product pages or publish an XML feed from your own domain. Aggregators come to you.
03 / Comply

Regulatory-aware by design

Fields for Health Canada class of cannabis, license number, batch/lot, expiry, COA links, and access requirements are first-class — not bolted on. U.S. state extensions are on the roadmap.
1
Source of truth per product
2
Wire formats: JSON-LD and XML
30+
Schema fields covering cannabinoids, terpenes, testing, and compliance
CC BY 4.0
Open licensing for the specification
Built on

Standards you already trust.

COSTA extends widely adopted web standards rather than inventing new ones. If your team already publishes schema.org markup or GS1 feeds, you are most of the way there.

schema.org/ProductJSON-LDXML / XSDISO 8601GS1 GTINHealth Canada classesCC BY 4.0
Example

What a COSTA product looks like.

Below is an abridged JSON-LD block that a producer drops into the <head> of a product page. See the full specification for every field.

{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "OG Kush Dried Flower",
  "brand": { "@type": "Brand", "name": "Heritage Cannabis Co." },
  "sku": "HC-OGK-FLOWER-3.5G",
  "offers": {
    "@type": "Offer",
    "price": "12.99",
    "priceCurrency": "CAD",
    "availability": "https://schema.org/InStock"
  },
  "cannabis": {
    "@type": "CannabisProduct",
    "cannabinoidProfile": { "thcPercent": 18.5, "cbdPercent": 0.1 },
    "strain": { "name": "OG Kush", "type": "Hybrid" },
    "terpeneProfile": { "dominant": ["Myrcene", "Limonene", "Caryophyllene"] },
    "productForm": "Dried Flower",
    "packageSize": "3.5g",
    "classOfCannabis": "Cannabis (dried)",
    "healthCanadaLicenseNum": "LC0001234567",
    "testing": {
      "testedForContaminants": true,
      "testResultsUrl": "https://producer.ca/coa/og-kush-batch-0847.pdf"
    }
  }
}
Why adopt

Four reasons producers move to COSTA.

Cut catalog work

Maintain one canonical product record. Marketplaces, dispensaries, and aggregators read directly from your site.

Reach search and AI

JSON-LD on schema.org/Product unlocks rich results in search and gives LLM-powered shopping tools structured data they can rely on.

Stay compliant without rework

Required fields map cleanly to Health Canada classes, license numbers, batch and lot, COA URLs, and 19+ access requirements.

Own your data

COSTA is decentralized. There is no platform to lock you in, no fees, no gatekeeper between you and the channels reading your catalog.
See how to adopt →

Help shape v1.1.

The spec is open. File an issue, propose a field, or fork the repo. We are actively soliciting feedback from licensed producers, marketplaces, and provincial regulators.