{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopify Store Scraper — Markets, Currencies & Catalogs",
    "description": "Shopify Store Scraper extracts store data across markets, currencies, and product catalogs, including product titles, prices, variants, inventory, collections, and store details. Ideal for competitor research, pricing analysis, catalog monitoring, and e-commerce insights.",
    "version": "0.1",
    "x-build-id": "IK2zIysj3BZiOsSO9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/simpleapi~shopify-store-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-simpleapi-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/simpleapi~shopify-store-scraper/runs": {
      "post": {
        "operationId": "runs-sync-simpleapi-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/simpleapi~shopify-store-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-simpleapi-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": {
          "startUrls": {
            "title": "🌍 Shopify storefront URLs",
            "type": "array",
            "description": "One or more Shopify storefronts to profile. A bare domain works too. Example: https://rothys.com or allbirds.com. Each storefront produces one store row plus one row per market.",
            "items": {
              "type": "string"
            }
          },
          "storefrontUrls": {
            "title": "➕ Additional storefront URLs",
            "type": "array",
            "description": "Optional extra storefronts, merged with the list above and de-duplicated. Handy when you keep a fixed core list and add a few one-off stores per run.",
            "items": {
              "type": "string"
            }
          },
          "discoverMarkets": {
            "title": "🗺️ Market discovery source",
            "enum": [
              "all",
              "published_alternates",
              "localized_sections",
              "shipping_list"
            ],
            "type": "string",
            "description": "Which signals are used to work out the store's markets. 'Everything' is the union of all three and is what you usually want, because most stores publish only one or two of them. Default is Everything."
          },
          "probeCountries": {
            "title": "🎯 Countries to probe",
            "type": "array",
            "description": "Optional two-letter country codes to probe, whether or not the store published them. Example: US, CA, GB, DE, BR. List five codes and you get exactly those five markets, one row each — the maximum below does not trim a list you typed yourself. Leave empty to probe whatever the store itself publishes.",
            "items": {
              "type": "string"
            }
          },
          "maxMarkets": {
            "title": "🔢 Maximum markets per store",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "How many discovered markets are probed for each storefront, and therefore how many market rows you get per store. Enter 3 and you get 3 markets per store; enter 20 and you get 20 (or all of them, if the store publishes fewer). Localized storefronts are always probed before shipping-only countries. Ignored when you list countries above. Default is 8."
          },
          "fetchLocalizedCatalogue": {
            "title": "💱 Compare catalogue and prices per market",
            "type": "boolean",
            "description": "Reads each market's own catalogue so you get its product count, coverage against the main market, and its price range in its own currency. Turn off for a currency-only run. Default is on.",
            "default": true
          },
          "priceSampleSize": {
            "title": "📊 Products sampled per market",
            "minimum": 10,
            "maximum": 250,
            "type": "integer",
            "description": "How many products are read from each market to work out its median, minimum and maximum price. Enter 25 and each market row reports 25 sampled products (or all of them, if the market carries fewer); the variant prices behind that sample are reported separately. Higher is more stable and slower. Default is 100."
          },
          "anchorProductCheck": {
            "title": "🧷 Price one identical product across every market",
            "type": "boolean",
            "description": "Picks a single product and reports its price in every market, so you get a like-for-like comparison instead of comparing medians of catalogues that differ. Default is on.",
            "default": true
          },
          "emitMarketRows": {
            "title": "📤 Emit one row per market",
            "type": "boolean",
            "description": "Adds a labelled market row for every market alongside the store row, and mirrors those rows into a separate per-run market dataset. Turn off to keep only the store-level summary. Default is on.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "🌐 Connection configuration",
            "type": "object",
            "description": "Optional. Leave as-is unless a particular storefront is slow to respond for you."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}