{
  "openapi": "3.0.1",
  "info": {
    "title": "AppHitlist App Intelligence",
    "description": "Chart movers, modeled monthly revenue and downloads, Meta ad runtime and complaint themes from AppHitlist. Uses the owner's key, not the customer's. Figures are AppHitlist estimates, not Apple's. Not affiliated with Apple or Meta.",
    "version": "1.0",
    "x-build-id": "GyhJLDk6BqgAA8nqf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mmdincer~apphitlist-app-intelligence/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mmdincer-apphitlist-app-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/mmdincer~apphitlist-app-intelligence/runs": {
      "post": {
        "operationId": "runs-sync-mmdincer-apphitlist-app-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/mmdincer~apphitlist-app-intelligence/run-sync": {
      "post": {
        "operationId": "run-sync-mmdincer-apphitlist-app-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",
        "properties": {
          "operation": {
            "title": "What to do",
            "enum": [
              "find_chart_movers",
              "find_new_winning_apps",
              "find_top_earning_apps",
              "search_apps",
              "get_app",
              "find_longest_running_ads",
              "get_app_ads",
              "get_app_complaints",
              "get_category_complaints"
            ],
            "type": "string",
            "description": "<b>Chart movers</b> lists apps that climbed or entered a daily App Store chart. <b>New winning apps</b> lists apps released in the last 6 months that already earn $10K or more a month (games are left out unless the category is Games). <b>Top earning apps</b> lists the highest monthly revenue. <b>Search apps</b> finds an app or developer by name. <b>App details</b> reads one app by URL, numeric id or name. <b>Longest-running ads</b> and <b>Ads for one app</b> read active Meta ads. <b>Complaints for one app</b> and <b>Complaints in a category</b> read themes from 1 and 2 star reviews. Ads and complaints need a Pro key.",
            "default": "find_chart_movers"
          },
          "countries": {
            "title": "Chart countries",
            "maxItems": 8,
            "type": "array",
            "description": "Used by <b>Chart movers</b>. Up to 8 of the 36 App Store countries. Each country is one call. <code>uk</code> is read as <code>gb</code>. Empty means the United States. Category charts are not available in every country: us, gb and de have grossing, free and paid; many others have grossing and free; the rest have grossing only.",
            "items": {
              "type": "string",
              "enum": [
                "us",
                "gb",
                "de",
                "fr",
                "ca",
                "au",
                "jp",
                "kr",
                "br",
                "tr",
                "es",
                "it",
                "mx",
                "tw",
                "nl",
                "se",
                "ch",
                "sg",
                "hk",
                "ae",
                "sa",
                "no",
                "dk",
                "pl",
                "ru",
                "in",
                "id",
                "th",
                "nz",
                "ie",
                "at",
                "be",
                "za",
                "il",
                "cl",
                "co"
              ],
              "enumTitles": [
                "United States",
                "United Kingdom",
                "Germany",
                "France",
                "Canada",
                "Australia",
                "Japan",
                "South Korea",
                "Brazil",
                "Türkiye",
                "Spain",
                "Italy",
                "Mexico",
                "Taiwan",
                "Netherlands",
                "Sweden",
                "Switzerland",
                "Singapore",
                "Hong Kong",
                "United Arab Emirates",
                "Saudi Arabia",
                "Norway",
                "Denmark",
                "Poland",
                "Russia",
                "India",
                "Indonesia",
                "Thailand",
                "New Zealand",
                "Ireland",
                "Austria",
                "Belgium",
                "South Africa",
                "Israel",
                "Chile",
                "Colombia"
              ]
            },
            "default": [
              "us"
            ]
          },
          "chart": {
            "title": "Chart",
            "enum": [
              "grossing",
              "free",
              "paid"
            ],
            "type": "string",
            "description": "Which daily list. <b>Grossing</b> is top grossing (revenue). <b>Free</b> is top free. <b>Paid</b> is top paid.",
            "default": "grossing"
          },
          "date": {
            "title": "Chart date",
            "type": "string",
            "description": "Chart day as YYYY-MM-DD (UTC). Leave empty for the latest day. Raw daily lists are kept for about 35 to 60 days."
          },
          "days": {
            "title": "Compare with days earlier",
            "minimum": 1,
            "maximum": 28,
            "type": "integer",
            "description": "Compare with the newest chart at least this many days earlier. 1 is day over day. 7 is week over week. From 1 to 28.",
            "default": 1
          },
          "category": {
            "title": "Category",
            "type": "string",
            "description": "Optional for chart movers, new winners, top earners and longest-running ads. Required for category complaints. A name such as Health & Fitness or Finance, a short name such as fitness, or a numeric genre id. Leave empty for the overall list. New winning apps leave games out unless this is Games. 1 to 60 characters."
          },
          "apps": {
            "title": "Apps",
            "maxItems": 20,
            "type": "array",
            "description": "One App Store URL, numeric id or app name per line. Used by app details, ads for one app, and complaints for one app. A name resolves to the best search match. Up to 20. Each app is one call.",
            "items": {
              "type": "string"
            }
          },
          "queries": {
            "title": "Search queries",
            "maxItems": 10,
            "type": "array",
            "description": "Used by <b>Search apps</b>. One app or developer name per line, 2 to 80 characters. Up to 10. Each query is one call.",
            "items": {
              "type": "string"
            }
          },
          "kind": {
            "title": "Complaint kind",
            "enum": [
              "product",
              "billing",
              "price"
            ],
            "type": "string",
            "description": "Used by <b>Complaints in a category</b>. Leave empty for every kind. Otherwise only product, billing or price complaints."
          },
          "limit": {
            "title": "Maximum results per call",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many rows to ask for on each call. Chart movers apply this to risers and, separately, to new entries (1–50, default 20). New winners and top earners: 1–50, default 20. Search: 1–10, default 5. Ads: 1–20, default 10. Category complaints: 1–30, default 15. App details and complaints for one app ignore this. You pay for each row that is stored.",
            "default": 20
          },
          "concurrency": {
            "title": "Calls in parallel",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "How many AppHitlist calls may be in flight at once (1 to 4, default 2). The Actor still starts a call at most about once every 1.1 seconds, under the Pro cap of 60 calls a minute. A 429 waits and retries that call. One failed call does not stop the others, except a rejected key, the Free monthly cap, a Free key on a Pro-only tool, or a category AppHitlist does not recognise.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}