{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopify Products Scraper",
    "description": "Scrape Shopify products with prices, real inventory counts when public, product and variant IDs, SKUs, barcodes and GTINs, named options, weights, images, SEO, and metafields. Enter store domains with no API keys or category URLs.",
    "version": "0.1",
    "x-build-id": "24SAtdKcYp1f5dvmM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/trovevault~shopify-products-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-trovevault-shopify-products-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/trovevault~shopify-products-scraper/runs": {
      "post": {
        "operationId": "runs-sync-trovevault-shopify-products-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/trovevault~shopify-products-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-trovevault-shopify-products-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": [
          "domains"
        ],
        "properties": {
          "domains": {
            "title": "Store Domains",
            "type": "array",
            "description": "One or more Shopify store domains to scrape, one per line. What it does: each domain is scraped independently and its rows are tagged with the store field. Format: a bare hostname, full URL, or Shopify-hosted domain; any URL path is ignored (https://gymshark.com/collections/all is treated as gymshark.com). Examples: gymshark.com, https://deathwishcoffee.com, or allbirds.com. Default: https://deathwishcoffee.com when left empty.",
            "items": {
              "type": "string"
            }
          },
          "maxProducts": {
            "title": "Max Products (per store)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of product rows to return per store domain. What it does: caps collection for each domain independently. Format: 0 or any positive integer. Examples: 50 or 100 for a quick test, 500 for a sample, 5000 for a large catalogue, or 0 for the full public catalogue. Default: 0, which continues until no more public products are returned.",
            "default": 0
          },
          "includeInventoryDetails": {
            "title": "Exact Inventory & Deep Details",
            "type": "boolean",
            "description": "Enable the optional enrichment add-on. What it does: fetches each product's public detail data to add exact variant inventory when exposed, inventory policy and management, barcodes/GTINs, quantity rules, selling plans, SEO metadata, and structured brand data. Cost: free during the announced preview period; afterward, one Inventory Enrichment event per successfully enriched product. Unavailable or failed enrichments are not charged. Default: false, which keeps the fast catalogue output and completely omits enrichment-only fields.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "How outgoing requests are routed. What it does: sends Shopify requests through the Apify proxy when enabled. Format: an Apify proxy configuration object. Leave disabled for most stores; enable Apify Proxy with the RESIDENTIAL group only when a domain returns HTTP 403 or blocks datacenter IPs. Examples: disabled for deathwishcoffee.com, Residential for large protected brands such as Gymshark, Allbirds, or MVMT. Default: disabled ({ \"useApifyProxy\": false }).",
            "default": {
              "useApifyProxy": false
            }
          },
          "datasetId": {
            "title": "Target Dataset ID",
            "type": "string",
            "description": "Optional Apify dataset ID that receives a copy of every product row in addition to the run's default dataset. What it does: appends this run's rows to an existing dataset, so scheduled or multi-store runs accumulate in one place. Format: a 17-character Apify dataset ID (letters and digits), found in the dataset URL or the Storage tab. Examples: aBcD1234efGh5678i, or leave empty to skip. Default: empty, which writes only to the run's default dataset."
          },
          "runId": {
            "title": "Parent Run ID",
            "type": "string",
            "description": "Optional parent Apify run ID written into every output row as the runId field. What it does: stamps each product with an upstream run identifier so results trace back through a pipeline. Format: a 17-character Apify run ID (letters and digits), found in the run URL or run detail. Examples: aBcD1234efGh5678i, or leave empty to skip. Default: empty, which leaves runId unset on output rows."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}