> ## Documentation Index
> Fetch the complete documentation index at: https://socialquery.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Klarna Store Products

> Native store products after an independent regional store-identity check. Exact decimal price bounds filter coarse native candidate pages; a short or empty page can still have a cursor. Source candidate totals and consumed-row counts remain explicit.

Returns native product cards for a verified store UUID. Default page size is 25. Products preserve native IDs, titles, regional prices, ratings, category and safe image paths. Stock flags and prices are source snapshots; they are not merchant checkout quotes. UK, Swedish and Danish product links retain legacy source paths with null absolute URLs.

All seven `sort_by` values map to native sorting: `popularity`, `price_low`, `price_high`, `trend`, `name`, `rating`, `price_drop`. Ranking-based sorts are not recomputed locally; displayed average ratings need not be monotonic.

`price_range` accepts exact nonnegative decimal bounds, such as `50-100`, `50.25-100.75`, `50-` or `-100`, in regional currency. The source only applies whole-unit ranges and can include rounded boundary prices outside those bounds. SocialQuery requests a coarse enclosing range, validates the source filter echo, then excludes prices outside the exact requested bounds.

Consequently, **a price-filtered page may be short or empty and still have a next cursor**. Follow `next_cursor` until null. `source_returned_count` counts consumed native candidates; `returned_count` counts exact matches on this page. `total_scope: source_price_candidates` makes clear that `total` is not an exact-match count. Cursor offsets and continuity anchors include excluded candidates, preventing duplicate or skipped source rows.

A fresh nonempty page costs **5 credits**; an empty filtered page costs zero. Each call uses two source requests, or three for size-100 cursors.

`size` is 1–100; `offset` is 0–10,000. Pagination uses native source offsets. A total at 10,000 is marked `total_is_lower_bound: true`, because the source may have more rows. `pagination_capped` explicitly marks the adapter ceiling, not source exhaustion.

Send `next_cursor` verbatim for subsequent pages. Request settings are restored when omitted and must match if supplied. Product calls must still include `id`. Cursors expire after one hour and check the preceding source row, so changed source order can require restarting. Size-100 cursor calls verify that row in a separate one-row request; smaller pages include and remove the anchor. This is not a frozen snapshot or a promise of complete catalog retrieval.

All 13 catalog regions are supported: `usa`, `uk`, `germany`, `sweden`, `france`, `italy`, `spain`, `netherlands`, `austria`, `ireland`, `norway`, `finland` and `denmark`. Store IDs are regional UUIDs; obtain them from the corresponding store directory. An independent native identity lookup makes unknown store IDs return 404 instead of a misleading empty listing. Store links absent in the source remain null.

Access is anonymous and does not create accounts, cards, financing agreements or purchases. Public one-time-card URLs are returned as metadata only; personal eligibility is not inferred and those links are never opened by the adapter. Cashback values are **basis points** (350 means 3.5%), with the original source label retained. Offers and prices can change.

Calls share the Klarna 20-source-request/minute ceiling, with a 25-second total timeout and 2 MiB limit per source response. Failures, empty results, cache hits and successful idempotent replays have no net charge.


## OpenAPI

````yaml GET /klarna/store/products
openapi: 3.1.0
info:
  title: SocialQuery API
  version: '2026-10-09'
  description: >-
    Documented requests for public-source records. Inspect accepted inputs and
    credit amounts, then verify the selected operation before integrating
    preview coverage.
servers:
  - url: https://socialquery.dev/v1
security:
  - apiKey: []
