{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopify Store Scraper: Product Catalogue Data",
    "description": "Shopify Store Scraper extracts product catalogue data from Shopify stores, including product names, prices, descriptions, SKUs, variants, images, availability, categories, and more. Ideal for competitor research, product analysis, price monitoring, and ecommerce data collection.",
    "version": "0.1",
    "x-build-id": "KXRJSxKaHKZ6SG8Uf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/api-empire~shopify-store-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-api-empire-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/api-empire~shopify-store-scraper/runs": {
      "post": {
        "operationId": "runs-sync-api-empire-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/api-empire~shopify-store-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-api-empire-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",
        "required": [
          "startUrls"
        ],
        "properties": {
          "catalogTargets": {
            "title": "🛍️ Stores to profile",
            "type": "array",
            "description": "Storefront addresses to profile, one per line. A bare domain works as well as a full address (example: allbirds.com or https://www.allbirds.com). Leave this empty to fall back to the compatible URL list below.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "🔗 Shopify store URLs (compatible field)",
            "type": "array",
            "description": "The original URL list, kept so an existing input file still runs unchanged. Used only when the field above is empty. Example: https://www.allbirds.com",
            "items": {
              "type": "string"
            }
          },
          "computeCatalogueSummary": {
            "title": "📦 Build the catalogue-composition summary",
            "type": "boolean",
            "description": "Walk the store's whole product feed to the end and summarise it: verified product count, vendor mix, product-type mix and the price distribution. Turn it off and vendorCount, topVendors, productTypeCount, topProductTypes and every price column come back empty, leaving only the identity, product-count and collection columns. Default is on.",
            "default": true
          },
          "topVendorsLimit": {
            "title": "🏷️ How many top vendors to list",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "How many entries the topVendors column on the store row contains. Enter 10 and you get the 10 vendors with the most products; enter 3 and you get 3. Set 0 to list every vendor the store carries. If the store has fewer vendors than you ask for, you get all of them. The full vendorCount is always reported regardless of this number. Default is 10. Needs the catalogue-composition summary above to be on."
          },
          "topProductTypesLimit": {
            "title": "🗂️ How many top product types to list",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "How many entries the topProductTypes column on the store row contains. Enter 10 and you get the 10 product types with the most products; enter 3 and you get 3. Set 0 to list every product type the store carries. If the store has fewer types than you ask for, you get all of them. The full productTypeCount is always reported regardless of this number. Default is 10. Needs the catalogue-composition summary above to be on."
          },
          "excludeUnavailableFromPricing": {
            "title": "💲 Price the catalogue from buyable variants only",
            "type": "boolean",
            "description": "Compute the price range from variants a shopper can actually buy today. Sold-out and unpublished variants often carry placeholder amounts that would distort the range. Entries that are still implausible (zero-priced configurators, service-contract bands) are excluded from the range and reported as priceOutlierCount, never dropped in silence. Default is on.",
            "default": true
          },
          "detectCuratedCollections": {
            "title": "🏷️ Detect curated collections",
            "type": "boolean",
            "description": "Classify every collection the store publishes against a merchandising taxonomy (best sellers, new arrivals, sale, staff picks, featured, gifts) using the merchant's own wording. The total collection count is always reported separately, so a big collection list and a small curated set stay two different facts. Default is on.",
            "default": true
          },
          "curationLabels": {
            "title": "🎯 Curation labels to look for",
            "uniqueItems": true,
            "type": "array",
            "description": "Restrict the taxonomy to the merchandising intents you care about. Only the labels selected here can appear in curationLabelsPresent or on a curated-collection row, so narrowing the selection lowers curatedCollectionCount and the number of child rows to match. Example: pick only Sale to profile promotional activity. All six are selected by default.",
            "items": {
              "type": "string",
              "enum": [
                "best_sellers",
                "new_arrivals",
                "sale",
                "staff_picks",
                "featured",
                "gifts"
              ],
              "enumTitles": [
                "Best sellers / top rated",
                "New arrivals / just in",
                "Sale / clearance / discounts",
                "Staff picks / curated selections",
                "Featured / trending / essentials",
                "Gifts / gift guides"
              ]
            }
          },
          "emitCuratedCollectionRows": {
            "title": "📄 Emit one row per curated collection",
            "type": "boolean",
            "description": "Add a labelled child row for every collection that matched, carrying its title, handle, label, the literal wording that justified the label, its product count and its address. The number of child rows equals curatedCollectionCount on the store row. Turn it off and each store returns its single store row only; the totals on that row are unchanged. Default is on.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "🌐 Connection",
            "type": "object",
            "description": "Optional connection settings for the run."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}