Shopware Product API

Create, read, update, and delete products and variants

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/shopware-product-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

shopware-product-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Shopware Admin Account Product API
  version: 6.7.9999999-dev
  description: The Shopware Admin API provides programmatic access to all back-office and administrative operations including product management, order processing, customer data, indexing, and configuration. It uses OAuth 2.0 authentication and covers 658 endpoints across the full Shopware data model.
  contact:
    name: Shopware Developer Documentation
    url: https://developer.shopware.com/docs/concepts/api/admin-api.html
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
- url: https://{shopDomain}/api
  description: Self-hosted or SaaS Shopware instance Admin API
  variables:
    shopDomain:
      default: your-shop.example.com
      description: Hostname of the Shopware instance
security:
- oAuth2:
  - write:all
tags:
- name: Product
  description: Create, read, update, and delete products and variants
paths:
  /product:
    get:
      operationId: listProducts
      summary: List products
      description: Returns a paginated list of products with basic information.
      tags:
      - Product
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/page'
      responses:
        '200':
          description: Paginated list of products
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createProduct
      summary: Create a product
      description: Creates a new product resource.
      tags:
      - Product
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductCreate'
      responses:
        '200':
          description: Product created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /product/{id}:
    get:
      operationId: getProduct
      summary: Get a product
      description: Returns a single product by its identifier.
      tags:
      - Product
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          pattern: ^[0-9a-f]{32}$
        description: 32-character hex product ID
      responses:
        '200':
          description: Product detail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductResponse'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateProduct
      summary: Update a product
      description: Partially updates a product resource.
      tags:
      - Product
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          pattern: ^[0-9a-f]{32}$
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductCreate'
      responses:
        '200':
          description: Product updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductResponse'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteProduct
      summary: Delete a product
      description: Deletes a product by ID.
      tags:
      - Product
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          pattern: ^[0-9a-f]{32}$
      responses:
        '204':
          description: Product deleted
        '404':
          $ref: '#/components/responses/NotFound'
  /search/product:
    post:
      operationId: searchProducts
      summary: Search products
      description: Full-featured product search with filter, sort, aggregation support.
      tags:
      - Product
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchCriteria'
      responses:
        '200':
          description: Search results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductListResponse'
  /product/{productId}:
    get:
      operationId: getStoreProduct
      summary: Get a product
      description: Returns a single product by ID including all variants and media.
      tags:
      - Product
      parameters:
      - name: productId
        in: path
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/SwContextToken'
      responses:
        '200':
          description: Product detail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductDetailResponse'
        '404':
          description: Product not found
