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

# Get a Product

> One product in full: description, gallery, and every variant with its price.

Requires the `get-product` scope.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/products/{id}
openapi: 3.1.0
info:
  title: Orbbit Data API
  version: '1.0'
  description: >-
    Commodity prices, packaged-food labels, and online store catalogs over one
    read-only REST API.
servers:
  - url: https://api.orbbit.co
    description: Production
security:
  - bearer: []
tags:
  - name: Commodities
  - name: Branded Food
  - name: Shopify
paths:
  /v1/products/{id}:
    get:
      tags:
        - Shopify
      summary: Get a Product
      description: >-
        One product in full: description, gallery, and every variant with its
        price.


        Requires the `get-product` scope.
      operationId: ProductsController_getProduct
      parameters:
        - name: id
          required: true
          in: path
          description: A product id as returned by GET /v1/stores/{id}/products
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProductResponseDto'
              example:
                data:
                  id: shopify_product_01k3a9x8w7v6u5t4s3r2q1p0nm
                  title: House Blend, Whole Bean
                  handle: house-blend
                  vendor: Example Coffee Co.
                  product_type: Coffee
                  category: coffee_and_tea
                  sub_category: coffee
                  tags:
                    - medium-roast
                    - whole-bean
                  image:
                    src: >-
                      https://cdn.shopify.com/s/files/1/0000/0000/products/house-blend.jpg
                    width: 1200
                    height: 1200
                  price:
                    min: 18
                    max: 54
                    currency: USD
                  variant_count: 3
                  published_at: '2025-03-14T17:02:11.000Z'
                  source: shopify
                  store_id: shopify_store_01k3a1b2c3d4e5f6g7h8j9k0mn
                  body_text: >-
                    Our everyday coffee: chocolate, toasted nut, and a clean
                    finish.
                  images:
                    - src: >-
                        https://cdn.shopify.com/s/files/1/0000/0000/products/house-blend.jpg
                      width: 1200
                      height: 1200
                  variants:
                    - id: shopify_variant_01k3aa0b1c2d3e4f5g6h7j8k9mnp
                      title: 12 oz
                      sku: HB-12
                      price: 18
                      compare_at_price: null
                      grams: 340
                      available: true
                      option1: 12 oz
                      option2: null
                      option3: null
                      position: 1
                      image_src: null
        '401':
          description: The API key is missing, malformed, unknown, or revoked
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorDto'
              example:
                error:
                  type: unauthorized
                  message: 'Missing or malformed Authorization: Bearer header'
        '403':
          description: The key is valid but not scoped to this endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorDto'
              example:
                error:
                  type: forbidden
                  message: This key is not scoped to get-product
        '404':
          description: No record has this ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorDto'
              example:
                error:
                  type: not_found
                  message: >-
                    Unknown branded food:
                    data_branded_food_01k0000000000000000000000
      security:
        - bearer: []
components:
  schemas:
    GetProductResponseDto:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
            title:
              anyOf:
                - type: string
                - type: 'null'
            handle:
              anyOf:
                - type: string
                - type: 'null'
            vendor:
              anyOf:
                - type: string
                - type: 'null'
            product_type:
              anyOf:
                - type: string
                - type: 'null'
            category:
              anyOf:
                - type: string
                - type: 'null'
            sub_category:
              anyOf:
                - type: string
                - type: 'null'
            tags:
              type: array
              items:
                type: string
            image:
              anyOf:
                - type: object
                  properties:
                    src:
                      type: string
                    width:
                      anyOf:
                        - type: number
                        - type: 'null'
                    height:
                      anyOf:
                        - type: number
                        - type: 'null'
                  required:
                    - src
                    - width
                    - height
                - type: 'null'
            price:
              type: object
              properties:
                min:
                  anyOf:
                    - type: number
                    - type: 'null'
                max:
                  anyOf:
                    - type: number
                    - type: 'null'
                currency:
                  anyOf:
                    - type: string
                    - type: 'null'
              required:
                - min
                - max
                - currency
            variant_count:
              type: number
            published_at:
              anyOf:
                - type: string
                - type: 'null'
            source:
              type: string
            store_id:
              type: string
            body_text:
              anyOf:
                - type: string
                - type: 'null'
            images:
              type: array
              items:
                type: object
                properties:
                  src:
                    type: string
                  width:
                    anyOf:
                      - type: number
                      - type: 'null'
                  height:
                    anyOf:
                      - type: number
                      - type: 'null'
                required:
                  - src
                  - width
                  - height
            variants:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  title:
                    anyOf:
                      - type: string
                      - type: 'null'
                  sku:
                    anyOf:
                      - type: string
                      - type: 'null'
                  price:
                    anyOf:
                      - type: number
                      - type: 'null'
                  compare_at_price:
                    anyOf:
                      - type: number
                      - type: 'null'
                  grams:
                    anyOf:
                      - type: number
                      - type: 'null'
                  available:
                    anyOf:
                      - type: boolean
                      - type: 'null'
                  option1:
                    anyOf:
                      - type: string
                      - type: 'null'
                  option2:
                    anyOf:
                      - type: string
                      - type: 'null'
                  option3:
                    anyOf:
                      - type: string
                      - type: 'null'
                  position:
                    anyOf:
                      - type: number
                      - type: 'null'
                  image_src:
                    anyOf:
                      - type: string
                      - type: 'null'
                required:
                  - id
                  - title
                  - sku
                  - price
                  - compare_at_price
                  - grams
                  - available
                  - option1
                  - option2
                  - option3
                  - position
                  - image_src
          required:
            - id
            - title
            - handle
            - vendor
            - product_type
            - category
            - sub_category
            - tags
            - image
            - price
            - variant_count
            - published_at
            - source
            - store_id
            - body_text
            - images
            - variants
      required:
        - data
    PublicApiErrorDto:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
            message:
              type: string
          required:
            - type
            - message
      required:
        - error
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: Your API key, which starts with `orbbit_data_`.

````