{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopify Scraper: Stock, Images & Product Updates",
    "description": "Shopify Scraper extracts stock levels, product images, prices, variants, SKUs, availability, and product updates from Shopify stores. Monitor inventory and catalogue changes, track competitors, and collect ecommerce data for analysis and automation.",
    "version": "0.1",
    "x-build-id": "K6bOyLaFUz99sFnSO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/api-empire~shopify-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-api-empire-shopify-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-scraper/runs": {
      "post": {
        "operationId": "runs-sync-api-empire-shopify-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-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-api-empire-shopify-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": {
          "auditUrls": {
            "title": "🏬 Stores to audit",
            "type": "array",
            "description": "Paste Shopify store URLs, one per line - homepages, collection pages, or single product pages. Examples:\n• Store homepage: https://store.com/\n• Collection: https://store.com/collections/shoes\n• Single product: https://store.com/products/blue-sneakers",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "🔗 Store or product URLs (legacy)",
            "type": "array",
            "description": "Legacy alias of 'auditUrls', kept for compatibility with the base Shopify Scraper's input format. If both are set, 'auditUrls' is used.",
            "items": {
              "type": "string"
            }
          },
          "filterKeyword": {
            "title": "🔎 Keyword filter (optional)",
            "type": "string",
            "description": "Only include products whose title, tags, or description contain this keyword (case-insensitive). Leave empty to include every product."
          },
          "query": {
            "title": "🔍 Search query (legacy)",
            "type": "string",
            "description": "Legacy alias of 'filterKeyword', kept for compatibility with the base actor's input format. If both are set, 'filterKeyword' is used."
          },
          "maxResults": {
            "title": "📦 Max products per store",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum products to scan per store URL. Set to 0 for no limit.",
            "default": 100
          },
          "maxRecommendationsPerProduct": {
            "title": "✨ Related product references per product",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "How many related-product references (id, handle, title, URL) to attach to each product row (0-20). Set 0 to disable. This is a lightweight reference list only - no price comparison.",
            "default": 0
          },
          "computeCompletenessProfile": {
            "title": "📋 Compute listing completeness profile",
            "type": "boolean",
            "description": "Compute per-store stock, image, and variant-choice completeness statistics (out-of-stock rate, missing-image rate, single-variant-only rate).",
            "default": true
          },
          "flagNoImageProducts": {
            "title": "🖼️ Flag products with no images",
            "type": "boolean",
            "description": "Add a per-product 'hasImages' flag and count/percentage of image-less products per store.",
            "default": true
          },
          "flagSingleVariantProducts": {
            "title": "🧵 Flag single-variant-only products",
            "type": "boolean",
            "description": "Add a per-product 'isSingleVariantOnly' flag and count/percentage of products with no real size/color choice per store.",
            "default": true
          },
          "computeFreshnessCohorts": {
            "title": "🕰️ Compute catalog freshness cohorts",
            "type": "boolean",
            "description": "Compute per-store catalog age statistics: oldest/newest/median product age, counts of recently-added products, and age-bucket cohorts.",
            "default": true
          },
          "freshWindowDays": {
            "title": "📅 \"Recently added\" windows (days)",
            "type": "array",
            "description": "Which recency windows to count new products in. Each selected window adds a 'newProductsLastNDays' count to the store summary row.",
            "items": {
              "type": "string",
              "enum": [
                "30",
                "60",
                "90"
              ],
              "enumTitles": [
                "Last 30 days",
                "Last 60 days",
                "Last 90 days"
              ]
            },
            "default": [
              "30",
              "60",
              "90"
            ]
          },
          "ageCohortBoundaries": {
            "title": "📊 Age-cohort boundaries (days)",
            "type": "array",
            "description": "Day-count boundaries used to bucket products by age into the 'ageCohorts' summary object, e.g. [\"30\",\"90\",\"365\"] buckets into 0-30d / 31-90d / 91-365d / 366d+.",
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy configuration (optional)",
            "type": "object",
            "description": "Leave empty to start with no proxy. If a store is temporarily unreachable, the actor automatically retries with a different connection."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}