{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopify MCP Server & API - Products, Prices, Stock",
    "description": "Shopify products for AI agents: an MCP server and live API that reads any Shopify store, collection or product link in seconds. Prices per country, sale prices, variants, stock, SKUs, images, descriptions and collections. No login, no proxy.",
    "version": "0.1",
    "x-build-id": "w7HwSYrikBY7aipJD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/akhil_rajesh~shopify-mcp-server/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-akhil_rajesh-shopify-mcp-server",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/akhil_rajesh~shopify-mcp-server/runs": {
      "post": {
        "operationId": "runs-sync-akhil_rajesh-shopify-mcp-server",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/akhil_rajesh~shopify-mcp-server/run-sync": {
      "post": {
        "operationId": "run-sync-akhil_rajesh-shopify-mcp-server",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "stores": {
            "title": "Stores, collections or products",
            "type": "array",
            "description": "Shopify stores (allbirds.com), collection links (allbirds.com/collections/mens) or product links (allbirds.com/products/mens-wool-runners). A store's /collections link (allbirds.com/collections) lists its collections, one row each. A store's own address or its .myshopify.com address both work. A link's language or country part (/en-ca/) is ignored: use Prices for country below. Up to 50.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Most rows a run returns, shared evenly between the stores and links. With Only changes: most changes a run returns (price drops first; the rest come with the next run).",
            "default": 1000
          },
          "maxProductsPerStore": {
            "title": "Max products per store",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Most products read from each store or collection. With Only changes, each store is read whole up to this number, so no change is missed. Leave empty for 10,000."
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "bestSelling",
              "newest",
              "priceLowToHigh",
              "priceHighToLow",
              "title",
              "storeOrder"
            ],
            "type": "string",
            "description": "The order products are read in, and so which ones a run returns first. Best selling is the store's own best-seller order.",
            "default": "bestSelling"
          },
          "country": {
            "title": "Prices for country",
            "type": "string",
            "description": "Two-letter country code or name (CA, GB, Germany): prices and availability in that country's currency, as the store sells there. A store that doesn't sell in that country answers with its main market's prices, and the run says so. Leave empty for the store's main market."
          },
          "oneRowPerVariant": {
            "title": "One row per variant",
            "type": "boolean",
            "description": "A row for each variant (size, colour) with its own SKU, barcode, price and stock, instead of one row per product with its variants inside. Each variant row is a result."
          },
          "productDetails": {
            "title": "Product details",
            "type": "boolean",
            "description": "Every image (up to 10, with alt text and size), videos, the full description as HTML, the SEO title and description, subscription plans and the collections each product is in. Pages then hold 60 products instead of 250, so a big store takes a little longer. Switch off for lean rows.",
            "default": true
          },
          "recommendationsPerProduct": {
            "title": "Recommendations per product",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "The products the store itself recommends with each product (its \"You may also like\"), up to 10, inside the row. One extra request per product, so a run takes about a second longer per product; not charged extra. Not read with Only changes. Leave empty for none."
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Only products whose title, vendor, type or tags hold one of these words or phrases. Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "excludeWords": {
            "title": "Leave out words",
            "type": "array",
            "description": "Leave out products whose title, vendor, type or tags hold any of these (gift card, sample).",
            "items": {
              "type": "string"
            }
          },
          "vendors": {
            "title": "Vendors",
            "type": "array",
            "description": "Only products by these vendors or brands, as the store names them. Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "productTypes": {
            "title": "Product types",
            "type": "array",
            "description": "Only products of these types, as the store names them (Shoes, Socks). Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "title": "Tags",
            "type": "array",
            "description": "Only products with at least one of these tags. Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "number",
            "description": "In the store's currency (the one for Prices for country). Leave empty or 0 for no minimum."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "number",
            "description": "In the store's currency. Leave empty or 0 for no maximum."
          },
          "inStockOnly": {
            "title": "In stock only",
            "type": "boolean",
            "description": "Only products (or variants) that can be bought now."
          },
          "onSaleOnly": {
            "title": "On sale only",
            "type": "boolean",
            "description": "Only products (or variants) with a compare-at price above the price."
          },
          "publishedWithinDays": {
            "title": "Published within (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only products the store published within this many days. Leave empty or 0 for any."
          },
          "onlyChanges": {
            "title": "Only changes since the last run",
            "type": "boolean",
            "description": "Track your stores: each run returns only what changed since the last run with the same stores and filters (new products, price drops and increases, back in stock, sold out, newly on sale, removed). The first run saves the products there now as the baseline and returns them as firstRun."
          },
          "changeTypes": {
            "title": "Changes to return",
            "type": "array",
            "description": "Which changes Only changes returns. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "newProduct",
                "priceDrop",
                "priceIncrease",
                "backInStock",
                "soldOut",
                "onSale",
                "removed"
              ],
              "enumTitles": [
                "New products",
                "Price drops",
                "Price increases",
                "Back in stock",
                "Sold out",
                "Newly on sale (a compare-at price appeared)",
                "Removed from the store"
              ]
            }
          },
          "minChangePercent": {
            "title": "Minimum price change (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Smaller price moves aren't reported, and the last reported price stays the baseline, so a slow slide still shows once it adds up. Leave empty for 1%."
          },
          "alertWebhookUrl": {
            "title": "Alert webhook URL",
            "type": "string",
            "description": "Post each run's changes to Slack, Discord or Microsoft Teams (their incoming-webhook URL), or to any HTTPS endpoint that takes JSON (Zapier, Make, n8n). Switches on Only changes. The first run posts a short 'alerts are set up' message."
          },
          "alertChangeTypes": {
            "title": "Alert on",
            "type": "array",
            "description": "Which changes are posted. Leave empty for new products, price drops and back in stock.",
            "items": {
              "type": "string",
              "enum": [
                "newProduct",
                "priceDrop",
                "priceIncrease",
                "backInStock",
                "soldOut",
                "onSale",
                "removed"
              ],
              "enumTitles": [
                "New products",
                "Price drops",
                "Price increases",
                "Back in stock",
                "Sold out",
                "Newly on sale (a compare-at price appeared)",
                "Removed from the store"
              ]
            }
          },
          "historyName": {
            "title": "History name",
            "type": "string",
            "description": "Keep a separate history for this tracker (a-z, 0-9 and hyphens). Leave empty to share the default one: histories are kept per store and filters anyway."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}