components:
  schemas:
    Price:
      type: object
      description: Currency-specific price entry
      required:
      - currencyId
      - gross
      - net
      - linked
      properties:
        currencyId:
          type: string
          pattern: ^[0-9a-f]{32}$
        gross:
          type: number
          format: float
          description: Gross price (including tax)
        net:
          type: number
          format: float
          description: Net price (excluding tax)
        linked:
          type: boolean
          description: If true, net price is calculated from gross automatically
        listPrice:
          type: object
          description: Original / strike-through price
          properties:
            gross:
              type: number
              format: float
            net:
              type: number
              format: float
            linked:
              type: boolean
    SearchCriteria:
      type: object
      description: Shopware DAL search criteria
      properties:
        page:
          type: integer
          default: 1
        limit:
          type: integer
          default: 25
        filter:
          type: array
          items:
            type: object
        sort:
          type: array
          items:
            type: object
            properties:
              field:
                type: string
              order:
                type: string
                enum:
                - ASC
                - DESC
        aggregations:
          type: array
          items:
            type: object
        term:
          type: string
          description: Full-text search term
        includes:
          type: object
          description: Sparse fieldsets per entity
    ProductDetailResponse:
      type: object
      properties:
        product:
          $ref: '#/components/schemas/Product_2'
        configurator:
          type: array
          items:
            type: object
    Product_2:
      type: object
      properties:
        id:
          type: string
        productNumber:
          type: string
        name:
          type: string
        description:
          type: string
        active:
          type: boolean
        cover:
          type: object
          properties:
            id:
              type: string
            url:
              type: string
        calculatedPrice:
          $ref: '#/components/schemas/CalculatedPrice'
        calculatedListingPrice:
          type: object
        availableStock:
          type: integer
    CalculatedPrice:
      type: object
      properties:
        unitPrice:
          type: number
          format: float
        totalPrice:
          type: number
          format: float
        quantity:
          type: integer
        calculatedTaxes:
          type: array
          items:
            type: object
            properties:
              tax:
                type: number
              taxRate:
                type: number
              price:
                type: number
        taxRules:
          type: array
          items:
            type: object
    Product:
      type: object
      description: Shopware product entity (since version 6.0.0.0)
      required:
      - id
      - taxId
      - price
      - productNumber
      - stock
      - name
      properties:
        id:
          type: string
          pattern: ^[0-9a-f]{32}$
          description: Unique identity of the product
        versionId:
          type: string
          pattern: ^[0-9a-f]{32}$
          description: Unique identity of the product version
        parentId:
          type: string
          pattern: ^[0-9a-f]{32}$
          description: Unique identity of the parent product (for variants)
        manufacturerId:
          type: string
          pattern: ^[0-9a-f]{32}$
          description: Unique identity of the manufacturer
        taxId:
          type: string
          pattern: ^[0-9a-f]{32}$
          description: Unique identity of tax
        productNumber:
          type: string
          description: SKU / unique product number
        stock:
          type: integer
          format: int64
          description: Available stock quantity
        name:
          type: string
          description: Product name (translatable)
        description:
          type: string
          description: Long product description (HTML allowed, translatable)
        price:
          type: array
          items:
            $ref: '#/components/schemas/Price'
          description: Currency-specific prices
        active:
          type: boolean
          description: Whether the product is visible in the storefront
        ean:
          type: string
          description: EAN barcode
        markAsTopseller:
          type: boolean
          description: Flag to highlight as a bestseller
        weight:
          type: number
          format: float
          description: Product weight in kg
        width:
          type: number
          format: float
          description: Product width in mm
        height:
          type: number
          format: float
          description: Product height in mm
        length:
          type: number
          format: float
          description: Product length in mm
        isCloseout:
          type: boolean
          description: If true, product cannot be bought when out of stock
        createdAt:
          type: string
          format: date-time
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          readOnly: true
    ErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              status:
                type: string
              title:
                type: string
              detail:
                type: string
    ProductCreate:
      type: object
      description: Payload for creating or updating a product
      required:
      - taxId
      - price
      - productNumber
      - stock
      - name
      properties:
        taxId:
          type: string
          pattern: ^[0-9a-f]{32}$
        productNumber:
          type: string
        stock:
          type: integer
          format: int64
        name:
          type: string
        description:
          type: string
        price:
          type: array
          items:
            $ref: '#/components/schemas/Price'
        active:
          type: boolean
          default: true
    ProductResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Product'
    ProductListResponse:
      type: object
      properties:
        total:
          type: integer
        data:
          type: array
          items:
            $ref: '#/components/schemas/Product'
  responses:
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Authentication required or token expired
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: Validation errors in the request body
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  parameters:
    SwContextToken:
      name: sw-context-token
      in: header
      description: Customer session context token
      schema:
        type: string
    limit:
      name: limit
      in: query
      description: Maximum number of resources per page (default 25)
      schema:
        type: integer
        default: 25
        maximum: 500
    page:
      name: page
      in: query
      description: Page number (1-based)
      schema:
        type: integer
        default: 1
  securitySchemes:
    oAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: /api/oauth/token
          scopes:
            write:all: Full write access to all Admin API resources
        password:
          tokenUrl: /api/oauth/token
          scopes:
            write:all: Full write access to all Admin API resources
externalDocs:
  description: Full interactive specification (Stoplight)
  url: https://shopware.stoplight.io/docs/admin-api