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

# Get Product Price Comparison

> Read durable batch progress and ordered per-product results. Requires catalog:read and the job's organization.

completed means every target was processed; inspect result.success, succeededCount, failedCount, and each result for partial failures. Session callers must supply organizationId.



## OpenAPI

````yaml /openapi.json get /api/v1/products/compare-prices/jobs/{jobId}
openapi: 3.1.0
info:
  title: OmniCommerce API
  version: 1.0.0
  license:
    name: Proprietary
    url: https://omnicommerce.sg/terms
  description: >-
    OmniCommerce API surface for agents and developer integrations. Includes
    public endpoints (merchant discovery, product search, compare, catalog, ACO
    retrieval) and authenticated endpoints (product management via API key
    Bearer tokens).
servers:
  - url: https://omnicommerce.sg
    description: Production
  - url: http://localhost:3000
    description: Local development
security: []
tags:
  - name: agentic-checkout
    description: Merchant-fulfilled agentic checkout
    x-group: Agentic Checkout
  - name: agents
    description: agents
    x-group: Agents
  - name: analytics
    description: Sales performance across marketplaces
    x-group: Analytics
  - name: aops
    description: Agent operating procedures
    x-group: AOPs
  - name: campaigns
    description: Campaign briefs, offer windows, and marketplace runs
    x-group: Campaigns
  - name: developer-platform
    description: Authenticated developer platform APIs
    x-group: Developer Platform
  - name: documents
    description: Knowledge base document uploads
    x-group: Knowledge Base
  - name: looks
    description: AI-styled product looks
    x-group: Looks
  - name: oauth
    description: OAuth token endpoints
    x-group: OAuth
  - name: orders
    description: Workspace and agentic orders
    x-group: Orders
  - name: organizations
    description: Organization management
    x-group: Organizations
  - name: price-books
    description: Marketplace list-price markup rules
    x-group: Price Books
  - name: products
    description: Product CRUD, bulk import, enrichment, publish, and delist
    x-group: Products
  - name: promotions
    description: Central promotions and marketplace sync
    x-group: Promotions
  - name: public-agent
    description: Public agent discovery and catalog APIs
    x-group: Public Agent
  - name: returns
    description: returns
    x-group: Returns
  - name: reviews
    description: Marketplace product reviews and seller replies
    x-group: Reviews
  - name: settlements
    description: settlements
    x-group: Settlements
  - name: ucp
    description: Universal Commerce Protocol
    x-group: UCP
