{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopify App Store Scraper: Apps, Pricing Plans & Reviews",
    "description": "Scrape the Shopify App Store: apps by keyword or category with position, rating, reviews, pricing, trial and developer; full listings with every plan, languages, launch date and support email; merchant reviews with developer replies. No login. Pay per row.",
    "version": "0.1",
    "x-build-id": "phLXlAzhlhBu21QWg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/themineworks~shopify-app-store-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-themineworks-shopify-app-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/themineworks~shopify-app-store-scraper/runs": {
      "post": {
        "operationId": "runs-sync-themineworks-shopify-app-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/themineworks~shopify-app-store-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-themineworks-shopify-app-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "What to collect",
            "enum": [
              "search",
              "details",
              "reviews"
            ],
            "type": "string",
            "description": "Search returns one row per app found by your keywords or categories, in the App Store's own order. Details returns one full row per app you list in Apps. Reviews returns one row per merchant review of the apps you list in Apps.",
            "default": "search"
          },
          "searchTerms": {
            "title": "Search keywords (search mode)",
            "type": "array",
            "description": "One keyword per line, the way a merchant types it in the App Store search box (product reviews, upsell, subscriptions). A search link such as https://apps.shopify.com/search?q=upsell also works. Up to 100 keywords and categories per run. When both this and Categories are left out, the run searches product reviews as an example.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories (search mode)",
            "type": "array",
            "description": "One App Store category per line, as a link (https://apps.shopify.com/categories/marketing-and-conversion-social-trust-product-reviews) or its handle. A top level category such as store-design is read through all of its subcategories.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxAppsPerSearch": {
            "title": "Max apps per keyword or category",
            "minimum": 20,
            "maximum": 2000,
            "type": "integer",
            "description": "How many apps to collect for each keyword or category, 20 to 2,000. The App Store lists 24 apps a page; a single subcategory shows up to 480.",
            "default": 50
          },
          "includeFullDetails": {
            "title": "Add the full listing to each search row",
            "type": "boolean",
            "description": "Adds everything details mode returns (description, every pricing plan, languages, works with, launch date, support email, counts per star and more) to each search row, at the same price per app.",
            "default": false
          },
          "apps": {
            "title": "Apps (details and reviews modes)",
            "type": "array",
            "description": "One app per line: an App Store link (https://apps.shopify.com/judgeme), a reviews link (https://apps.shopify.com/judgeme/reviews) or the handle (judgeme). Up to 1,000 apps per run; repeats are read once.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerApp": {
            "title": "Max reviews per app (reviews mode)",
            "minimum": 20,
            "maximum": 10000,
            "type": "integer",
            "description": "How many reviews to collect for each app, 20 to 10,000. The App Store shows 10 reviews a page; the actor pages until it reaches this number or the last review that matches your filters.",
            "default": 50
          },
          "reviewSort": {
            "title": "Review order",
            "enum": [
              "newest",
              "relevance"
            ],
            "type": "string",
            "description": "Newest first is the one to use for monitoring.",
            "default": "newest"
          },
          "reviewStars": {
            "title": "Star filter",
            "type": "array",
            "description": "Leave empty for every rating. Pick one or more star levels to collect only those, for example 1 and 2 stars to read a competitor's complaints. Max reviews per app applies to the combined list.",
            "items": {
              "type": "string",
              "enum": [
                "5",
                "4",
                "3",
                "2",
                "1"
              ],
              "enumTitles": [
                "5 stars",
                "4 stars",
                "3 stars",
                "2 stars",
                "1 star"
              ]
            },
            "default": []
          },
          "onlyNewReviews": {
            "title": "Only new reviews (for schedules)",
            "type": "boolean",
            "description": "Skip reviews an earlier run of yours already delivered, so a scheduled run returns and charges only new ones. Keep the order on Newest first so the run stops as soon as it reaches reviews it has seen.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}