{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopify AppStore Scraper",
    "description": "A powerful Apify Actor designed to extract comprehensive data from the Shopify App Store. This scraper can discover all available apps, collect detailed application information, and extract user reviews from any Shopify app, making it perfect for market research, and competitor analysis.",
    "version": "0.0",
    "x-build-id": "pp3pywD7i1FjLpoSh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/appmarketdata~shopify-appstore-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-appmarketdata-shopify-appstore-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/appmarketdata~shopify-appstore-scraper/runs": {
      "post": {
        "operationId": "runs-sync-appmarketdata-shopify-appstore-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/appmarketdata~shopify-appstore-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-appmarketdata-shopify-appstore-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": [
          "scrapeType"
        ],
        "properties": {
          "scrapeType": {
            "title": "Scrape Type",
            "enum": [
              "app",
              "review",
              "developer",
              "category",
              "keyword"
            ],
            "type": "string",
            "description": "Select what type of data to scrape from the Shopify App Store.",
            "default": "app"
          },
          "maxPages": {
            "title": "Max Pages (Global Default)",
            "minimum": 1,
            "type": "integer",
            "description": "Global fallback for max pages across all paginated types (App Review, Category Rank, Keyword Rank) when no type-specific limit is set.",
            "default": 3
          },
          "appHandles": {
            "title": "App Handles",
            "type": "array",
            "description": "App handles or full URLs (e.g. \"tiktok\" or \"https://apps.shopify.com/tiktok\"). The handle is the last path segment of the app URL. Required for Scrape Type: App Information.",
            "items": {
              "type": "string"
            }
          },
          "reviewAppHandles": {
            "title": "App Handles (Review)",
            "type": "array",
            "description": "App handles or full URLs to scrape reviews for (e.g. \"tiktok\" or \"https://apps.shopify.com/tiktok\"). Required for Scrape Type: App Review.",
            "items": {
              "type": "string"
            }
          },
          "reviewSortBy": {
            "title": "Review Sort Order",
            "enum": [
              "relevance",
              "newest"
            ],
            "type": "string",
            "description": "Sort order for reviews.",
            "default": "relevance"
          },
          "maxReviewPages": {
            "title": "Max Review Pages",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of review pages to scrape per app. Falls back to \"Max Pages (Global Default)\" if not set.",
            "default": 5
          },
          "developerHandles": {
            "title": "Developer Handles",
            "type": "array",
            "description": "Developer handles or full partner URLs (e.g. \"shopify\" or \"https://apps.shopify.com/partners/shopify\"). Required for Scrape Type: Developer Information.",
            "items": {
              "type": "string"
            }
          },
          "categoryHandles": {
            "title": "Category Handles",
            "type": "array",
            "description": "Category handles or full category URLs (e.g. \"marketing\", \"https://apps.shopify.com/categories/marketing\", or \"https://apps.shopify.com/categories/marketing/all\"). Required for Scrape Type: Category Rank.",
            "items": {
              "type": "string"
            }
          },
          "maxCategoryPages": {
            "title": "Max Category Pages",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of pages to scrape per category. Falls back to \"Max Pages (Global Default)\" if not set.",
            "default": 1
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "List of search keywords to scrape app rankings for (e.g. \"inventory management\", \"email marketing\"). Required for Scrape Type: Keyword Rank.",
            "items": {
              "type": "string"
            }
          },
          "maxKeywordPages": {
            "title": "Max Keyword Pages",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of result pages to scrape per keyword. Falls back to \"Max Pages (Global Default)\" if not set.",
            "default": 1
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}