paths:
  /api/v1/products/compare-prices/jobs/{jobId}:
    get:
      tags:
        - products
      summary: Get Product Price Comparison
      description: >-
        Read durable batch progress and ordered per-product results. Requires
        catalog:read and the job's organization.


        completed means every target was processed; inspect result.success,
        succeededCount, failedCount, and each result for partial failures.
        Session callers must supply organizationId.
      operationId: get_v1_products_compare_prices_jobs_by_jobid
      parameters:
        - name: jobId
          in: path
          required: true
          schema:
            type: string
        - name: organizationId
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Current progress or completed results.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  type:
                    type: string
                    const: price_comparison
                  status:
                    type: string
                    enum:
                      - queued
                      - running
                      - completed
                      - failed
                  productIds:
                    type: array
                    items:
                      type: string
                  total:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                  processed:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                  remaining:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        productId:
                          type: string
                        success:
                          type: boolean
                        retryable:
                          type: boolean
                        name:
                          anyOf:
                            - type: string
                            - type: 'null'
                        sku:
                          anyOf:
                            - type: string
                            - type: 'null'
                        currentPrice:
                          anyOf:
                            - type: number
                            - type: 'null'
                        currency:
                          anyOf:
                            - type: string
                            - type: 'null'
                        research:
                          anyOf:
                            - type: object
                              properties:
                                success:
                                  type: boolean
                                  const: true
                                queries:
                                  minItems: 1
                                  type: array
                                  items:
                                    type: string
                                    minLength: 1
                                gl:
                                  type: string
                                  minLength: 1
                                currency:
                                  anyOf:
                                    - type: string
                                      minLength: 3
                                      maxLength: 3
                                    - type: 'null'
                                count:
                                  type: integer
                                  minimum: 0
                                  maximum: 9007199254740991
                                items:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      title:
                                        type: string
                                        minLength: 1
                                      price:
                                        type: number
                                      priceText:
                                        anyOf:
                                          - type: string
                                          - type: 'null'
                                      source:
                                        anyOf:
                                          - type: string
                                          - type: 'null'
                                      link:
                                        anyOf:
                                          - type: string
                                          - type: 'null'
                                    required:
                                      - title
                                      - price
                                      - priceText
                                      - source
                                      - link
                                    additionalProperties: false
                                stats:
                                  type: object
                                  properties:
                                    min:
                                      anyOf:
                                        - type: number
                                        - type: 'null'
                                    max:
                                      anyOf:
                                        - type: number
                                        - type: 'null'
                                    avg:
                                      anyOf:
                                        - type: number
                                        - type: 'null'
                                    percentiles:
                                      type: object
                                      properties:
                                        p20:
                                          anyOf:
                                            - type: number
                                            - type: 'null'
                                        p50:
                                          anyOf:
                                            - type: number
                                            - type: 'null'
                                        p80:
                                          anyOf:
                                            - type: number
                                            - type: 'null'
                                      required:
                                        - p20
                                        - p50
                                        - p80
                                      additionalProperties: false
                                  required:
                                    - min
                                    - max
                                    - avg
                                    - percentiles
                                  additionalProperties: false
                                pricingBands:
                                  type: object
                                  properties:
                                    low:
                                      anyOf:
                                        - type: number
                                        - type: 'null'
                                    mid:
                                      anyOf:
                                        - type: number
                                        - type: 'null'
                                    high:
                                      anyOf:
                                        - type: number
                                        - type: 'null'
                                  required:
                                    - low
                                    - mid
                                    - high
                                  additionalProperties: false
                              required:
                                - success
                                - queries
                                - gl
                                - count
                                - items
                                - stats
                                - pricingBands
                              additionalProperties: false
                            - type: 'null'
                        comparison:
                          anyOf:
                            - type: object
                              properties:
                                metric:
                                  type: string
                                  const: catalog_price_vs_market_median
                                currency:
                                  type: string
                                medianPrice:
                                  type: number
                                differenceAmount:
                                  type: number
                                differencePercent:
                                  anyOf:
                                    - type: number
                                    - type: 'null'
                              required:
                                - metric
                                - currency
                                - medianPrice
                                - differenceAmount
                                - differencePercent
                              additionalProperties: false
                            - type: 'null'
                        markets:
                          type: array
                          items:
                            type: object
                            properties:
                              marketplace:
                                anyOf:
                                  - type: string
                                    enum:
                                      - shopee
                                      - lazada
                                      - tiktok
                                      - shopify
                                      - whatsapp
                                      - zalora
                                      - amazon
                                      - ebay
                                  - type: 'null'
                              storeId:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              listingCountry:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              country:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              gl:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              currency:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              currentPrice:
                                anyOf:
                                  - type: number
                                  - type: 'null'
                              priceSource:
                                type: string
                                enum:
                                  - marketplace_snapshot
                                  - acknowledged_write
                                  - catalog_fallback
                              priceAsOf:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              success:
                                type: boolean
                              retryable:
                                type: boolean
                              research:
                                anyOf:
                                  - type: object
                                    properties:
                                      success:
                                        type: boolean
                                        const: true
                                      queries:
                                        minItems: 1
                                        type: array
                                        items:
                                          type: string
                                          minLength: 1
                                      gl:
                                        type: string
                                        minLength: 1
                                      currency:
                                        anyOf:
                                          - type: string
                                            minLength: 3
                                            maxLength: 3
                                          - type: 'null'
                                      count:
                                        type: integer
                                        minimum: 0
                                        maximum: 9007199254740991
                                      items:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            title:
                                              type: string
                                              minLength: 1
                                            price:
                                              type: number
                                            priceText:
                                              anyOf:
                                                - type: string
                                                - type: 'null'
                                            source:
                                              anyOf:
                                                - type: string
                                                - type: 'null'
                                            link:
                                              anyOf:
                                                - type: string
                                                - type: 'null'
                                          required:
                                            - title
                                            - price
                                            - priceText
                                            - source
                                            - link
                                          additionalProperties: false
                                      stats:
                                        type: object
                                        properties:
                                          min:
                                            anyOf:
                                              - type: number
                                              - type: 'null'
                                          max:
                                            anyOf:
                                              - type: number
                                              - type: 'null'
                                          avg:
                                            anyOf:
                                              - type: number
                                              - type: 'null'
                                          percentiles:
                                            type: object
                                            properties:
                                              p20:
                                                anyOf:
                                                  - type: number
                                                  - type: 'null'
                                              p50:
                                                anyOf:
                                                  - type: number
                                                  - type: 'null'
                                              p80:
                                                anyOf:
                                                  - type: number
                                                  - type: 'null'
                                            required:
                                              - p20
                                              - p50
                                              - p80
                                            additionalProperties: false
                                        required:
                                          - min
                                          - max
                                          - avg
                                          - percentiles
                                        additionalProperties: false
                                      pricingBands:
                                        type: object
                                        properties:
                                          low:
                                            anyOf:
                                              - type: number
                                              - type: 'null'
                                          mid:
                                            anyOf:
                                              - type: number
                                              - type: 'null'
                                          high:
                                            anyOf:
                                              - type: number
                                              - type: 'null'
                                        required:
                                          - low
                                          - mid
                                          - high
                                        additionalProperties: false
                                    required:
                                      - success
                                      - queries
                                      - gl
                                      - count
                                      - items
                                      - stats
                                      - pricingBands
                                    additionalProperties: false
                                  - type: 'null'
                              comparison:
                                anyOf:
                                  - type: object
                                    properties:
                                      metric:
                                        type: string
                                        enum:
                                          - catalog_price_vs_market_median
                                          - listing_price_vs_market_median
                                      currency:
                                        type: string
                                      medianPrice:
                                        type: number
                                      differenceAmount:
                                        type: number
                                      differencePercent:
                                        anyOf:
                                          - type: number
                                          - type: 'null'
                                    required:
                                      - metric
                                      - currency
                                      - medianPrice
                                      - differenceAmount
                                      - differencePercent
                                    additionalProperties: false
                                  - type: 'null'
                              warnings:
                                type: array
                                items:
                                  type: string
                              error:
                                type: string
                            required:
                              - marketplace
                              - storeId
                              - listingCountry
                              - country
                              - gl
                              - currency
                              - currentPrice
                              - priceSource
                              - priceAsOf
                              - success
                              - retryable
                              - research
                              - comparison
                              - warnings
                            additionalProperties: false
                        warnings:
                          type: array
                          items:
                            type: string
                        error:
                          type: string
                      required:
                        - productId
                        - success
                        - retryable
                        - name
                        - sku
                        - currentPrice
                        - currency
                        - research
                        - comparison
                        - markets
                        - warnings
                      additionalProperties: false
                  result:
                    anyOf:
                      - type: object
                        properties:
                          success:
                            type: boolean
                          productIds:
                            type: array
                            items:
                              type: string
                          succeededCount:
                            type: integer
                            minimum: 0
                            maximum: 9007199254740991
                          failedCount:
                            type: integer
                            minimum: 0
                            maximum: 9007199254740991
                          results:
                            type: array
                            items:
                              type: object
                              properties:
                                productId:
                                  type: string
                                success:
                                  type: boolean
                                retryable:
                                  type: boolean
                                name:
                                  anyOf:
                                    - type: string
                                    - type: 'null'
                                sku:
                                  anyOf:
                                    - type: string
                                    - type: 'null'
                                currentPrice:
                                  anyOf:
                                    - type: number
                                    - type: 'null'
                                currency:
                                  anyOf:
                                    - type: string
                                    - type: 'null'
                                research:
                                  anyOf:
                                    - type: object
                                      properties:
                                        success:
                                          type: boolean
                                          const: true
                                        queries:
                                          minItems: 1
                                          type: array
                                          items:
                                            type: string
                                            minLength: 1
                                        gl:
                                          type: string
                                          minLength: 1
                                        currency:
                                          anyOf:
                                            - type: string
                                              minLength: 3
                                              maxLength: 3
                                            - type: 'null'
                                        count:
                                          type: integer
                                          minimum: 0
                                          maximum: 9007199254740991
                                        items:
                                          type: array
                                          items:
                                            type: object
                                            properties:
                                              title:
                                                type: string
                                                minLength: 1
                                              price:
                                                type: number
                                              priceText:
                                                anyOf:
                                                  - type: string
                                                  - type: 'null'
                                              source:
                                                anyOf:
                                                  - type: string
                                                  - type: 'null'
                                              link:
                                                anyOf:
                                                  - type: string
                                                  - type: 'null'
                                            required:
                                              - title
                                              - price
                                              - priceText
                                              - source
                                              - link
                                            additionalProperties: false
                                        stats:
                                          type: object
                                          properties:
                                            min:
                                              anyOf:
                                                - type: number
                                                - type: 'null'
                                            max:
                                              anyOf:
                                                - type: number
                                                - type: 'null'
                                            avg:
                                              anyOf:
                                                - type: number
                                                - type: 'null'
                                            percentiles:
                                              type: object
                                              properties:
                                                p20:
                                                  anyOf:
                                                    - type: number
                                                    - type: 'null'
                                                p50:
                                                  anyOf:
                                                    - type: number
                                                    - type: 'null'
                                                p80:
                                                  anyOf:
                                                    - type: number
                                                    - type: 'null'
                                              required:
                                                - p20
                                                - p50
                                                - p80
                                              additionalProperties: false
                                          required:
                                            - min
                                            - max
                                            - avg
                                            - percentiles
                                          additionalProperties: false
                                        pricingBands:
                                          type: object
                                          properties:
                                            low:
                                              anyOf:
                                                - type: number
                                                - type: 'null'
                                            mid:
                                              anyOf:
                                                - type: number
                                                - type: 'null'
                                            high:
                                              anyOf:
                                                - type: number
                                                - type: 'null'
                                          required:
                                            - low
                                            - mid
                                            - high
                                          additionalProperties: false
                                      required:
                                        - success
                                        - queries
                                        - gl
                                        - count
                                        - items
                                        - stats
                                        - pricingBands
                                      additionalProperties: false
                                    - type: 'null'
                                comparison:
                                  anyOf:
                                    - type: object
                                      properties:
                                        metric:
                                          type: string
                                          const: catalog_price_vs_market_median
                                        currency:
                                          type: string
                                        medianPrice:
                                          type: number
                                        differenceAmount:
                                          type: number
                                        differencePercent:
                                          anyOf:
                                            - type: number
                                            - type: 'null'
                                      required:
                                        - metric
                                        - currency
                                        - medianPrice
                                        - differenceAmount
                                        - differencePercent
                                      additionalProperties: false
                                    - type: 'null'
                                markets:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      marketplace:
                                        anyOf:
                                          - type: string
                                            enum:
                                              - shopee
                                              - lazada
                                              - tiktok
                                              - shopify
                                              - whatsapp
                                              - zalora
                                              - amazon
                                              - ebay
                                          - type: 'null'
                                      storeId:
                                        anyOf:
                                          - type: string
                                          - type: 'null'
                                      listingCountry:
                                        anyOf:
                                          - type: string
                                          - type: 'null'
                                      country:
                                        anyOf:
                                          - type: string
                                          - type: 'null'
                                      gl:
                                        anyOf:
                                          - type: string
                                          - type: 'null'
                                      currency:
                                        anyOf:
                                          - type: string
                                          - type: 'null'
                                      currentPrice:
                                        anyOf:
                                          - type: number
                                          - type: 'null'
                                      priceSource:
                                        type: string
                                        enum:
                                          - marketplace_snapshot
                                          - acknowledged_write
                                          - catalog_fallback
                                      priceAsOf:
                                        anyOf:
                                          - type: string
                                          - type: 'null'
                                      success:
                                        type: boolean
                                      retryable:
                                        type: boolean
                                      research:
                                        anyOf:
                                          - type: object
                                            properties:
                                              success:
                                                type: boolean
                                                const: true
                                              queries:
                                                minItems: 1
                                                type: array
                                                items:
                                                  type: string
                                                  minLength: 1
                                              gl:
                                                type: string
                                                minLength: 1
                                              currency:
                                                anyOf:
                                                  - type: string
                                                    minLength: 3
                                                    maxLength: 3
                                                  - type: 'null'
                                              count:
                                                type: integer
                                                minimum: 0
                                                maximum: 9007199254740991
                                              items:
                                                type: array
                                                items:
                                                  type: object
                                                  properties:
                                                    title:
                                                      type: string
                                                      minLength: 1
                                                    price:
                                                      type: number
                                                    priceText:
                                                      anyOf:
                                                        - type: string
                                                        - type: 'null'
                                                    source:
                                                      anyOf:
                                                        - type: string
                                                        - type: 'null'
                                                    link:
                                                      anyOf:
                                                        - type: string
                                                        - type: 'null'
                                                  required:
                                                    - title
                                                    - price
                                                    - priceText
                                                    - source
                                                    - link
                                                  additionalProperties: false
                                              stats:
                                                type: object
                                                properties:
                                                  min:
                                                    anyOf:
                                                      - type: number
                                                      - type: 'null'
                                                  max:
                                                    anyOf:
                                                      - type: number
                                                      - type: 'null'
                                                  avg:
                                                    anyOf:
                                                      - type: number
                                                      - type: 'null'
                                                  percentiles:
                                                    type: object
                                                    properties:
                                                      p20:
                                                        anyOf:
                                                          - type: number
                                                          - type: 'null'
                                                      p50:
                                                        anyOf:
                                                          - type: number
                                                          - type: 'null'
                                                      p80:
                                                        anyOf:
                                                          - type: number
                                                          - type: 'null'
                                                    required:
                                                      - p20
                                                      - p50
                                                      - p80
                                                    additionalProperties: false
                                                required:
                                                  - min
                                                  - max
                                                  - avg
                                                  - percentiles
                                                additionalProperties: false
                                              pricingBands:
                                                type: object
                                                properties:
                                                  low:
                                                    anyOf:
                                                      - type: number
                                                      - type: 'null'
                                                  mid:
                                                    anyOf:
                                                      - type: number
                                                      - type: 'null'
                                                  high:
                                                    anyOf:
                                                      - type: number
                                                      - type: 'null'
                                                required:
                                                  - low
                                                  - mid
                                                  - high
                                                additionalProperties: false
                                            required:
                                              - success
                                              - queries
                                              - gl
                                              - count
                                              - items
                                              - stats
                                              - pricingBands
                                            additionalProperties: false
                                          - type: 'null'
                                      comparison:
                                        anyOf:
                                          - type: object
                                            properties:
                                              metric:
                                                type: string
                                                enum:
                                                  - catalog_price_vs_market_median
                                                  - listing_price_vs_market_median
                                              currency:
                                                type: string
                                              medianPrice:
                                                type: number
                                              differenceAmount:
                                                type: number
                                              differencePercent:
                                                anyOf:
                                                  - type: number
                                                  - type: 'null'
                                            required:
                                              - metric
                                              - currency
                                              - medianPrice
                                              - differenceAmount
                                              - differencePercent
                                            additionalProperties: false
                                          - type: 'null'
                                      warnings:
                                        type: array
                                        items:
                                          type: string
                                      error:
                                        type: string
                                    required:
                                      - marketplace
                                      - storeId
                                      - listingCountry
                                      - country
                                      - gl
                                      - currency
                                      - currentPrice
                                      - priceSource
                                      - priceAsOf
                                      - success
                                      - retryable
                                      - research
                                      - comparison
                                      - warnings
                                    additionalProperties: false
                                warnings:
                                  type: array
                                  items:
                                    type: string
                                error:
                                  type: string
                              required:
                                - productId
                                - success
                                - retryable
                                - name
                                - sku
                                - currentPrice
                                - currency
                                - research
                                - comparison
                                - markets
                                - warnings
                              additionalProperties: false
                          warnings:
                            type: array
                            items:
                              type: string
                        required:
                          - success
                          - productIds
                          - succeededCount
                          - failedCount
                          - results
                          - warnings
                        additionalProperties: false
                      - type: 'null'
                  error:
                    anyOf:
                      - type: string
                      - type: 'null'
                required:
                  - id
                  - type
                  - status
                  - productIds
                  - total
                  - processed
                  - remaining
                  - results
                  - result
                  - error
                additionalProperties: false
        '401':
          description: Missing or invalid credentials.
        '403':
          description: Unauthorized organization or missing catalog:read.
        '404':
          description: Job not found in the authorized organization.
        '429':
          description: Rate limit exceeded.
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        Bearer API key for server-to-server access. Session auth is also
        supported in first-party UI flows.

````

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