{
  "openapi": "3.0.1",
  "info": {
    "title": "App Review AI Analyzer: Your App Store & Play Reviews",
    "description": "Upload your own App Store and Google Play reviews (CSV or JSON) or connect the Google Play Developer API for your own Android apps, and get AI labels for bugs, pricing, billing, feature requests and churn, with trends by app version.",
    "version": "0.1",
    "x-build-id": "16YkeSjPocV8oW0ND"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/reliable_tools~app-review-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-reliable_tools-app-review-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/reliable_tools~app-review-scraper/runs": {
      "post": {
        "operationId": "runs-sync-reliable_tools-app-review-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/reliable_tools~app-review-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-reliable_tools-app-review-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": {
          "reviewsFile": {
            "title": "Reviews file (CSV or JSON)",
            "type": "string",
            "description": "Upload your own reviews as CSV, JSON or JSON Lines, for example a Play Console reviews export, or App Store reviews you copied out of App Store Connect or exported from your review tool. Each row needs a rating (1 to 5) and the review text. Date, version, country, title and app name are recommended. Column names are matched automatically (date, rating, text, title, version, country, app, ...)."
          },
          "reviewsFileUrl": {
            "title": "Or: reviews file URL",
            "type": "string",
            "description": "Direct link to a CSV or JSON file you own, for example a cloud storage link. App store pages are not accepted. The website's robots.txt must allow the download. Max 20 MB."
          },
          "reviewsKeyValueStore": {
            "title": "Or: Apify key-value store",
            "type": "string",
            "description": "Pick one of your Apify key-value stores that holds the reviews file. The Actor only gets read access to this store."
          },
          "reviewsRecordKey": {
            "title": "Record key in that store",
            "type": "string",
            "description": "Key of the record with the reviews file, for example REVIEWS_CSV."
          },
          "reviews": {
            "title": "Or: reviews as JSON",
            "type": "array",
            "description": "A list of review objects, for example [{\"date\": \"2026-10-01\", \"rating\": 2, \"text\": \"Crashes on login\", \"version\": \"3.2.0\", \"country\": \"us\"}]. The example reviews filled in here are a free demo and are not charged."
          },
          "appName": {
            "title": "App name for the file",
            "type": "string",
            "description": "Optional. Used in the summary when your file has no app column."
          },
          "maxImportedReviews": {
            "title": "Max reviews from the file",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "At most this many reviews from your file are analysed (up to 10000).",
            "default": 10000
          },
          "apps": {
            "title": "Your Google Play apps (official API mode)",
            "type": "array",
            "description": "Only for Android apps you manage, together with your own service account key below. Google Play package names, for example com.example.app. Public store pages are never read. For App Store apps, upload your reviews as a file instead.",
            "items": {
              "type": "string"
            }
          },
          "googlePlayServiceAccountJson": {
            "title": "Google Play Developer API: service account JSON",
            "type": "string",
            "description": "JSON key of a Google Cloud service account that you invited in Play Console with access to the app. Google returns only reviews created or edited in the last 7 days through this API; for older reviews upload a Play Console reviews export as a file."
          },
          "maxReviewsPerApp": {
            "title": "Max reviews per app (Google Play API mode)",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Newest reviews first, at most 1000 per app.",
            "default": 1000
          },
          "reviewsSince": {
            "title": "Only reviews since",
            "type": "string",
            "description": "Optional. Skip reviews older than this date (both modes)."
          },
          "aiLabels": {
            "title": "AI labels and severity",
            "type": "boolean",
            "description": "Adds 12 AI labels with probabilities (bug/crash, performance, pricing, subscription/billing, feature request, UX/design, support, ads, privacy, praise, churn intent, competitor mentioned) and a severity score to every review. Charged per labeled review.",
            "default": true
          },
          "maxTextLength": {
            "title": "Max characters of review text in the output",
            "minimum": 50,
            "maximum": 500,
            "type": "integer",
            "description": "Review text is shortened to this many characters (50 to 500). The AI labels still read the whole review.",
            "default": 500
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}