paths:
  /klarna/store/products:
    get:
      tags:
        - Klarna
      summary: Klarna Store Products
      description: >-
        Native store products after an independent regional store-identity
        check. Exact decimal price bounds filter coarse native candidate pages;
        a short or empty page can still have a cursor. Source candidate totals
        and consumed-row counts remain explicit.
      operationId: get_klarna_store_products
      parameters:
        - name: id
          in: query
          required: true
          example: 09f4d635-0452-4f63-9455-c45420d95669
          schema:
            type: string
            pattern: ^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$
          description: >-
            Store UUID from the regional store directory. The store must exist
            in this region.
        - name: region
          in: query
          required: false
          schema:
            type: string
            enum:
              - usa
              - uk
              - germany
              - sweden
              - france
              - italy
              - spain
              - netherlands
              - austria
              - ireland
              - norway
              - finland
              - denmark
        - name: size
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
          description: >-
            Native candidate page size. Product price filtering can reduce
            returned_count; consult source_returned_count and next_cursor.
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            maximum: 10000
            default: 0
          description: >-
            Native candidate-row offset, bounded at 10,000. Prefer the returned
            cursor for continuity checking.
        - name: sort_by
          in: query
          required: false
          schema:
            type: string
            enum:
              - popularity
              - price_low
              - price_high
              - trend
              - name
              - rating
              - price_drop
        - name: price_range
          in: query
          required: false
          schema:
            type: string
          description: >-
            Exact regional price bounds, such as 50-100, 50.25-100.75, 50- or
            -100. The native service uses coarse whole-unit ranges; SocialQuery
            validates their application then filters each candidate page to the
            exact requested bounds. A page may be short/empty while next_cursor
            remains; total counts candidates.
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          description: >-
            Return data.next_cursor verbatim. For products, also supply id.
            Omitted settings are restored; supplied settings must match. Expires
            after one hour and checks the preceding source row. Offset refers to
            native candidates, including price-excluded rows.
        - name: Cache-Control
          in: header
          required: false
          example: no-cache
          schema:
            type: string
        - name: Idempotency-Key
          in: header
          required: false
          example: 7a5e1b4c-2d8f-4a3b-9c1e-6e8b4d2a1f3c
          schema:
            type: string
        - name: X-Max-Credits
          in: header
          required: false
          description: >-
            Optional nonnegative integer cap on the maximum request hold. A live
            request whose hold exceeds this cap returns 422
            CREDIT_BUDGET_EXCEEDED before spending. Metered holds use the
            requested limit; cache hits and successful idempotent replays cost
            zero.
          schema:
            type: integer
            minimum: 0
      responses:
        '200':
          description: >-
            Native store products after an independent regional store-identity
            check. Exact decimal price bounds filter coarse native candidate
            pages; a short or empty page can still have a cursor. Source
            candidate totals and consumed-row counts remain explicit.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/SocialQueryResponse'
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          returned_count:
                            type: integer
                            minimum: 0
                          region:
                            type: string
                          country_code:
                            type: string
                          source:
                            type: string
                          coverage_note:
                            type: string
                          items:
                            type: array
                            items:
                              type: object
                              properties:
                                product:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    title:
                                      type: string
                                    source_path:
                                      type:
                                        - string
                                        - 'null'
                                    url:
                                      type:
                                        - string
                                        - 'null'
                                    description:
                                      type:
                                        - string
                                        - 'null'
                                    category:
                                      anyOf:
                                        - type: object
                                          properties:
                                            id:
                                              type:
                                                - string
                                                - 'null'
                                            name:
                                              type: string
                                            source_path:
                                              type:
                                                - string
                                                - 'null'
                                            url:
                                              type:
                                                - string
                                                - 'null'
                                          required:
                                            - id
                                            - name
                                            - source_path
                                            - url
                                        - type: 'null'
                                    price:
                                      type: object
                                      properties:
                                        current:
                                          type:
                                            - number
                                            - 'null'
                                          minimum: 0
                                        currency:
                                          type: string
                                      required:
                                        - current
                                        - currency
                                    rating:
                                      type: object
                                      properties:
                                        average:
                                          type:
                                            - number
                                            - 'null'
                                          minimum: 0
                                        count:
                                          type:
                                            - integer
                                            - 'null'
                                          minimum: 0
                                      required:
                                        - average
                                        - count
                                    image_urls:
                                      type: array
                                      items:
                                        type: string
                                    availability:
                                      type:
                                        - string
                                        - 'null'
                                      enum:
                                        - in_stock
                                        - out_of_stock
                                        - null
                                    condition:
                                      type:
                                        - string
                                        - 'null'
                                  required:
                                    - id
                                    - title
                                    - source_path
                                    - url
                                    - description
                                    - category
                                    - price
                                    - rating
                                    - image_urls
                                    - availability
                                    - condition
                              required:
                                - product
                          source_returned_count:
                            type: integer
                            minimum: 0
                          total:
                            type: integer
                            minimum: 0
                          total_scope:
                            type: string
                            enum:
                              - directory_stores
                              - store_products
                              - source_price_candidates
                          total_is_lower_bound:
                            type: boolean
                          size:
                            type: integer
                            minimum: 1
                            maximum: 100
                          offset:
                            type: integer
                            minimum: 0
                          next_cursor:
                            type:
                              - string
                              - 'null'
                          pagination_capped:
                            type: boolean
                          store:
                            type: object
                            properties:
                              id:
                                type: string
                              name:
                                type: string
                              krn:
                                type: string
                              url:
                                type:
                                  - string
                                  - 'null'
                              category:
                                type:
                                  - string
                                  - 'null'
                              image_urls:
                                type: array
                                items:
                                  type: string
                              klarna_at_checkout:
                                type: boolean
                              one_time_card_url:
                                type:
                                  - string
                                  - 'null'
                              cashback:
                                anyOf:
                                  - type: 'null'
                                  - type: object
                                    properties:
                                      basis_points:
                                        type: number
                                      label:
                                        type: string
                                      up_to:
                                        type:
                                          - boolean
                                          - 'null'
                                    required:
                                      - basis_points
                                      - label
                                      - up_to
                            required:
                              - id
                              - name
                              - krn
                              - url
                              - category
                              - image_urls
                              - klarna_at_checkout
                              - one_time_card_url
                              - cashback
                          applied_filters:
                            type: object
                            properties:
                              sort_by:
                                type: string
                              price_range:
                                type:
                                  - string
                                  - 'null'
                            required:
                              - sort_by
                              - price_range
                        required:
                          - returned_count
                          - region
                          - country_code
                          - source
                          - coverage_note
                          - items
                          - source_returned_count
                          - total
                          - total_scope
                          - total_is_lower_bound
                          - size
                          - offset
                          - next_cursor
                          - pagination_capped
                          - store
                          - applied_filters
        '400':
          $ref: '#/components/responses/Error400'
        '401':
          $ref: '#/components/responses/Error401'
        '402':
          $ref: '#/components/responses/Error402'
        '403':
          $ref: '#/components/responses/Error403'
        '404':
          $ref: '#/components/responses/Error404'
        '405':
          $ref: '#/components/responses/Error405'
        '409':
          $ref: '#/components/responses/Error409'
        '422':
          $ref: '#/components/responses/Error422'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '502':
          $ref: '#/components/responses/Error502'
        '503':
          $ref: '#/components/responses/Error503'
        '504':
          $ref: '#/components/responses/Error504'
