{
  "openapi": "3.0.1",
  "info": {
    "title": "App Reviews Intelligence: App Store & Google Play",
    "description": "Scrape App Store and Google Play reviews into one dataset and get an AI insight report: sentiment, themes, bugs, feature requests, and competitor or peer comparison. Shareable HTML, Markdown, and JSON.",
    "version": "0.1",
    "x-build-id": "Z5nkSCQEH6FaAZPeD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kupilux~app-reviews-intelligence/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kupilux-app-reviews-intelligence",
        "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/kupilux~app-reviews-intelligence/runs": {
      "post": {
        "operationId": "runs-sync-kupilux-app-reviews-intelligence",
        "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/kupilux~app-reviews-intelligence/run-sync": {
      "post": {
        "operationId": "run-sync-kupilux-app-reviews-intelligence",
        "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": [
          "apps"
        ],
        "properties": {
          "apps": {
            "title": "Apps",
            "maxItems": 10,
            "type": "array",
            "description": "Apps to analyze (max 10). Each item can be an App Store numeric ID (for example 570060128), a Google Play package name (for example com.duolingo), or a full App Store or Google Play listing URL. For a side-by-side peer comparison of two or more apps, use Compare apps instead.",
            "default": [
              "570060128",
              "com.duolingo"
            ],
            "items": {
              "type": "string"
            }
          },
          "stores": {
            "title": "Stores",
            "enum": [
              "apple",
              "google",
              "both"
            ],
            "type": "string",
            "description": "Which stores to collect reviews from: apple (App Store), google (Google Play), or both. Default: both. Numeric App Store IDs are used only on Apple; Play package names are used only on Google Play.",
            "default": "both"
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "ISO 3166-1 alpha-2 country codes for the storefront (for example us, gb, de). Only the first country in the list is used per run.",
            "default": [
              "us"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerApp": {
            "title": "Max reviews per app",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Maximum number of reviews to collect for each app on each selected store (1–2000). Default: 80. Lower values finish faster and cost less.",
            "default": 80
          },
          "sinceDays": {
            "title": "Since (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep only reviews from the last N UTC calendar days. Ignored when Date from or Date to is set."
          },
          "dateFrom": {
            "title": "Date from (UTC)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Optional start of the review date range as a UTC calendar day (YYYY-MM-DD, inclusive). If this or Date to is set, that absolute range is used and Since (days) is ignored. Leave empty for no start bound."
          },
          "dateTo": {
            "title": "Date to (UTC)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Optional end of the review date range as a UTC calendar day (YYYY-MM-DD, inclusive). If both bounds are set, Date from must be on or before Date to."
          },
          "onlyNew": {
            "title": "Only new reviews",
            "type": "boolean",
            "description": "If enabled, skip reviews already collected in earlier runs. Turn this on for scheduled monitoring so you pay only for new reviews.",
            "default": false
          },
          "languages": {
            "title": "Languages",
            "type": "array",
            "description": "Optional Google Play language filter using ISO 639-1 codes (for example en, es, de). Ignored for App Store reviews.",
            "items": {
              "type": "string"
            }
          },
          "includeAiReport": {
            "title": "Include AI report",
            "type": "boolean",
            "description": "If enabled (default), generate the AI insight report as HTML, Markdown, and JSON: themes, sentiment, comparisons, and recommended actions.",
            "default": true
          },
          "competitorApps": {
            "title": "Competitor apps",
            "maxItems": 5,
            "type": "array",
            "description": "Up to 5 competitor apps (App Store IDs, Play package names, or listing URLs). Used with Apps for owner-versus-competitor mode. Ignored when Compare apps has two or more entries.",
            "items": {
              "type": "string"
            }
          },
          "compareApps": {
            "title": "Compare apps (peer mode)",
            "minItems": 2,
            "maxItems": 10,
            "type": "array",
            "description": "Two or more apps for a neutral peer comparison (App A vs App B). Each item can be an App Store ID, Play package name, or listing URL. When this list has two or more entries, it replaces Apps and Competitor apps. The prefilled example compares Duolingo and Babbel on both stores.",
            "items": {
              "type": "string"
            }
          },
          "comparisonMode": {
            "title": "Comparison mode",
            "enum": [
              "owner_vs_competitor",
              "peer"
            ],
            "type": "string",
            "description": "owner_vs_competitor compares your Apps against Competitor apps. peer uses neutral labels for a balanced comparison. Peer is also used automatically when Compare apps has two or more entries.",
            "default": "owner_vs_competitor"
          },
          "useMemory": {
            "title": "Use cross-run memory",
            "type": "boolean",
            "description": "If enabled (default), remember summary statistics across runs (not review text) so rating trends get richer on scheduled runs.",
            "default": true
          },
          "memoryStoreName": {
            "title": "Memory store name",
            "maxLength": 63,
            "type": "string",
            "description": "Name of the memory used across runs (max 63 characters). Default: app-reviews-memory. Reuse the same name on recurring schedules.",
            "default": "app-reviews-memory"
          },
          "memoryKeyValueStoreId": {
            "title": "Existing memory store (optional)",
            "type": "string",
            "description": "Optional. Choose an existing memory store instead of creating one from the name above. Most users can leave this empty."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}