{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopify Stores API Velocity, Pricing & Brand Model",
    "description": "Analyse any Shopify store from its public catalog: launch velocity in products per day, price positioning, discount strategy and brand model.",
    "version": "1.0",
    "x-build-id": "uNGO7SkPSjgPlKukQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/spool~shopify-stores-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-spool-shopify-stores-api",
        "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/spool~shopify-stores-api/runs": {
      "post": {
        "operationId": "runs-sync-spool-shopify-stores-api",
        "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/spool~shopify-stores-api/run-sync": {
      "post": {
        "operationId": "run-sync-spool-shopify-stores-api",
        "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",
        "required": [
          "storeUrls"
        ],
        "properties": {
          "storeUrls": {
            "title": "1. Which stores?",
            "type": "array",
            "description": "Domains or full store URLs — both work, and `www.` is stripped for you.\n\n• `allbirds.com`\n• `https://www.gymshark.com/collections/mens`\n• `deathwishcoffee` (a bare handle becomes `deathwishcoffee.myshopify.com`)\n\nDuplicates are merged, so `www.x.com` and `x.com` are analysed once.",
            "items": {
              "type": "string"
            }
          },
          "maxProductsPerStore": {
            "title": "Products to read per store",
            "minimum": 250,
            "maximum": 5000,
            "type": "integer",
            "description": "Shopify serves 250 products per request, newest first.\n\n**Most stores need nothing more than the default.** Launch velocity is counted over the last 90 days, and on a normal store 250 products reach back further than that — Organic Basics reads 1.76/day from 250 products against 1.77/day from its full 1,816.\n\nOn a very fast store the read limit cuts into the window. When that happens `velocityConfidence` comes back `low` and `perDay` is a lower bound rather than a wrong number — raise this to resolve it.\n\nAlso raise it for an exact catalog count, a full price range, and `lifetimePerDay`, all of which need the whole catalog.",
            "default": 500
          },
          "requireApps": {
            "title": "2. Only keep stores running these apps",
            "type": "array",
            "description": "**This is the lead list.** Name the apps a store must have — one per line, spelled as they appear in the output.\n\n`Klaviyo` · `Recharge` · `Gorgias` · `Yotpo` · `Okendo` · `Rebuy` · `Attentive` · `Judge.me` · `Loop Returns` · `Smile.io` · `Searchanise` · `Triple Whale` · `Klarna` · `Afterpay`\n\nIf you sell a Shopify app, this finds the stores already paying for something adjacent to yours. Detected from the storefront, not guessed.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "requireAppsMode": {
            "title": "Match any or all of those apps",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "`any` casts a wide net. `all` finds a specific stack — for example Klaviyo **and** Recharge, which is a subscription brand running serious email.",
            "default": "any"
          },
          "requireSignals": {
            "title": "3. Only keep stores matching these signals",
            "type": "array",
            "description": "Written as `key:value`, one per line. This is what turns a scan into a shortlist:\n\n• `launchCadence:constant` — shipping 20+ products a day\n• `launchCadence:republishing` — just replatformed and re-merchandising its whole catalog, which is when a store is buying apps, themes and agencies\n• `brandModel:multi-brand-reseller` — stocks other people's brands\n• `pricePositioning:luxury` — median price $500+\n• `discountStrategy:permanent-sale` — always on sale\n• `inventoryPressure:mostly-unavailable` — 60%+ out of stock\n• `catalogScale:enterprise` — 5,000+ products\n\nLeave empty to keep every store.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minProducts": {
            "title": "Minimum catalog size",
            "minimum": 0,
            "type": "integer",
            "description": "Skip stores smaller than this. Useful for filtering out dropshipping test stores and abandoned shops when scanning a long list.",
            "default": 0
          },
          "includeProducts": {
            "title": "Include the individual products",
            "type": "boolean",
            "description": "Adds every product read to the row — title, URL, vendor, type, tags, publish date, variant count and price. Off by default so the output stays one clean line per store.",
            "default": false
          },
          "detectApps": {
            "title": "Read the storefront for apps and theme",
            "type": "boolean",
            "description": "Adds one request per store and returns installed apps, theme, and social channels. On by default — it is the most valuable part of the output. Turn off for a pure catalog run.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "Stores analysed in parallel. Each store is one or two plain HTTPS requests with no proxy involved, so the only reason to keep this modest is politeness.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}