{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopify Store Scraper - Products, Prices, Stock & Store Info",
    "description": "Scrape any public Shopify store: full catalog, products on sale, new arrivals, best sellers or a collection (price, compare-at price, stock, variants, images), products by URL, store search, stock per variant, collections, store info, theme and apps. Batch many stores.",
    "version": "1.0",
    "x-build-id": "wtnV04c7YPaBP44j9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapercompany~shopify-store-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapercompany-shopify-store-scraper",
        "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/scrapercompany~shopify-store-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapercompany-shopify-store-scraper",
        "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/scrapercompany~shopify-store-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapercompany-shopify-store-scraper",
        "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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "products",
              "on-sale",
              "new-arrivals",
              "best-sellers",
              "collection",
              "product",
              "search",
              "inventory",
              "collections",
              "store",
              "profile",
              "check",
              "catalog-stats"
            ],
            "type": "string",
            "description": "What to collect from each store. Product lists come 50 per page; the other modes make one request per store (or per store and handle, collection or query).",
            "default": "products"
          },
          "stores": {
            "title": "Stores",
            "type": "array",
            "description": "Shopify stores, one per line: a domain such as <code>allbirds.com</code> or an https URL. Every mode runs once per store.",
            "default": [
              "allbirds.com"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxPages": {
            "title": "Pages per store",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Product and collection lists: how many pages of 50 to fetch per store (1-100). Each page is a separate request and is charged separately; paging stops at the last page. On sale stops at the first page of 50 catalog products with none on sale.",
            "default": 1
          },
          "handles": {
            "title": "Product handles or URLs (by handle, stock)",
            "type": "array",
            "description": "For <i>Products by handle or URL</i> and <i>Product stock</i>: a product handle (the part after <code>/products/</code>, e.g. <code>mens-wool-cruiser</code>) is looked up on every store above; a full product URL such as <code>https://www.allbirds.com/products/mens-wool-cruiser</code> is looked up on its own store. Up to 50 handles go in one request.",
            "default": [
              "mens-wool-cruiser"
            ],
            "items": {
              "type": "string"
            }
          },
          "collections": {
            "title": "Collection handles or URLs (collection products)",
            "type": "array",
            "description": "For <i>Products in a collection</i>: a collection handle (the part after <code>/collections/</code>, e.g. <code>mens</code>) is read on every store above; a collection URL such as <code>https://www.allbirds.com/collections/mens</code> on its own store. Use <i>Collections list</i> to find handles.",
            "default": [
              "mens"
            ],
            "items": {
              "type": "string"
            }
          },
          "queries": {
            "title": "Search queries (search)",
            "type": "array",
            "description": "For <i>Search a store</i>: one search per line, run on every store above. Each search returns up to 10 products.",
            "default": [
              "socks"
            ],
            "items": {
              "type": "string"
            }
          },
          "catalogPages": {
            "title": "Catalog pages to scan (catalog stats)",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "For <i>Catalog stats</i>: catalog pages of 250 products to scan per store (1-5). Each page scanned is one charged event.",
            "default": 1
          },
          "locale": {
            "title": "Locale",
            "type": "string",
            "description": "Optional locale path the store publishes, such as <code>en</code> or <code>en-ca</code>, for stores with several language or country sites. Leave empty for the main site."
          },
          "customRequests": {
            "title": "Custom requests (advanced)",
            "type": "array",
            "description": "Optional list of JSON objects, one request each, using the API field names shown above. Each object is merged over the options above, so you only need to give what differs. Each object needs <code>store</code>, plus <code>handles</code>, <code>handle</code>, <code>collection</code> or <code>q</code> for those modes. Example: <code>{\"mode\":\"collection\",\"store\":\"gymshark.com\",\"collection\":\"mens\"}</code>"
          },
          "includeErrors": {
            "title": "Include failed requests in the dataset",
            "type": "boolean",
            "description": "When on, a request that fails (for example an unknown property id) is saved as a dataset item with an <code>error</code> message so you can see what went wrong. Failed requests are never charged.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many API requests run at the same time (1-8). Parallel runs share one limit, so extra requests wait for a free slot instead of failing.",
            "default": 3
          },
          "maxRetries": {
            "title": "Retries per request",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Retries for rate limits (HTTP 429), temporary server errors (5xx) and network errors, with exponential backoff. Validation errors are never retried.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}