IKEA Availability API

Everything about Availability

Operations 1

GET /availabilities/{classUnitType}/{classUnitCode} IKEA Get Product Availability with Child Items #

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/ikea-availability-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

ikea-availability-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: IKEA Sales Item Availability API
  summary: Unofficial API for fetching IKEA product availability information and packaging information
  description: 'This is an **unofficial** OpenAPI specification for the IKEA Sales Item API.

    Get information for items in different contexts.


    ## FAQ


    **Q: Why is this API called Sales Item?**


    **A:** That is what the API endpoint is called `api.salesitem.ingka.com` and what is being used in

    other API resources that were found.


    ## Authentication


    This API requires authentication, make sure to provide the required headers.


    ## Swagger UI


    This API can be tested using swagger-ui at [./swagger-ui.html](swagger-ui.html) as long as the

    CORS header `Access-Control-Allow-Origin` are configured as `*`.

    At the moment of writing this is only the case for the [IKEA Search API](../search/index.html).


    ## Other APIs


    * [IKEA Product Catalog API](../product-catalog/index.html)

    * [IKEA Search API](../search/index.html)

    * [IKEA Sales Item API](../sales-item/index.html)

    * [IKEA After Purchase Ordering API](../after-purchase-ordering/index.html)


    ## ⚠️ Disclaimer


    * This project is based on publicly available information and analysis of network requests.

    * It is not affiliated with, endorsed by, or supported by IKEA.

    * Endpoints, schemas, and behaviors may change at any time and may not reflect official or supported APIs.

    * Use this specification at your own risk.


    ### See also


    This section lists resources used during the creation of these APIs to exent and check validity of the API.

    These are not in any special order but useful as references.


    * [OpenAPI Spec for api.salesitem.ingka.com](https://github.com/shrabdut123/cart-multi-agent/blob/a10dc96ac7a1fd98701afebe2cde585e6d9a6a08/service_coordinator_agent/salesitem_api.yaml#L13) - Very verbose OpenAPI Spec with detailed resources referring to inside IKEA knowledge.

    * [DavisChappins/ikeaStockChecker](https://github.com/DavisChappins/ikeaStockChecker/blob/45fa92f26ac2b37d03c37eb34e0c618c4a8477e8/ikea_stock_scanner.py#L11) - Use of `api.salesitem.ingka.com` endpoint.

    * [Mirzaei81/ikeaScraper](https://github.com/Mirzaei81/ikeaScraper/blob/cdeef5c9fb76660b18a8e569d7213828ffe5f9d2/app.py#L74) - Use of `api.salesitem.ingka.com` endpoint.

    * [Ephigenia/ikea-availability-checker/postman/schemas/ikea-ingka-api.yaml](https://github.com/Ephigenia/ikea-availability-checker/blob/c7fe2f9bc8306c01783f8d22329d34ed76a582c9/postman/schemas/ikea-ingka-api.yaml) - This contains resources related to the `api.salesitem.ingka.com` (Sales Item API)

    * [vrslev/ikea-api-client/src/ikea_api/endpoints/search.py](https://github.com/vrslev/ikea-api-client/blob/ce70c8d743302a465931bdb6a9f7b0bc5c1d882f/src/ikea_api/endpoints/search.py#L14C1-L14C117) - Use of the Search API and some other endpoints.

    '
  version: 0.1.0
  license:
    name: MIT License
    url: https://opensource.org/licenses/MIT
  contact:
    name: Unofficial IKEA OpenAPI Maintainer
    url: https://github.com/idelsink/ikea-openapi
servers:
- url: https://api.salesitem.ingka.com
  description: IKEA Sales Item Availability API (Production Global)
security: []
tags:
- name: Availability
  description: Everything about Availability
paths:
  /availabilities/{classUnitType}/{classUnitCode}:
    get:
      summary: IKEA Get Product Availability with Child Items
      description: Returns availability information including child items and packages
      operationId: getProductAvailability
      tags:
      - Availability
      security:
      - X-Client-ID: []
      parameters:
      - $ref: '#/components/parameters/classUnitType'
      - $ref: '#/components/parameters/classUnitCode'
      - $ref: '#/components/parameters/itemNos'
      - $ref: '#/components/parameters/expand'
      responses:
        '200':
          description: Response with availability and errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AvailabilityEnvelope'
              examples:
                GetProductAvailability200Example:
                  summary: Default getProductAvailability 200 response
                  value:
                    availabilities:
                    - availableForCashCarry: true
                      availableForClickCollect: false
                      buyingOption:
                        clickCollect:
                          range:
                            inRange: true
                      childAvailabilities: []
                      classUnitKey:
                        classUnitCode: example
                        classUnitType: example
                      itemKey:
                        itemNo: example
                        itemType: example
                    salesLocations:
                    - childItems:
                      - itemKey: example
                        salesLocations: example
                      classUnitKey:
                        classUnitCode: example
                        classUnitType: example
                      itemKey:
                        itemNo: example
                        itemType: example
                    errors:
                    - code: 404
                      details:
                        classUnitCode: DE
                        classUnitType: RU
                        itemNo: s59047406
                      message: Not found
                    timestamp: '2025-09-10T14:23:33.956Z'
                    traceId: '4119683959736817039'
                  x-microcks-default: true
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AvailabilityError'
              examples:
                GetProductAvailability422Example:
                  summary: Default getProductAvailability 422 response
                  value:
                    code: 404
                    details:
                      classUnitCode: DE
                      classUnitType: RU
                      itemNo: s59047406
                    message: Not found
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    Availability:
      type: object
      description: Availability of a Product
      properties:
        availableForCashCarry:
          type: boolean
          example: true
        availableForClickCollect:
          type: boolean
          example: false
        buyingOption:
          type: object
          example:
            clickCollect:
              range:
                inRange: true
        childAvailabilities:
          type: array
          items:
            $ref: '#/components/schemas/Availability'
          example: []
        classUnitKey:
          $ref: '#/components/schemas/ClassUnitKey'
        itemKey:
          $ref: '#/components/schemas/ItemKey'
    AvailabilityError:
      type: object
      required:
      - code
      - message
      description: Error object describing the reason of failure
      properties:
        code:
          type: integer
          description: "Error Codes:\n  * `404` - Not found\n  * `405` - ClassUnitCode doesn't exist\n  * `602` - itemNos in query is required\n  * `604` - itemNos.`n` in query should be at least 8 chars long. Where `n` is the positional indicator for the parameter.\n  * `606` - expand.`n` in query should be one of [ChildItems Restocks StoresList SalesLocations DeliveryPrice CollectPrice DisplayLocations DeliveryTime FoodAvailabilities]. Where `n` is the positional indicator for the parameter.\n"
          example: 404
        details:
          type: object
          description: Additional error details. These change depending on the context of the query.
          example:
            classUnitCode: DE
            classUnitType: RU
            itemNo: s59047406
        message:
          type: string
          description: Error message indicating the failure
          example: Not found
    itemType:
      type: string
      description: 'Item type code

        '
      enum:
      - ART
      - SPR
      example: SPR
    expandOption:
      type: string
      description: "On the returned data, expand:\n  * `ChildItems` - Child items, e.g. multiple packages that are part of the parent package\n  * `Restocks` - Restock items\n  * `StoresList` - List of stores\n  * `SalesLocations` - Sale locations\n  * `DeliveryPrice` - Deliver Price\n  * `CollectPrice` - Collect Price\n  * `DisplayLocations` - Display locations\n  * `DeliveryTime` - Delivery time\n  * `FoodAvailabilities` - Food availability\n"
      enum:
      - ChildItems
      - Restocks
      - StoresList
      - SalesLocations
      - DeliveryPrice
      - CollectPrice
      - DisplayLocations
      - DeliveryTime
      - FoodAvailabilities
      example: ChildItems
    AvailabilityEnvelope:
      type: object
      description: Availability envelope containing availabilities, sales Sales Locations and errors.
      required:
      - availabilities
      - timestamp
      - traceId
      properties:
        availabilities:
          type: array
          description: List of product availabilities
          items:
            $ref: '#/components/schemas/Availability'
        salesLocations:
          type: array
          items:
            $ref: '#/components/schemas/SalesLocation'
        errors:
          type: array
          description: List of errors
          items:
            $ref: '#/components/schemas/AvailabilityError'
        timestamp:
          type: string
          description: ISO 8601 formatted timestamp with timezone
          format: date-time
          example: '2025-09-10T14:23:33.956Z'
        traceId:
          type: string
          description: Unique trace identifier for debugging and log correlation
          example: '4119683959736817039'
    SalesLocation:
      type: object
      description: null
      properties:
        childItems:
          type: array
          items:
            type: object
            properties:
              itemKey:
                $ref: '#/components/schemas/ItemKey'
              salesLocations:
                type: array
                items:
                  type: object
                  example:
                    aisleAndBin:
                      aisle: '06'
                      bin: '01'
                    division: SELF_SERVE
                    id: '060100'
                    recommendationRank: 1
                    type: AISLE_AND_BIN
        classUnitKey:
          $ref: '#/components/schemas/ClassUnitKey'
        itemKey:
          $ref: '#/components/schemas/ItemKey'
    productId:
      type: string
      description: Product identifier
      example: 00263850
    ClassUnitKey:
      type: object
      description: 'Class Unit Key gives context when invoking the AvailabilityClassifications API.

        '
      properties:
        classUnitCode:
          type: string
          minLength: 2
          maxLength: 5
          description: '`classUnitCode` is the unique identifier of a Class Unit when

            combined with a `classUnitType`.


            A valid `classUnitCode` always has a pattern like `^([A-Z]|[0-9]){2,5}$`.


            This can either be a:


            * **Retail Unit** - Retail Unit must be combined with a valid `classUnitCode`. For example, `SE` for Sweden or `DE` for Germany. A list of valid Class Units can be found [in CBD](https://iwww.cbdview.ikea.com/) (requires VPN or internal network).

            * **Store ID** - The 3-digit store ID. E.g. `066`.

            '
          examples:
          - GB
          - DE
          - '066'
        classUnitType:
          type: string
          description: "Class Unit Type:\n  * `RU` - Retail Unit - Retail Unit must be combined with a valid `classUnitCode`. For example, `SE` for Sweden or `DE` for Germany. A list of valid Retail Units can be found [in CBD](https://iwww.cbdview.ikea.com/) (requires VPN or internal network).\n  * `STO` - Store - The store availability for a given store\n"
          enum:
          - RU
          - STO
          example: RU
    ItemKey:
      type: object
      description: Item key (Product ID and Item type)
      properties:
        itemNo:
          $ref: '#/components/schemas/productId'
        itemType:
          $ref: '#/components/schemas/itemType'
  parameters:
    expand:
      name: expand
      in: query
      required: false
      style: form
      explode: false
      description: 'List of expandOption(s), see expandOption for values.

        '
      example:
      - ChildItems
      - SalesLocations
      schema:
        type: array
        items:
          $ref: '#/components/schemas/expandOption'
        minItems: 0
    itemNos:
      name: itemNos
      in: query
      required: true
      style: form
      explode: false
      description: Product identifier(s)
      example:
      - 00263850
      schema:
        type: array
        items:
          $ref: '#/components/schemas/productId'
        minItems: 1
    classUnitCode:
      name: classUnitCode
      in: path
      required: true
      description: '`classUnitCode` is the unique identifier of a Class Unit when

        combined with a `classUnitType`.


        A valid `classUnitCode` always has a pattern like `^([A-Z]|[0-9]){2,5}$`. Note that the Selling Range APIs are case insensitive when it comes to the `classUnitCode` path parameter and lower case is always internally converted to upper case.


        This can either be a:


        * **Retail Unit** - Retail Unit must be combined with a valid `classUnitCode`. For example, `SE` for Sweden or `DE` for Germany. A list of valid Class Units can be found [in CBD](https://iwww.cbdview.ikea.com/) (requires VPN or internal network).

        * **Store ID** - The 3-digit store ID. E.g. `066`.

        '
      schema:
        type: string
        minLength: 2
        maxLength: 5
      examples:
        lowerCaseGb:
          summary: Lower Case GB
          value: gb
        upperCaseGb:
          summary: Upper Case GB
          value: GB
        lowerCaseDe:
          summary: Lower Case DE
          value: de
        upperCaseDe:
          summary: Upper Case DE
          value: DE
        storeBerlin:
          summary: Store ID for Berlin
          value: '066'
    classUnitType:
      name: classUnitType
      in: path
      required: true
      description: "`classUnitType` must be a Retail Unit (`ru`). Or Store (`sto`). It is used together with\n`classUnitCode` to give context when invoking the AvailabilityClassifications API.\n\nUnit Type:\n  * `ru` - Retail Unit - Retail Unit must be combined with a valid `classUnitCode`. For example, `SE` for Sweden or `DE` for Germany. A list of valid Retail Units can be found [in CBD](https://iwww.cbdview.ikea.com/) (requires VPN or internal network).\n  * `sto` - Store - The store availability for a given store\n"
      schema:
        type: string
        enum:
        - ru
        - sto
        example: ru
      example: ru
  securitySchemes:
    X-Client-ID:
      type: apiKey
      in: header
      name: X-Client-ID
      description: 'Client specific identifier (Akamai API Gateway) required for API access


        ## Available Client IDs


        The following public client IDs are available:


        - `ef382663-a2a5-40d4-8afe-f0634821c0ed`

        - `b6c117e5-ae61-4ef5-b4cc-e0b1e37f0631`

        - `da465052-7912-43b2-82fa-9dc39cdccef8`



        ## How to Find Client IDs


        Visit any IKEA product page (e.g., [BILLY Bookcase](https://www.ikea.com/gb/en/p/billy-bookcase-white-00263850/))

        and inspect the network requests in browser DevTools. Look for API calls to `api.salesitem.ingka.com`

        and check the `X-Client-ID` header value.


        Alternatively, search for `ciaApiClientKey` in the page''s JavaScript bundles.

        '