Shopify Predictive Search API

Search suggestions for products, collections, pages, and articles

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

shopify-predictive-search-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Shopify Admin REST About Predictive Search API
  description: The Shopify Admin REST API lets you build apps and integrations that extend and enhance the Shopify admin. Access products, customers, orders, inventory, fulfillment, and more. Endpoints are organized by resource type and versioned by release date.
  version: 2025-01
  contact:
    name: Shopify
    url: https://shopify.dev/docs/api/admin-rest
    email: api@shopify.com
  license:
    name: Shopify API Terms
    url: https://www.shopify.com/legal/api-terms
  x-date: '2026-03-04'
servers:
- url: https://{store}.myshopify.com/admin/api/2025-01
  description: Shopify Admin REST API
  variables:
    store:
      default: my-store
      description: The Shopify store subdomain
security:
- AccessToken: []
tags:
- name: Predictive Search
  description: Search suggestions for products, collections, pages, and articles
paths:
  /search/suggest.json:
    get:
      operationId: getPredictiveSearchResults
      summary: Shopify Get predictive search results
      description: Retrieves predictive search results for a query string. Returns matching products, collections, pages, articles, and query suggestions. Used for search-as-you-type experiences.
      tags:
      - Predictive Search
      parameters:
      - name: q
        in: query
        required: true
        description: The search query
        schema:
          type: string
      - name: resources[type]
        in: query
        description: Comma-separated resource types to search (product, page, article, collection, query)
        schema:
          type: string
          default: query,product,collection,page
      - name: resources[limit]
        in: query
        description: Number of results per type (1-10, default 10)
        schema:
          type: integer
          minimum: 1
          maximum: 10
          default: 10
      - name: resources[limit_scope]
        in: query
        description: 'How the limit is distributed: all (shared across types) or each (per type)'
        schema:
          type: string
          enum:
          - all
          - each
          default: all
      - name: resources[options][unavailable_products]
        in: query
        description: How to handle unavailable products
        schema:
          type: string
          enum:
          - show
          - hide
          - last
          default: last
      - name: resources[options][fields]
        in: query
        description: Comma-separated fields to search within (title, product_type, vendor, tag, variants.title, variants.sku, body)
        schema:
          type: string
      responses:
        '200':
          description: Predictive search results
          content:
            application/json:
              schema:
                type: object
                properties:
                  resources:
                    type: object
                    properties:
                      results:
                        type: object
                        properties:
                          queries:
                            type: array
                            items:
                              type: object
                              properties:
                                text:
                                  type: string
                                styled_text:
                                  type: string
                          products:
                            type: array
                            items:
                              $ref: '#/components/schemas/StorefrontProduct'
                          collections:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: integer
                                title:
                                  type: string
                                handle:
                                  type: string
                                url:
                                  type: string
                                published_at:
                                  type: string
                                  format: date-time
                                body:
                                  type: string
                                image:
                                  type: object
                                  properties:
                                    url:
                                      type: string
                                      format: uri
                                    alt:
                                      type: string
                                    width:
                                      type: integer
                                    height:
                                      type: integer
                          pages:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: integer
                                title:
                                  type: string
                                handle:
                                  type: string
                                url:
                                  type: string
                                body:
                                  type: string
                          articles:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: integer
                                title:
                                  type: string
                                handle:
                                  type: string
                                url:
                                  type: string
                                body:
                                  type: string
                                published_at:
                                  type: string
                                  format: date-time
                                image:
                                  type: object
                                  properties:
                                    url:
                                      type: string
                                      format: uri
                                    alt:
                                      type: string
                                    width:
                                      type: integer
                                    height:
                                      type: integer
        '422':
          description: Invalid parameter
        '429':
          description: Rate limited
components:
  schemas:
    StorefrontProduct:
      type: object
      description: A product as returned by the storefront Ajax API
      properties:
        id:
          type: integer
        title:
          type: string
        handle:
          type: string
        description:
          type: string
        published_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        vendor:
          type: string
        type:
          type: string
        tags:
          type: array
          items:
            type: string
        price:
          type: integer
          description: Price in cents
        price_min:
          type: integer
        price_max:
          type: integer
        available:
          type: boolean
        price_varies:
          type: boolean
        compare_at_price:
          type:
          - integer
          - 'null'
        compare_at_price_min:
          type: integer
        compare_at_price_max:
          type: integer
        compare_at_price_varies:
          type: boolean
        variants:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              title:
                type: string
              option1:
                type:
                - string
                - 'null'
              option2:
                type:
                - string
                - 'null'
              option3:
                type:
                - string
                - 'null'
              sku:
                type:
                - string
                - 'null'
              requires_shipping:
                type: boolean
              taxable:
                type: boolean
              featured_image:
                type:
                - object
                - 'null'
              available:
                type: boolean
              name:
                type: string
              public_title:
                type:
                - string
                - 'null'
              price:
                type: integer
              weight:
                type: integer
              compare_at_price:
                type:
                - integer
                - 'null'
              barcode:
                type:
                - string
                - 'null'
        images:
          type: array
          items:
            type: string
            format: uri
        featured_image:
          type: string
          format: uri
        options:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              position:
                type: integer
              values:
                type: array
                items:
                  type: string
        url:
          type: string
        media:
          type: array
          items:
            type: object
            properties:
              alt:
                type:
                - string
                - 'null'
              id:
                type: integer
              position:
                type: integer
              media_type:
                type: string
              src:
                type: string
                format: uri
              width:
                type: integer
              height:
                type: integer
  securitySchemes:
    AccessToken:
      type: apiKey
      name: X-Shopify-Access-Token
      in: header
      description: Access token obtained via OAuth