For Developers

API

Every schema on this site is also available as JSON. No key, no rate limit, no registration — just two endpoints.

The data is generated at build time from the same files that render the pages, so the API can never disagree with what you see here. It currently covers 229 Shopware versions, from 5.5.7 to 6.7.13.1.

Responses are static JSON served with Access-Control-Allow-Origin: *, so you can fetch them straight from a browser.

GET /api/schemas.json

Lists every version SWDB knows about, oldest first — the same order the version picker uses. Around 60 KB. Start here if you want to discover what exists.

Response

[
  {
    "version": "6.7.13.1",
    "slug": "6_7_13_1",
    "major": 6,
    "minor": 7,
    "majorMinor": "6.7",
    "status": "available",
    "tableCount": 252,
    "url": "https://swdb.dev/version/6_7_13_1/",
    "schemaUrl": "https://swdb.dev/api/schemas/6_7_13_1.schema.json"
  }
]

Fields

FieldTypeMeaning
version string Release number as Shopware writes it, e.g. "6.7.12.2".
slug string The same version with dots replaced by underscores. Used in every URL.
major number Major version, 5 or 6.
minor number Minor version, e.g. 7.
majorMinor string Major and minor joined, e.g. "6.7". Handy for grouping.
status string "available" when a schema exists, "withdrawn" when Shopware pulled the release.
tableCount number | null Number of tables in the schema. null for withdrawn releases.
url string The browsable page for this version.
schemaUrl string | null The raw schema JSON. null for withdrawn releases.
withdrawn object Only on withdrawn entries: releasedAt, supersededBy and a reason.

Withdrawn releases

Shopware occasionally pulls a release after publishing it. Those versions are listed with status: "withdrawn" and carry no schema — there is none to extract, because no Docker image was ever built for them. Filter on status if you only want versions you can actually inspect.

{
  "version": "6.7.12.0",
  "slug": "6_7_12_0",
  "status": "withdrawn",
  "tableCount": null,
  "schemaUrl": null,
  "withdrawn": {
    "releasedAt": "2026-07-07",
    "supersededBy": "6.7.12.1",
    "reason": "Shopware withdrew this release shortly after publishing it…"
  }
}
GET /api/schemas/<slug>.schema.json

The complete schema of one release: every table with its columns, indexes and foreign key relations in both directions. Take slug from the index above, e.g. 6_7_13_1. These files are large — 1 to 3 MB each.

Response

[
  {
    "table": "product",
    "fields": [
      {
        "Field": "id",
        "Type": "binary(16)",
        "Null": false,
        "Key": "PRI",
        "Default": null,
        "Extra": ""
      }
    ],
    "indexes": [
      { "Index": "PRIMARY", "Columns": "id,version_id", "Unique": 1 }
    ],
    "relationsFromTable": [
      {
        "localField": "tax_id",
        "foreignSchema": "shopware",
        "foreignTable": "tax",
        "foreignField": "id"
      }
    ],
    "relationsToTable": []
  }
]

Fields

FieldTypeMeaning
table string Table name.
fields[] array Columns, in the order MySQL reports them.
fields[].Field string Column name.
fields[].Type string Column type as MySQL reports it, e.g. "varchar(255)".
fields[].Null boolean Whether the column accepts NULL.
fields[].Key string "PRI", "UNI", "MUL" or empty.
fields[].Default string | null Default value, if any.
fields[].Extra string Extra attributes, e.g. "auto_increment".
indexes[] array Index name, its columns as a comma-separated string, and whether it is unique.
relationsFromTable[] array Foreign keys this table declares, pointing outwards.
relationsToTable[] array Foreign keys other tables declare against this one.

These files are excluded in robots.txt. That keeps crawlers from spending their budget on multi-megabyte dumps; it is not a restriction on you.

Example
# every version SWDB knows about
curl -s https://swdb.dev/api/schemas.json

# the newest version's slug
curl -s https://swdb.dev/api/schemas.json \
  | jq -r '[.[] | select(.status == "available")] | last | .slug'

# that version's full schema
curl -s https://swdb.dev/api/schemas/6_7_13_1.schema.json \
  | jq '.[] | select(.table == "product") | .fields | length'

Using the data

Free to use, including commercially. Attribution is not required but is appreciated — a link back to swdb.dev helps other developers find it. The schemas are extracted from publicly available Shopware releases; SWDB is not affiliated with Shopware AG.

There is no rate limit because there is no server to overload: everything is static files behind a CDN-friendly cache. Please still fetch the large schema files once and cache them rather than on every page view.