components:
  schemas:
    SocialQueryResponse:
      type: object
      required:
        - success
        - platform
        - endpoint
        - credits_used
        - credits_remaining
        - request_id
        - cached
        - data
      properties:
        success:
          type: boolean
          const: true
        platform:
          type: string
        endpoint:
          type: string
        credits_used:
          type: integer
          minimum: 0
        credits_remaining:
          type:
            - integer
            - 'null'
        request_id:
          type: string
        cached:
          type: boolean
        data:
          type: object
          additionalProperties: true
          description: >-
            The selected operation determines the resource fields in this
            object. Source data can omit a metric or report it as null.
    SocialQueryError:
      type: object
      required:
        - success
        - platform
        - endpoint
        - credits_used
        - credits_remaining
        - request_id
        - cached
        - error
      properties:
        success:
          type: boolean
          const: false
        platform:
          type: string
        endpoint:
          type: string
        credits_used:
          type: integer
          minimum: 0
        credits_remaining:
          type:
            - integer
            - 'null'
        request_id:
          type: string
        cached:
          type: boolean
        error:
          type: object
          required:
            - code
            - type
            - message
            - status
            - doc_url
          properties:
            code:
              type: string
            type:
              type: string
            message:
              type: string
            status:
              type: integer
            doc_url:
              type: string
              format: uri
  responses:
    Error400:
      description: Upstream rejected the request.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error401:
      description: Missing, expired, invalid, or revoked API key.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error402:
      description: Insufficient SocialQuery credits.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error403:
      description: Key scope or provider policy denied access.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error404:
      description: Endpoint or upstream resource not found.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error405:
      description: HTTP method is not supported.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error409:
      description: Idempotency conflict or request in progress.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error422:
      description: Invalid parameters.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error429:
      description: Request limit reached.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error500:
      description: Request processing failed.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error502:
      description: Upstream service failed.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error503:
      description: Provider or required service is unavailable.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error504:
      description: Upstream service timed out.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.