Shop ICON Storefront API

Anonymous, read-only JSON access to the Shop ICON merchandise storefront at store.iconaircraft.com — products, variants, collections, predictive search, session cart and store metadata. The store's own /agents.md and /robots.txt name these endpoints as the supported read path for AI agents. Verified live on 2026-08-22 at 43 published products and 13 collections. Ownership is established from /meta.json, which returns name "Shop ICON", domain store.iconaircraft.com, myshopify_domain iconaircraft.myshopify.com and city Vacaville, California — ICON Aircraft's headquarters.

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/icon-aircraft-store-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

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

OpenAPI Specification

icon-aircraft-store-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Shop ICON Storefront API
  version: '2026-08-22'
  description: >-
    Anonymous, read-only JSON access to the Shop ICON storefront at store.iconaircraft.com — the
    ICON Aircraft merchandise store (A5 apparel, hats, scale models, publishing and flight-training
    products), built on Shopify.

    ICON Aircraft publishes no developer program and no product API for the A5 aircraft itself.
    This storefront surface is nonetheless a genuine, documented, machine-readable interface: the
    store's own /agents.md and /robots.txt name these endpoints as the supported read path for AI
    agents, and each one was probed live and returned 200 without credentials on 2026-08-22.

    Ownership is established from the storefront's own metadata rather than the fetch URL:
    GET /meta.json returns name "Shop ICON", domain store.iconaircraft.com, myshopify_domain
    iconaircraft.myshopify.com, and city Vacaville, California — ICON Aircraft's headquarters.
    The store also stocks Flight Design branded merchandise, consistent with Flight Design being
    ICON Aircraft's sister company under Shang Gong Group.

    Derived by API Evangelist from https://store.iconaircraft.com/agents.md and from live
    anonymous probes of every operation below. The transactional surface (cart, checkout, order)
    is NOT described here — Shopify exposes it to agents through the UCP/MCP endpoint instead;
    see mcp/icon-aircraft-mcp.yml.
  contact:
    name: Shop ICON
    url: https://store.iconaircraft.com/
  termsOfService: https://store.iconaircraft.com/policies/terms-of-service
servers:
  - url: https://store.iconaircraft.com
    description: Shop ICON storefront (Shopify, Cloudflare edge)
  - url: https://iconaircraft.myshopify.com
    description: Canonical myshopify origin for the same store
tags:
  - name: Catalog
    description: Products and product variants.
  - name: Collections
    description: Merchandising collections.
  - name: Search
    description: Storefront predictive search.
  - name: Store
    description: Store-level metadata.
paths:
  /meta.json:
    get:
      operationId: getStoreMeta
      summary: Get storefront metadata
      description: >-
        Returns store identity and commerce settings — legal name, location, currency, money
        format, countries shipped to, published product and collection counts, and the enabled
        card brands. This is the operation that establishes which merchant the storefront belongs to.
      tags: [Store]
      responses:
        '200':
          description: Store metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreMeta'
  /products.json:
    get:
      operationId: listProducts
      summary: List published products
      description: >-
        Lists every published product with its variants, options and images. Verified live at 43
        published products on 2026-08-22. Paginate with page and limit; an empty products array
        signals the end of the collection.
      tags: [Catalog]
      parameters:
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/page'
      responses:
        '200':
          description: A page of products.
          content:
            application/json:
              schema:
                type: object
                properties:
                  products:
                    type: array
                    items:
                      $ref: '#/components/schemas/Product'
  /products/{handle}.json:
    get:
      operationId: getProduct
      summary: Get a single product by handle
      description: >-
        Returns the full product record for one storefront handle, including every variant with its
        SKU, price, compare-at price, weight in grams and availability flag.
      tags: [Catalog]
      parameters:
        - $ref: '#/components/parameters/handle'
      responses:
        '200':
          description: The product.
          content:
            application/json:
              schema:
                type: object
                properties:
                  product:
                    $ref: '#/components/schemas/Product'
        '404':
          $ref: '#/components/responses/NotFound'
  /collections.json:
    get:
      operationId: listCollections
      summary: List published collections
      description: >-
        Lists the merchandising collections a shopper can browse. Verified live at 13 published
        collections on 2026-08-22 — accessories, cold-weather-gear, everything, sport-flying-manuals,
        frontpage, hats, icon-aircraft-publishing-books, icon-website-featured, mens, new-arrivals,
        womens and junior-aviators.
      tags: [Collections]
      parameters:
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/page'
      responses:
        '200':
          description: A page of collections.
          content:
            application/json:
              schema:
                type: object
                properties:
                  collections:
                    type: array
                    items:
                      $ref: '#/components/schemas/Collection'
  /collections/{handle}/products.json:
    get:
      operationId: listCollectionProducts
      summary: List the products in one collection
      tags: [Collections]
      parameters:
        - $ref: '#/components/parameters/handle'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/page'
      responses:
        '200':
          description: A page of products within the collection.
          content:
            application/json:
              schema:
                type: object
                properties:
                  products:
                    type: array
                    items:
                      $ref: '#/components/schemas/Product'
        '404':
          $ref: '#/components/responses/NotFound'
  /search/suggest.json:
    get:
      operationId: suggestSearch
      summary: Predictive storefront search
      description: >-
        Returns predictive search suggestions for a query, grouped by resource type. Anonymous and
        rate-limited by Shopify at the edge.
      tags: [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, collection, page, article).
          schema:
            type: string
            default: product
        - name: resources[limit]
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 10
            default: 10
      responses:
        '200':
          description: Grouped suggestion results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuggestResults'
  /cart.js:
    get:
      operationId: getCart
      summary: Get the current session cart
      description: >-
        Returns the cart bound to the caller's Shopify session cookie. An anonymous caller with no
        prior session receives a new empty cart. Agents should prefer the UCP/MCP cart tools over
        this endpoint — see mcp/icon-aircraft-mcp.yml — because checkout on this storefront requires
        contemporaneous human approval and cannot be completed through the storefront JSON surface.
      tags: [Catalog]
      responses:
        '200':
          description: The session cart.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cart'
