StockX Catalog API

The StockX Catalog API provides a means for partners to search for catalog data, and request products to be added. Partners can search our Catalog to get StockX product and variant IDs for various purposes. Access to the Catalog Ingestion API is approved on a request-by-request basis.

OpenAPI Specification

stockx-catalog-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: StockX Public Batch Catalog API
  version: 2.0.0
  description: Manage StockX seller account using APIs
  license:
    name: MIT
  contact: {}
servers:
- url: https://api.stockx.com/v2
tags:
- name: Catalog
  description: The StockX Catalog API provides a means for partners to search for catalog data, and request products to be added. Partners can search our Catalog to get StockX product and variant IDs for various purposes. Access to the Catalog Ingestion API is approved on a request-by-request basis.
paths:
  /catalog/ingestion:
    post:
      operationId: Ingestion
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IngestionControllerResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
      description: <b>Seamlessly Integrate Catalog Data into Our Platform.</b><br>To create an ingestion job, you need to provide a set of catalog attributes. This API is asynchronous and will return an IngestionID that will require polling.
      summary: Post - Create a Catalog Ingestion Job (Beta)
      tags:
      - Catalog
      security:
      - api_key: []
        jwt: []
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              anyOf:
              - $ref: '#/components/schemas/CatalogIngestionInput'
              - {}
  /catalog/ingestion/{ingestionId}:
    get:
      operationId: IngestionItems
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetIngestionItemsReponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
      description: <b>Monitor Your Data Integration Status.</b><br>Once you create an ingestion job successfully, you need to poll the get catalog ingestion API to track the progress, whether the entire job or individual updates.
      summary: Get - Catalog Ingestion Status (Beta)
      tags:
      - Catalog
      security:
      - api_key: []
        jwt: []
      parameters:
      - description: Unique ID used to return the status of an ingestion job.
        in: path
        name: ingestionId
        required: true
        schema:
          type: string
      - description: The status of the ingestion job. In review, Completed, Rejected.
        in: query
        name: status
        required: false
        schema:
          type: string
  /catalog/products/{productId}:
    get:
      operationId: GetProduct
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
      description: Get product details API allows you to fetch details for a single product
      summary: Get single product
      tags:
      - Catalog
      security:
      - api_key: []
        jwt: []
      parameters:
      - description: Unique identifier for a product
        in: path
        name: productId
        required: true
        schema:
          type: string
  /catalog/products/{productId}/variants/{variantId}:
    get:
      operationId: GetVariant
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductVariantDetails'
        '400':
          description: Variant does not belong to the product.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
      description: 'Get variant details API allows you to fetch the details of a single variant for a given product.

        If the product id doesn''t contain the specified variant, a validation error will be returned.'
      summary: Get single product variant
      tags:
      - Catalog
      security:
      - api_key: []
        jwt: []
      parameters:
      - description: Unique identifier for a product
        in: path
        name: productId
        required: true
        schema:
          type: string
      - description: Unique identifier for a products variant
        in: path
        name: variantId
        required: true
        schema:
          type: string
  /catalog/products/{productId}/variants:
    get:
      operationId: GetVariants
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ProductVariant'
                type: array
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
      description: Get product variants API allows you to get all the different variants of a given product.
      summary: Get all product variants
      tags:
      - Catalog
      security:
      - api_key: []
        jwt: []
      parameters:
      - description: Unique identifier for a product
        in: path
        name: productId
        required: true
        schema:
          type: string
  /catalog/products/{productId}/variants/{variantId}/market-data:
    get:
      operationId: GetVariantMarketData
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VariantMarketDataResponse'
        '400':
          description: Variant does not belong to the product.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
      description: 'Get Market Data API allows you to obtain basic market data - the highest Bid and lowest Ask amount for a given variant.

        If the product id doesn''t contain the specified variant, a validation error will be returned.<br/>

        <b>Note:</b>

        <ul><li>We have deprecated the country param as the market data will now be based on your market.</li>

        <li>Based on your region, the response object may vary.</li>

        <li>Undercut protection is disabled. The system may automatically set a price (beat US) just below your own, even if you''re already the lowest, because it doesn''t consider your current ''Ask'' price.</li></ul>'
      summary: Get market data for a variant
      tags:
      - Catalog
      security:
      - api_key: []
        jwt: []
      parameters:
      - description: Unique identifier for a product
        in: path
        name: productId
        required: true
        schema:
          type: string
      - description: Unique identifier for a products variant
        in: path
        name: variantId
        required: true
        schema:
          type: string
      - description: 'The currency code this product is being listed in.<br><br>Available values: "AUD", "CAD", "CHF", "EUR", "GBP", "HKD", "JPY", "KRW", "MXN", "NZD", "SGD", "USD"'
        in: query
        name: currencyCode
        required: false
        schema:
          $ref: '#/components/schemas/CurrencyCode'
      - description: ISO Alpha-2 code representing the country you need the market data for. If not provided, will default to your country.
        in: query
        name: country
        required: false
        schema:
          type: string
        deprecated: true
  /catalog/products/{productId}/market-data:
    get:
      operationId: GetProductMarketData
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/VariantMarketDataResponse'
                type: array
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
      description: 'Get Market Data API allows you to obtain basic market data - the highest Bid and lowest Ask amount for all variants of given product.

        You may notice discrepancies in the values for sellFasterAmount and earnMoreAmount between this and the ‘Get market data for a variant` API. This is because this API does not take into account any live asks you currently have for each individual variant, while the ''Get market data for a variant’ API does.<br/>

        <b>Note:</b>

        <li>Based on your region, the response object may vary.</li>

        <li>Undercut protection is disabled. The system may automatically set a price (beat US) just below your own, even if you''re already the lowest, because it doesn''t consider your current ''Ask'' price.</li></ul>'
      summary: Get market data for a product
      tags:
      - Catalog
      security:
      - api_key: []
        jwt: []
      parameters:
      - description: Unique identifier for a product
        in: path
        name: productId
        required: true
        schema:
          type: string
      - description: 'The currency code this product is being listed in.<br><br>Available values: "AUD", "CAD", "CHF", "EUR", "GBP", "HKD", "JPY", "KRW", "MXN", "NZD", "SGD", "USD"'
        in: query
        name: currencyCode
        required: false
        schema:
          $ref: '#/components/schemas/CurrencyCode'
  /catalog/products/variants/gtins/{gtin}:
    get:
      operationId: GetVariantsByGtin
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductVariantDetails'
        '400':
          description: Invalid GTIN
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
      description: 'Fetches details for a single product variant using its GTIN (Global Trade Item Number).

        If the gtin id is invalid, a validation error will be thrown.'
      summary: Retrieve product variant details by GTIN
      tags:
      - Catalog
      security:
      - api_key: []
        jwt: []
      parameters:
      - description: (Global Trade Item Number ) Unique identifier for a product variant
        in: path
        name: gtin
        required: true
        schema:
          type: string
        example: 194817794556
  /catalog/search:
    get:
      operationId: Search
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Search'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiError'
      description: 'Search catalog API allows you to search the StockX catalog via freeform text, GTIN (UPC, EAN, ITF-14) or styleId.

        The output is a paginated list of products that match the search term provided in the API call.'
      summary: Search catalog
      tags:
      - Catalog
      security:
      - api_key: []
        jwt: []
      parameters:
      - description: Specifies a keyword, GTIN (UPC, EAN, ITF-14) or styleId string to search for products
        in: query
        name: query
        required: true
        schema:
          type: string
          minLength: 1
          maxLength: 100
        examples:
          Example 1:
            value: nike
          Example 2:
            value: '194817794556'
      - description: Requested page number. By default, the page number starts at 1.
        in: query
        name: pageNumber
        required: false
        schema:
          format: int32
          type: integer
          minimum: 1
        example: 1
      - description: The number of products to return. By default, the page size starts at 1.
        in: query
        name: pageSize
        required: false
        schema:
          format: int32
          type: integer
          minimum: 1
          maximum: 50
        example: 10
components:
  schemas:
    SearchProduct:
      description: Product information returned in search results
      properties:
        productId:
          type: string
          description: Unique identifier for a product
          example: bf364c53-eb77-4522-955c-6a6ce952cc6f
        urlKey:
          type: string
          description: The product name
          example: purple-hand-bag-leather
        styleId:
          type: string
          nullable: true
          description: ID of product style
          example: BY9109
        productType:
          type: string
          description: The type of product categories that are available on StockX
          example: handbags
        title:
          type: string
          nullable: true
          description: A string that uniquely identifies the product name.
          example: Gucci Duchessa Boston Bag
        brand:
          type: string
          nullable: true
          description: Brand of the product
          example: Nike
        productAttributes:
          properties:
            gender:
              type: string
              nullable: true
              description: Gender targeted product
              example: women
            season:
              type: string
              nullable: true
              description: The season the product was released
              example: SS21
            releaseDate:
              type: string
              nullable: true
              description: The date the product was released
              example: '2017-09-14'
            retailPrice:
              type: number
              format: double
              nullable: true
              description: The retail price of the product.
              example: 456
            colorway:
              type: string
              nullable: true
              description: The combinations of colors in which the product is designed
              example: String/Black-Villain Red-Neptune Green
            color:
              type: string
              nullable: true
              description: Color of product
              example: purple
          required:
          - gender
          - season
          - releaseDate
          - retailPrice
          - colorway
          - color
          type: object
          description: Object containing the attributes of the product.
      required:
      - productId
      - urlKey
      - styleId
      - productType
      - title
      - brand
      - productAttributes
      type: object
      additionalProperties: false
    INGESTION_ITEM_STATUS:
      enum:
      - In Review
      - Completed
      - Rejected
      type: string
    GetIngestionItemsReponse:
      properties:
        items:
          items:
            $ref: '#/components/schemas/GetIngestionItem'
          type: array
      required:
      - items
      type: object
      additionalProperties: false
    VariantSizeConversion:
      properties:
        size:
          type: string
          nullable: true
          description: The size of this size conversion
          example: '5'
        type:
          type: string
          nullable: true
          description: The type of the size conversion/chart
          example: us m
      required:
      - size
      - type
      type: object
      additionalProperties: false
    CurrencyCode:
      description: Currency codes we support at StockX
      enum:
      - AUD
      - BRL
      - CAD
      - CHF
      - CLP
      - CNY
      - DKK
      - EUR
      - GBP
      - HKD
      - HUF
      - IDR
      - ILS
      - JPY
      - KRW
      - KWD
      - MOP
      - MXN
      - MYR
      - NOK
      - NZD
      - PEN
      - PHP
      - PLN
      - SEK
      - SGD
      - THB
      - TWD
      - USD
      - VND
      type: string
    ProductVariant:
      description: Variant information
      properties:
        productId:
          type: string
          description: Unique identifier for a product
          example: bf364c53-eb77-4522-955c-6a6ce952cc6f
        variantId:
          type: string
          description: Unique identifier for a products variant
          example: 586c3334-4dac-4ee0-bce3-eea845581a08
        variantName:
          type: string
          description: SKU of the variant
          example: Auston-Matthews-2016-Upper-Deck-Series-1-Young-Guns-Rookie-201:0
        variantValue:
          type: string
          nullable: true
          description: Variant's value
          example: PSA 10
        sizeChart:
          properties:
            availableConversions:
              items:
                $ref: '#/components/schemas/VariantSizeConversion'
              type: array
              description: The available size conversions for this variant
            defaultConversion:
              allOf:
              - $ref: '#/components/schemas/VariantSizeConversion'
              nullable: true
              description: The default sizing information for this variant
          required:
          - availableConversions
          - defaultConversion
          type: object
          description: Size chart related information for this variant
        gtins:
          items:
            $ref: '#/components/schemas/VariantGtinDetails'
          type: array
          description: The GTINs associated with this variant
        isFlexEligible:
          type: boolean
          description: Indicates if the variant is eligible for flex fulfillment
          example: true
        isDirectEligible:
          type: boolean
          description: Indicates if the variant is eligible for direct fulfillment
          example: false
      required:
      - productId
      - variantId
      - variantName
      - variantValue
      - sizeChart
      type: object
      additionalProperties: false
    IngestionSneakersShoesRequestInput:
      properties:
        category:
          $ref: '#/components/schemas/PRODUCT_CATEGORIES'
          description: 'A string that specifies product category. Valid values: "sneakers, shoes, apparel, accessories, collectibles, electronics, trading cards"'
          example: shoes
        productTitle:
          type: string
          description: A string that uniquely identifies the name of the product.
          example: Jordan 4 retro
        brand:
          type: string
          description: The brand of the product.
        productImages:
          items:
            type: string
          type: array
          description: Public facing links to the products image.
        variants:
          items:
            type: string
          type: array
          description: The product variants available to sell. For example, for sneakers, each different size is a different variant or for electronics like iPhone, each different storage capacity is a different variant.
        retailPrice:
          type: string
          description: The products retail price.
        releaseDate:
          type: string
          description: The products release date.
        countryOfOrigin:
          type: string
          description: The country in which the product was manufactured in ISO Alpha 2 Format.
          example: US
        partnerProductId:
          type: string
          description: An external ID that partners will use to reference an internal StockX catalog item if approved. Note that this is the higher level product id, not the variantId.
        tags:
          items:
            type: string
          type: array
          description: A list of attributes or short descriptors associated with the product.
        colorway:
          type: string
          description: The combinations of colors in which the product is designed. Ex VIOLET ORE/MEDIUM ASH-BLACK-MUSLIN-BURGUNDY CRUSH.
        gtin:
          type: string
          description: The products global trade item number. Length must be 8, 12, 13, 14 or 18.
        gender:
          type: string
          description: The products targeted gender.
        styleCode:
          type: string
          description: The Style Code for the product  @example "M990BK5"
        productDescription:
          type: string
          description: Open text field used for describing the product to the customer.
        dimensions:
          type: string
          description: A string of the dimensions of the product. @example "2/"x4/"x6/""
        weight:
          type: string
          description: The weight of the product.
        material:
          type: string
          description: Brand listed materials.
        productURL:
          type: string
          description: Official third party product URL.
      required:
      - category
      - productTitle
      - brand
      - productImages
      - variants
      - retailPrice
      - releaseDate
      - countryOfOrigin
      - colorway
      - gtin
      - gender
      - styleCode
      type: object
      additionalProperties: false
    ProductCode:
      properties:
        code:
          type: string
          description: Unique code that identifies the product.
          example: Y0133892
        name:
          $ref: '#/components/schemas/PRODUCT_CODE_NAME'
          description: The type of product code
          example: serial number
      required:
      - code
      - name
      type: object
      additionalProperties: false
    IngestionCollectiblesRequestInput:
      properties:
        category:
          $ref: '#/components/schemas/PRODUCT_CATEGORIES'
          description: 'A string that specifies product category. Valid values: "sneakers, shoes, apparel, accessories, collectibles, electronics, trading cards"'
          example: shoes
        productTitle:
          type: string
          description: A string that uniquely identifies the name of the product.
          example: Jordan 4 retro
        brand:
          type: string
          description: The brand of the product.
        productImages:
          items:
            type: string
          type: array
          description: Public facing links to the products image.
        variants:
          items:
            type: string
          type: array
          description: The product variants available to sell. For example, for sneakers, each different size is a different variant or for electronics like iPhone, each different storage capacity is a different variant.
        retailPrice:
          type: string
          description: The products retail price.
        releaseDate:
          type: string
          description: The products release date.
        countryOfOrigin:
          type: string
          description: The country in which the product was manufactured in ISO Alpha 2 Format.
          example: US
        partnerProductId:
          type: string
          description: An external ID that partners will use to reference an internal StockX catalog item if approved. Note that this is the higher level product id, not the variantId.
        tags:
          items:
            type: string
          type: array
          description: A list of attributes or short descriptors associated with the product.
        colorway:
          type: string
          description: The combinations of colors in which the product is designed.
          example: VIOLET ORE/MEDIUM ASH-BLACK-MUSLIN-BURGUNDY CRUSH
        styleCode:
          type: string
          description: The Style Code for the product  @example "M990BK5"
        productDescription:
          type: string
          description: Open text field used for describing the product to the customer.
        dimensions:
          type: string
          description: A string of the dimensions of the product.
        weight:
          type: string
          description: The weight of the product.
        productURL:
          type: string
          description: Official third party product URL.
        productCode:
          $ref: '#/components/schemas/ProductCode'
          description: An object containing Unique code that identifies the product and the type of the code
      required:
      - category
      - productTitle
      - brand
      - productImages
      - variants
      - retailPrice
      - releaseDate
      - countryOfOrigin
      type: object
      additionalProperties: false
    PublicApiError:
      properties:
        statusCode:
          $ref: '#/components/schemas/HttpStatusCodeLiteral'
          description: The error status code
          example: 400
        message:
          type: string
          description: The error message
          example: The request did not succeed 😭
      required:
      - statusCode
      - message
      type: object
      additionalProperties: false
    HttpStatusCodeLiteral:
      type: number
      enum:
      - 100
      - 101
      - 102
      - 200
      - 201
      - 202
      - 203
      - 204
      - 205
      - 206
      - 207
      - 208
      - 226
      - 300
      - 301
      - 302
      - 303
      - 304
      - 305
      - 307
      - 308
      - 400
      - 401
      - 402
      - 403
      - 404
      - 405
      - 406
      - 407
      - 408
      - 409
      - 410
      - 411
      - 412
      - 413
      - 414
      - 415
      - 416
      - 417
      - 418
      - 422
      - 423
      - 424
      - 426
      - 428
      - 429
      - 431
      - 451
      - 500
      - 501
      - 502
      - 503
      - 504
      - 505
      - 506
      - 507
      - 508
      - 510
      - 511
    VariantMarketDataResponse:
      properties:
        productId:
          type: string
          description: Unique identifier for this product
          example: 35d76ac8-a112-4d75-b44f-c8ef04a87c93
        variantId:
          type: string
          description: Unique identifier for this product variant
          example: 35d76ac8-a112-4d75-b44f-c8ef04a87c93
        currencyCode:
          type: string
          description: 'The currency code. If not provided, it will default to USD.  Only valid currencies supported on stockx.com are supported via API.<br><br>Available values: "AUD", "CAD", "CHF", "EUR", "GBP", "HKD", "JPY", "KRW", "MXN", "NZD", "SGD", "USD"'
          example: USD
        lowestAskAmount:
          type: string
          nullable: true
          description: The lowest ask for the product variant listed in the market.
          example: '100'
        highestBidAmount:
          type: string
          nullable: true
          description: The highest bid for the product variant listed in the market.
          example: '150'
        sellFasterAmount:
          type: string
          nullable: true
          description: The price you have to list at, inclusive of duties and taxes, to become the lowest Ask to buyers in the United States, and also includes checks to recommend a competitive price compared to recent global sales.
          example: '150'
        earnMoreAmount:
          type: string
          nullable: true
          description: The price you have to list at, inclusive of duties and taxes, that maximizes your earnings by staying competitive with recent global sales.
          example: '151'
        flexLowestAskAmount:
          type: string
          nullable: true
          description: The Flex program's lowest ask for the product variant listed in the flex market.
          example: '100'
        standardMarketData:
          properties:
            beatUS:
              type: string
              nullable: true
              description: The price you have to list at, to beat the lowest ask in the US for standard market.
              example: '152'
            earnMore:
              type: string
              nullable: true
              description: The price you have to list at, inclusive of duties and taxes, that maximizes your earnings by staying competitive with recent global sales in standard market.
              example: '151'
            sellFaster:
              type: string
              nullable: true
              description: The price you have to list at, inclusive of duties and taxes, to become the lowest Ask to buyers in the United States for standard market, and also includes checks to recommend a competitive price compared to recent global sales.
              example: '150'
            highestBidAmount:
              type: string
              nullable: true
              description: The highest bid for the product variant listed in the standard market.
              example: '150'
            lowestAsk:
              type: string
              nullable: true
              description: The lowest ask for the product variant listed in the standard market.
              example: '100'
          type: object
          description: The standard market data for the p

# --- truncated at 32 KB (54 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/stockx/refs/heads/main/openapi/stockx-catalog-api-openapi.yml