components:
  parameters:
    limit:
      name: limit
      in: query
      description: Items per page. Shopify caps this at 250.
      schema:
        type: integer
        minimum: 1
        maximum: 250
        default: 30
    page:
      name: page
      in: query
      description: 1-indexed page of the collection.
      schema:
        type: integer
        minimum: 1
        default: 1
    handle:
      name: handle
      in: path
      required: true
      description: The storefront handle (URL slug) of the object.
      schema:
        type: string
  responses:
    NotFound:
      description: No published object exists at that handle.
      content:
        text/html:
          schema:
            type: string
  schemas:
    StoreMeta:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        city:
          type: string
        province:
          type: string
        country:
          type: string
        currency:
          type: string
        domain:
          type: string
        url:
          type: string
          format: uri
        myshopify_domain:
          type: string
        description:
          type: string
        ships_to_countries:
          type: array
          items:
            type: string
        money_format:
          type: string
        published_collections_count:
          type: integer
        published_products_count:
          type: integer
    Product:
      type: object
      properties:
        id:
          type: integer
        title:
          type: string
        handle:
          type: string
        body_html:
          type: string
        published_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        vendor:
          type: string
        product_type:
          type: string
        tags:
          type: array
          items:
            type: string
        variants:
          type: array
          items:
            $ref: '#/components/schemas/Variant'
        images:
          type: array
          items:
            $ref: '#/components/schemas/Image'
        options:
          type: array
          items:
            $ref: '#/components/schemas/Option'
    Variant:
      type: object
      properties:
        id:
          type: integer
        product_id:
          type: integer
        title:
          type: string
        option1:
          type: [string, 'null']
        option2:
          type: [string, 'null']
        option3:
          type: [string, 'null']
        sku:
          type: [string, 'null']
        price:
          type: string
          description: Decimal string in the store currency, for example "30.00".
        compare_at_price:
          type: [string, 'null']
        available:
          type: boolean
        grams:
          type: integer
        requires_shipping:
          type: boolean
        taxable:
          type: boolean
        position:
          type: integer
        featured_image:
          oneOf:
            - $ref: '#/components/schemas/Image'
            - type: 'null'
    Image:
      type: object
      properties:
        id:
          type: integer
        product_id:
          type: integer
        src:
          type: string
          format: uri
        width:
          type: integer
        height:
          type: integer
        position:
          type: integer
        alt:
          type: [string, 'null']
        variant_ids:
          type: array
          items:
            type: integer
    Option:
      type: object
      properties:
        name:
          type: string
        position:
          type: integer
        values:
          type: array
          items:
            type: string
    Collection:
      type: object
      properties:
        id:
          type: integer
        title:
          type: string
        handle:
          type: string
        description:
          type: string
        published_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        products_count:
          type: integer
    SuggestResults:
      type: object
      properties:
        resources:
          type: object
          properties:
            results:
              type: object
              additionalProperties:
                type: array
                items:
                  type: object
                  additionalProperties: true
    Cart:
      type: object
      properties:
        token:
          type: string
        note:
          type: [string, 'null']
        attributes:
          type: object
          additionalProperties: true
        original_total_price:
          type: integer
        total_price:
          type: integer
        item_count:
          type: integer
        currency:
          type: string
        items:
          type: array
          items:
            type: object
            additionalProperties: true