{"openapi":"3.1.0","info":{"title":"GetAppNiche API","description":"App Store and Google Play market data — app search with download and revenue estimates, app records, ASO keyword difficulty, and reviews — for scripts, spreadsheets and automations.\n\n## Authentication\n\nCreate a key in [Settings → API Keys](https://app.getappniche.com/settings/api-keys) (keys start with `getappniche_`) and send it on every request as `Authorization: Bearer <key>` (or `X-Api-Key: <key>`). API access needs a paid plan.\n\n## Credits and limits\n\nEvery call spends API credits from your balance; each operation lists its cost, and list, keyword and review responses report `credits_charged`. Rate limit: 60 requests per minute per key — exceeding it returns 429 with a `Retry-After` header.\n\n## Errors\n\nErrors return `{\"detail\": \"...\"}` with a message that names the cause: 401 missing or invalid key, 402 plan without API access or out of credits, 429 rate or daily call limit reached, 422 invalid parameters.\n\nGuide with curl, Python and JavaScript examples: https://getappniche.com/docs/api-quickstart","termsOfService":"https://getappniche.com/terms","contact":{"name":"GetAppNiche","url":"https://getappniche.com/","email":"yaro@getappniche.com"},"license":{"name":"Proprietary","url":"https://getappniche.com/terms"},"version":"1.0.0"},"servers":[{"url":"https://api.getappniche.com","description":"Production"}],"paths":{"/api/v1/apps":{"get":{"summary":"Search apps","operationId":"searchApps","security":[{"ApiKeyBearer":[]},{"ApiKeyHeader":[]}],"parameters":[{"name":"store","in":"query","required":false,"schema":{"anyOf":[{"enum":["apple","google"],"type":"string"},{"type":"null"}],"title":"Store"},"description":"Limit results to one store: 'apple' (App Store) or 'google' (Google Play). Omit to search both."},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"description":"Store category name to filter by, e.g. 'Health & Fitness', 'Productivity', 'Games'. Use 'categories' to include several at once."},{"name":"categories","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Categories"},"description":"Several category names to include, e.g. ['Health & Fitness', 'Lifestyle']. Takes precedence over 'category'."},{"name":"games","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Games"},"description":"true: games only, on both stores (App Store category Games; every Google Play game category)."},{"name":"game_genres","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"},"maxItems":20},{"type":"null"}],"title":"Game Genres"},"description":"Games of these genres, repeatable (Puzzle, Casual, Role Playing, Strategy...); named alike on both stores. GET /api/meta/game-genres lists them."},{"name":"language","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":5},{"type":"null"}],"title":"Language"},"description":"Single app-language code the listing supports, e.g. 'en', 'de', 'pt-BR'."},{"name":"languages","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Languages"},"description":"Several app-language codes to include, e.g. ['en', 'es']."},{"name":"not_languages","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Not Languages"},"description":"Localization-gap filter: return only apps NOT localized in any of these language codes, e.g. ['it'] finds apps without an Italian localization. App Store data only — combine with languages=['en'] to shortlist English apps missing a target market's language."},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"},"description":"Free-text query matched against app title and developer name, e.g. 'calorie tracker'."},{"name":"search_in","in":"query","required":false,"schema":{"anyOf":[{"enum":["all","title","developer"],"type":"string"},{"type":"null"}],"title":"Search In"},"description":"Which field 'search' matches: 'title', 'developer', or 'all' (default). Use 'developer' to list a publisher's portfolio."},{"name":"price_model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Model"},"description":"Monetisation model: 'Free', 'Freemium' or 'Paid'. Case-insensitive on input."},{"name":"min_rating","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":5,"minimum":0},{"type":"null"}],"title":"Min Rating"},"description":"Lowest average star rating to include, 0-5, e.g. 4."},{"name":"max_rating","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":5,"minimum":0},{"type":"null"}],"title":"Max Rating"},"description":"Highest average star rating to include, 0-5; use to find weak incumbents."},{"name":"min_reviews","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Min Reviews"},"description":"Lowest lifetime review count, e.g. 1000."},{"name":"max_reviews","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Max Reviews"},"description":"Highest lifetime review count, e.g. 1000 to exclude entrenched giants."},{"name":"min_downloads","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Min Downloads"},"description":"Lowest estimated monthly downloads, e.g. 10000."},{"name":"max_downloads","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Max Downloads"},"description":"Highest estimated monthly downloads."},{"name":"min_revenue","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Min Revenue"},"description":"Lowest estimated monthly revenue in USD, e.g. 10000 for $10K/month."},{"name":"max_revenue","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Max Revenue"},"description":"Highest estimated monthly revenue in USD, e.g. 50000 for $50K/month."},{"name":"max_days_since_release","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Max Days Since Release"},"description":"Only apps first released within this many days, e.g. 90 for fresh launches."},{"name":"max_days_since_update","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Max Days Since Update"},"description":"Only apps updated within this many days, e.g. 30 for actively maintained apps."},{"name":"released_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Released After"},"description":"Only apps released on or after this date, 'YYYY-MM-DD'."},{"name":"released_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Released Before"},"description":"Only apps released on or before this date, 'YYYY-MM-DD'."},{"name":"updated_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Updated After"},"description":"Only apps last updated on or after this date, 'YYYY-MM-DD'."},{"name":"updated_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Updated Before"},"description":"Only apps last updated on or before this date, 'YYYY-MM-DD'."},{"name":"growth_metric","in":"query","required":false,"schema":{"anyOf":[{"const":"reviews","type":"string"},{"type":"null"}],"title":"Growth Metric"},"description":"Metric the growth filter measures — currently only 'reviews'."},{"name":"growth_period","in":"query","required":false,"schema":{"anyOf":[{"enum":["7d","14d","30d","60d","90d"],"type":"string"},{"type":"null"}],"title":"Growth Period"},"description":"Window growth is measured over: '7d', '14d', '30d', '60d' or '90d', for both stores. Google Play apps are measured every few weeks, so their 14-90 day growth is pro-rated from each app's nearest earlier measurement and covers far more Play apps than '7d' does."},{"name":"growth_direction","in":"query","required":false,"schema":{"anyOf":[{"enum":["up","down"],"type":"string"},{"type":"null"}],"title":"Growth Direction"},"description":"Keep only apps growing ('up') or declining ('down') over 'growth_period'."},{"name":"min_growth_pct","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Min Growth Pct"},"description":"Lowest absolute growth percentage over 'growth_period', e.g. 20 for at least ±20%."},{"name":"has_meta_ads","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Meta Ads"},"description":"Only apps with (true) or without (false) Meta ad creatives on file."},{"name":"has_apple_ads","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Apple Ads"},"description":"Only apps with (true) or without (false) Apple Search Ads seen."},{"name":"has_creators","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Creators"},"description":"Only apps with (true) or without (false) creator mentions on file."},{"name":"has_contacts","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Contacts"},"description":"Only apps with (true) or without (false) published developer contacts (Google Play)."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"},"description":"How many apps to return, 1-100 (default 50). Each returned app costs 1 credit, so ask for the page size you need; when the balance is lower, the page shrinks to the balance."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"},"description":"How many apps to skip before returning results; use for paging (max 10000 — use filters rather than walking the whole catalog)."},{"name":"sort_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/AppSortBy","default":"downloads"},"description":"Column to sort by: 'downloads' (default), 'revenue', 'growth', 'reviews', 'rating', 'title', 'released' or 'updated'."},{"name":"sort_dir","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortDirection","default":"desc"},"description":"Sort direction: 'desc' (default, highest first) or 'asc'."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppListResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"The plan does not include API access, or the credit balance is used up.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Invalid parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit or daily call limit reached. Wait the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}}},"description":"Search App Store and Google Play apps with monthly download and revenue estimates. Filter by store, category, games (all games or game genres, named alike on both stores), language (including a localization-gap filter), price model, rating, review count, download and revenue ranges, release and update recency, and review growth; sort by any column.\n\nThe response has `items`, `total`, `limit` (the page size actually applied — it shrinks to your credit balance instead of failing), `offset` and `credits_charged`. Fields ending in `_est_monthly` are modelled estimates.\n\n**Cost:** 1 credit per app returned (an empty page costs 1).","tags":["Apps"]}},"/api/v1/apps/{app_id}":{"get":{"summary":"Get app detail","operationId":"getApp","security":[{"ApiKeyBearer":[]},{"ApiKeyHeader":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"},"description":"The app to look up. Accepts the canonical '<store>:<store_id>' form ('apple:284882215', 'google:com.spotify.music'), a bare Apple track id ('284882215'), an Android package name ('com.spotify.music'), or a full App Store / Google Play URL."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppDetail"}}}},"400":{"description":"The app id could not be parsed. Use `{store}:{store_id}` (`apple:284882215`), a numeric Apple id, an Android package name, or a store URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"The plan does not include API access, or the credit balance is used up.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No app with this id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Invalid parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit or daily call limit reached. Wait the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}}},"description":"One app's full record: title, developer, category, price, rating and review counts, download and revenue estimates, store description, icon and screenshot URLs, release and update dates, and the developer's website when the store lists one.\n\n**Cost:** 1 credit per call.","tags":["Apps"]}},"/api/v1/keywords/difficulty":{"get":{"summary":"Score keyword difficulty","operationId":"getKeywordDifficulty","security":[{"ApiKeyBearer":[]},{"ApiKeyHeader":[]}],"parameters":[{"name":"keyword","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":80,"title":"Keyword"},"description":"Search term to score as an ASO target, e.g. 'habit tracker'."},{"name":"store","in":"query","required":false,"schema":{"enum":["apple","google"],"type":"string","default":"apple","title":"Store"},"description":"Store to score against: 'apple' or 'google'."},{"name":"country","in":"query","required":false,"schema":{"type":"string","minLength":2,"maxLength":2,"default":"US","title":"Country"},"description":"Two-letter ISO country code of the storefront, e.g. 'US', 'DE' (default 'US')."},{"name":"language","in":"query","required":false,"schema":{"type":"string","minLength":2,"maxLength":5,"default":"en","title":"Language"},"description":"Language code the keyword is written in, e.g. 'en', 'de', 'pt-BR' (default 'en')."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeywordDifficultyResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"The plan does not include API access, or the credit balance is used up.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Invalid parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit or daily call limit reached. Wait the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}}},"description":"Score one ASO keyword in a storefront: `difficulty` and `popularity` (0-100), `traffic_score` and `opportunity_score`, echoed back with the keyword, store, country and language.\n\n**Cost:** 10 credits per keyword.","tags":["Keywords"]}},"/api/v1/reviews":{"get":{"summary":"List reviews of monitored apps","operationId":"listMonitoredReviews","security":[{"ApiKeyBearer":[]},{"ApiKeyHeader":[]}],"parameters":[{"name":"tracked_app_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tracked App Id"},"description":"UUID of one tracked app in the caller's workspace. Omit to read reviews across all tracked apps."},{"name":"store","in":"query","required":false,"schema":{"anyOf":[{"enum":["apple","google"],"type":"string"},{"type":"null"}],"title":"Store"},"description":"Filter to reviews from one store: 'apple' or 'google'."},{"name":"store_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Store Id"},"description":"Filter to one app by its store-native id, e.g. '284882215' or 'com.spotify.music'."},{"name":"sentiment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sentiment"},"description":"Filter by review sentiment: 'positive', 'neutral' or 'negative'."},{"name":"topic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"},"description":"Filter by an extracted topic label, e.g. 'pricing', 'onboarding', 'bugs'."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"},"description":"How many reviews to return, 1-100 (default 50). Each returned review costs 1 credit, so ask for the page size you need."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"},"description":"How many reviews to skip before returning results; use for paging."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewListResponse"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"The plan does not include API access, or the credit balance is used up.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Invalid parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit or daily call limit reached. Wait the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}}},"description":"Reviews of the apps you monitor in GetAppNiche, with sentiment, topics and improvement areas attached. For any app without a monitor, use `GET /api/v1/reviews/live`.\n\n**Cost:** 1 credit per review returned (an empty page costs 1).","tags":["Reviews"]}},"/api/v1/reviews/live":{"get":{"summary":"Live reviews for any app","description":"The latest reviews of any App Store or Google Play app, read straight from the store — no monitor needed. Rows carry no sentiment or topic enrichment, and Google Play reviews have no title. Page until `has_more` is false.\n\n**Cost:** 1 credit per review returned (an empty page costs 1).","operationId":"listLiveReviews","security":[{"ApiKeyBearer":[]},{"ApiKeyHeader":[]}],"parameters":[{"name":"app_id","in":"query","required":true,"schema":{"type":"string","title":"App Id"},"description":"The app to read reviews for: 'apple:284882215', 'google:com.duolingo', a bare Apple track id, an Android package name, or a store URL."},{"name":"country","in":"query","required":false,"schema":{"type":"string","minLength":2,"maxLength":2,"default":"US","title":"Country"},"description":"Two-letter storefront code the reviews are read from, e.g. 'US', 'DE' (default 'US'). For Google Play this also picks the review language."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"},"description":"How many reviews to return, 1-100 (default 50). Each returned review costs 1 credit, so ask for the page size you need."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"},"description":"How many reviews to skip before returning results. The store feed reaches the 200 newest reviews per app and storefront."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveReviewListResponse"}}}},"400":{"description":"The app id could not be parsed. Use `{store}:{store_id}` (`apple:284882215`), a numeric Apple id, an Android package name, or a store URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"The plan does not include API access, or the credit balance is used up.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Invalid parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit or daily call limit reached. Wait the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}}},"tags":["Reviews"]}}},"components":{"schemas":{"AdCreativeItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"app_id":{"type":"string","title":"App Id"},"store":{"type":"string","enum":["apple","google"],"title":"Store"},"store_id":{"type":"string","title":"Store Id"},"network":{"type":"string","title":"Network"},"creative_format":{"type":"string","title":"Creative Format"},"headline":{"type":"string","title":"Headline"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"landing_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Landing Url"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"},"countries":{"items":{"type":"string"},"type":"array","title":"Countries"},"first_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Seen At"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"},"spend_estimate_low":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Spend Estimate Low"},"spend_estimate_high":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Spend Estimate High"},"reach_estimate_low":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reach Estimate Low"},"reach_estimate_high":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reach Estimate High"},"status":{"type":"string","title":"Status"},"estimate_source":{"type":"string","title":"Estimate Source"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"page_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Name"},"cta_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cta Text"},"publisher_platform":{"items":{"type":"string"},"type":"array","title":"Publisher Platform"},"payer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payer"},"targeting":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Targeting"},"reach_by_country":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Reach By Country"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"num_served_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Served Days"},"variant_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Variant Count"}},"type":"object","required":["id","app_id","store","store_id","network","creative_format","headline","body","landing_url","media_url","countries","first_seen_at","last_seen_at","spend_estimate_low","spend_estimate_high","reach_estimate_low","reach_estimate_high","status","estimate_source","source_url"],"title":"AdCreativeItem"},"AppDetail":{"properties":{"app_id":{"type":"string","title":"App Id"},"store":{"type":"string","enum":["apple","google"],"title":"Store"},"store_id":{"type":"string","title":"Store Id"},"bundle_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bundle Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"developer_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Developer Name"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"game_genre":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Game Genre"},"price_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Model"},"price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price"},"rating":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rating"},"rating_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating Count"},"released_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Released At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"app_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Url"},"reviews_delta_7d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reviews Delta 7D"},"downloads_est_monthly":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Downloads Est Monthly"},"revenue_est_monthly":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Revenue Est Monthly"},"revenue_capped":{"type":"boolean","title":"Revenue Capped","description":"True when revenue_est_monthly is an upper bound, not a modelled figure: the App Store app is not in its category's US top-grossing chart, so its estimate is capped at what the bottom of that chart earns (every capped app in a category shows the same value). Read it as \"up to $X/mo\". Always false for Google Play.","default":false},"growth_reviews_7d_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Growth Reviews 7D Pct"},"growth_reviews_14d_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Growth Reviews 14D Pct"},"growth_reviews_30d_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Growth Reviews 30D Pct"},"growth_reviews_60d_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Growth Reviews 60D Pct"},"growth_reviews_90d_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Growth Reviews 90D Pct"},"reviews_delta_1d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reviews Delta 1D"},"reviews_delta_3d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reviews Delta 3D"},"reviews_delta_14d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reviews Delta 14D"},"reviews_delta_30d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reviews Delta 30D"},"reviews_delta_60d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reviews Delta 60D"},"reviews_delta_90d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reviews Delta 90D"},"growth_reviews_1d_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Growth Reviews 1D Pct"},"growth_reviews_3d_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Growth Reviews 3D Pct"},"growth_direction_7d":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Growth Direction 7D"},"has_meta_ads":{"type":"boolean","title":"Has Meta Ads"},"has_apple_ads":{"type":"boolean","title":"Has Apple Ads"},"has_creators":{"type":"boolean","title":"Has Creators"},"has_contacts":{"type":"boolean","title":"Has Contacts"},"source_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Source Updated At"},"platforms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platforms"},"languages":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Languages"},"monetization":{"anyOf":[{"type":"string","enum":["subscription","iap","paid","free"]},{"type":"null"}],"title":"Monetization","description":"App Store pay model: subscription, iap (in-app purchases, no subscription), paid or free. Null for Google Play and for apps without the data."},"editors_choice":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Editors Choice","description":"Apple's Editors' Choice. Null for Google Play and apps without the data."},"screenshot_urls":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screenshot Urls"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"content_rating":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Rating"},"file_size_mb":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"File Size Mb"},"language_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Language Count"},"developer_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Developer Url"},"contacts":{"anyOf":[{"$ref":"#/components/schemas/DeveloperContacts"},{"type":"null"}]},"ad_creatives":{"items":{"$ref":"#/components/schemas/AdCreativeItem"},"type":"array","title":"Ad Creatives"},"ad_creatives_total":{"type":"integer","title":"Ad Creatives Total","default":0},"creators":{"items":{"$ref":"#/components/schemas/CreatorMentionItem"},"type":"array","title":"Creators"},"organic":{"$ref":"#/components/schemas/AppOrganicSummary"},"store_page":{"anyOf":[{"$ref":"#/components/schemas/StorePage"},{"$ref":"#/components/schemas/StorePagePublic"},{"$ref":"#/components/schemas/StorePageBasic"},{"type":"null"}],"title":"Store Page"}},"type":"object","required":["app_id","store","store_id","bundle_id","title","developer_name","category","price_model","price","rating","rating_count","released_at","updated_at","icon_url","app_url","reviews_delta_7d","downloads_est_monthly","revenue_est_monthly","growth_reviews_7d_pct","growth_direction_7d","has_meta_ads","has_apple_ads","has_creators","has_contacts","source_updated_at","screenshot_urls","description"],"title":"AppDetail"},"AppListItem":{"properties":{"app_id":{"type":"string","title":"App Id"},"store":{"type":"string","enum":["apple","google"],"title":"Store"},"store_id":{"type":"string","title":"Store Id"},"bundle_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bundle Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"developer_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Developer Name"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"game_genre":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Game Genre"},"price_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Model"},"price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price"},"rating":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rating"},"rating_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating Count"},"released_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Released At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"app_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Url"},"reviews_delta_7d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reviews Delta 7D"},"downloads_est_monthly":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Downloads Est Monthly"},"revenue_est_monthly":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Revenue Est Monthly"},"revenue_capped":{"type":"boolean","title":"Revenue Capped","description":"True when revenue_est_monthly is an upper bound, not a modelled figure: the App Store app is not in its category's US top-grossing chart, so its estimate is capped at what the bottom of that chart earns (every capped app in a category shows the same value). Read it as \"up to $X/mo\". Always false for Google Play.","default":false},"growth_reviews_7d_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Growth Reviews 7D Pct"},"growth_reviews_14d_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Growth Reviews 14D Pct"},"growth_reviews_30d_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Growth Reviews 30D Pct"},"growth_reviews_60d_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Growth Reviews 60D Pct"},"growth_reviews_90d_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Growth Reviews 90D Pct"},"reviews_delta_1d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reviews Delta 1D"},"reviews_delta_3d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reviews Delta 3D"},"reviews_delta_14d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reviews Delta 14D"},"reviews_delta_30d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reviews Delta 30D"},"reviews_delta_60d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reviews Delta 60D"},"reviews_delta_90d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reviews Delta 90D"},"growth_reviews_1d_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Growth Reviews 1D Pct"},"growth_reviews_3d_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Growth Reviews 3D Pct"},"growth_direction_7d":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Growth Direction 7D"},"has_meta_ads":{"type":"boolean","title":"Has Meta Ads"},"has_apple_ads":{"type":"boolean","title":"Has Apple Ads"},"has_creators":{"type":"boolean","title":"Has Creators"},"has_contacts":{"type":"boolean","title":"Has Contacts"},"source_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Source Updated At"},"platforms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platforms"},"languages":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Languages"},"monetization":{"anyOf":[{"type":"string","enum":["subscription","iap","paid","free"]},{"type":"null"}],"title":"Monetization","description":"App Store pay model: subscription, iap (in-app purchases, no subscription), paid or free. Null for Google Play and for apps without the data."},"editors_choice":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Editors Choice","description":"Apple's Editors' Choice. Null for Google Play and apps without the data."}},"type":"object","required":["app_id","store","store_id","bundle_id","title","developer_name","category","price_model","price","rating","rating_count","released_at","updated_at","icon_url","app_url","reviews_delta_7d","downloads_est_monthly","revenue_est_monthly","growth_reviews_7d_pct","growth_direction_7d","has_meta_ads","has_apple_ads","has_creators","has_contacts","source_updated_at"],"title":"AppListItem"},"AppListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AppListItem"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit"},"offset":{"type":"integer","minimum":0.0,"title":"Offset"},"credits_charged":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Charged"}},"type":"object","required":["items","total","limit","offset"],"title":"AppListResponse"},"AppOrganicSummary":{"properties":{"videos_count":{"type":"integer","title":"Videos Count","default":0},"views_total":{"type":"integer","title":"Views Total","default":0},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"},"top":{"items":{"$ref":"#/components/schemas/OrganicVideoItem"},"type":"array","title":"Top"},"searched_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Searched At"},"stale":{"type":"boolean","title":"Stale","default":true}},"type":"object","title":"AppOrganicSummary","description":"The Organic block of an app's detail: how many videos name it, their\nviews together, when one was last seen, and the top three by views."},"AppSortBy":{"type":"string","enum":["downloads","revenue","growth","reviews","rating","title","released","updated"],"title":"AppSortBy"},"CreatorMentionItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"creator_id":{"type":"string","format":"uuid","title":"Creator Id"},"app_id":{"type":"string","title":"App Id"},"store":{"type":"string","enum":["apple","google"],"title":"Store"},"store_id":{"type":"string","title":"Store Id"},"platform":{"type":"string","title":"Platform"},"handle":{"type":"string","title":"Handle"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"profile_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Url"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"followers_estimate":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Followers Estimate"},"engagement_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Engagement Rate"},"mention_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mention Url"},"first_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Seen At"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"},"engagement_estimate":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Engagement Estimate"},"estimate_source":{"type":"string","title":"Estimate Source"}},"type":"object","required":["id","creator_id","app_id","store","store_id","platform","handle","display_name","profile_url","avatar_url","country","followers_estimate","engagement_rate","mention_url","first_seen_at","last_seen_at","engagement_estimate","estimate_source"],"title":"CreatorMentionItem"},"DeveloperContacts":{"properties":{"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"support_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Support Email"},"privacy_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Privacy Url"},"legal_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Name"},"legal_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Email"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"}},"type":"object","title":"DeveloperContacts","description":"Developer contact details published on Google Play."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"KeywordDifficultyResponse":{"properties":{"keyword":{"type":"string","title":"Keyword"},"country":{"type":"string","title":"Country"},"language":{"type":"string","title":"Language"},"store":{"type":"string","enum":["apple","google"],"title":"Store"},"difficulty":{"type":"integer","title":"Difficulty"},"popularity":{"type":"integer","title":"Popularity"},"traffic_score":{"type":"integer","title":"Traffic Score"},"opportunity_score":{"type":"integer","title":"Opportunity Score"},"credits_charged":{"type":"integer","title":"Credits Charged"}},"type":"object","required":["keyword","country","language","store","difficulty","popularity","traffic_score","opportunity_score","credits_charged"],"title":"KeywordDifficultyResponse"},"LiveReviewItem":{"properties":{"external_id":{"type":"string","title":"External Id"},"store":{"type":"string","enum":["apple","google"],"title":"Store"},"store_id":{"type":"string","title":"Store Id"},"author":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author"},"rating":{"type":"integer","title":"Rating"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"body":{"type":"string","title":"Body"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"country":{"type":"string","title":"Country"},"review_created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Review Created At"}},"type":"object","required":["external_id","store","store_id","author","rating","title","body","version","country","review_created_at"],"title":"LiveReviewItem","description":"One review as the store published it, without sentiment or topic enrichment."},"LiveReviewListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LiveReviewItem"},"type":"array","title":"Items"},"credits_charged":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Charged"},"returned":{"type":"integer","title":"Returned"},"limit":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Limit"},"offset":{"type":"integer","minimum":0.0,"title":"Offset"},"has_more":{"type":"boolean","title":"Has More"},"source":{"type":"string","const":"store_feed","title":"Source","default":"store_feed"},"enriched":{"type":"boolean","const":false,"title":"Enriched","default":false}},"type":"object","required":["items","returned","limit","offset","has_more"],"title":"LiveReviewListResponse"},"OrganicVideoApp":{"properties":{"store":{"type":"string","enum":["apple","google"],"title":"Store"},"store_id":{"type":"string","title":"Store Id"},"app_id":{"type":"string","title":"App Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"revenue_est_monthly":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Revenue Est Monthly"},"downloads_est_monthly":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Downloads Est Monthly"}},"type":"object","required":["store","store_id","app_id"],"title":"OrganicVideoApp","description":"The app a video is about, with the dataset's context for it."},"OrganicVideoCreator":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"handle":{"type":"string","title":"Handle"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"profile_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Url"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"followers_estimate":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Followers Estimate"}},"type":"object","required":["id","handle"],"title":"OrganicVideoCreator","description":"The channel/account behind a video (app_api.creators)."},"OrganicVideoItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"platform":{"type":"string","title":"Platform"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"views":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Views"},"likes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Likes"},"comments":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Comments"},"posted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Posted At"},"duration_s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration S"},"is_official":{"type":"boolean","title":"Is Official","default":false},"creator":{"$ref":"#/components/schemas/OrganicVideoCreator"},"app":{"$ref":"#/components/schemas/OrganicVideoApp"},"estimate_source":{"type":"string","title":"Estimate Source","default":"external"}},"type":"object","required":["id","platform","creator","app"],"title":"OrganicVideoItem","description":"One short video about an app (Organic videos library, v1 = YouTube\nShorts; TikTok / Instagram arrive as more `platform` values)."},"ReviewItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"tracked_app_id":{"type":"string","format":"uuid","title":"Tracked App Id"},"store":{"type":"string","enum":["apple","google"],"title":"Store"},"store_id":{"type":"string","title":"Store Id"},"app_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Title"},"author":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author"},"rating":{"type":"integer","title":"Rating"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"body":{"type":"string","title":"Body"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"country":{"type":"string","title":"Country"},"review_created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Review Created At"},"sentiment":{"type":"string","title":"Sentiment"},"sentiment_score":{"type":"number","title":"Sentiment Score"},"topics":{"items":{"type":"string"},"type":"array","title":"Topics"},"improvement_areas":{"items":{"type":"string"},"type":"array","title":"Improvement Areas"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"enriched_at":{"type":"string","format":"date-time","title":"Enriched At"}},"type":"object","required":["id","tracked_app_id","store","store_id","app_title","author","rating","title","body","version","country","review_created_at","sentiment","sentiment_score","topics","improvement_areas","summary","enriched_at"],"title":"ReviewItem"},"ReviewListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ReviewItem"},"type":"array","title":"Items"},"credits_charged":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Charged"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit"},"offset":{"type":"integer","minimum":0.0,"title":"Offset"}},"type":"object","required":["items","total","limit","offset"],"title":"ReviewListResponse"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection"},"StorePage":{"properties":{"model":{"type":"string","enum":["subscription","iap","paid","free"],"title":"Model"},"price_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Min"},"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle"},"editors_choice":{"type":"boolean","title":"Editors Choice"},"ratings_hist":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Ratings Hist"},"similar_apps":{"items":{"$ref":"#/components/schemas/AppListItem"},"type":"array","title":"Similar Apps"},"has_iap":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Iap"},"has_subscription":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Subscription"},"has_consumable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Consumable"},"items":{"items":{"$ref":"#/components/schemas/StorePageItem"},"type":"array","title":"Items"},"price_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Max"},"events":{"anyOf":[{"items":{"$ref":"#/components/schemas/StorePageEvent"},"type":"array"},{"type":"null"}],"title":"Events"},"similar_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Similar Ids"},"privacy_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Privacy Types"},"third_party_ads":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Third Party Ads"},"version_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version Count"},"updates_90d":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Updates 90D"},"release_cadence_days":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Release Cadence Days"},"checked_at":{"type":"string","format":"date-time","title":"Checked At"},"changed_at":{"type":"string","format":"date-time","title":"Changed At"}},"type":"object","required":["model","price_min","subtitle","editors_choice","ratings_hist","similar_apps","has_iap","has_subscription","has_consumable","items","price_max","events","similar_ids","privacy_types","third_party_ads","version_count","updates_90d","release_cadence_days","checked_at","changed_at"],"title":"StorePage","description":"Everything app_api.app_store_page keeps for an app (alembic 0109), for\na Pro-entitled caller. Every field is required on purpose: a payload of a\nsmaller level can never validate as this shape, so it is never padded out\nwith nulls for the rest."},"StorePageBasic":{"properties":{"model":{"type":"string","enum":["subscription","iap","paid","free"],"title":"Model"},"price_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Min","description":"Lowest in-app purchase price in USD; null when the app lists none."},"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle","description":"The subtitle under the app's name on the App Store; null when it has none."}},"additionalProperties":false,"type":"object","required":["model","price_min","subtitle"],"title":"StorePageBasic","description":"What the public REST API and MCP get of an app's App Store page data:\nthe pay model, the lowest in-app purchase price (the public \"from $X\") and\nthe subtitle. Extra keys are refused, so a richer record can never\nvalidate as this shape (each level is exactly its keys)."},"StorePageEvent":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start"},"end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End"}},"type":"object","title":"StorePageEvent"},"StorePageItem":{"properties":{"name":{"type":"string","title":"Name"},"price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price"},"price_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Text"}},"type":"object","required":["name"],"title":"StorePageItem"},"StorePagePublic":{"properties":{"model":{"type":"string","enum":["subscription","iap","paid","free"],"title":"Model"},"price_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Min"},"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle"},"editors_choice":{"type":"boolean","title":"Editors Choice"},"ratings_hist":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Ratings Hist"},"similar_apps":{"items":{"$ref":"#/components/schemas/StorePageSimilarName"},"type":"array","title":"Similar Apps"}},"additionalProperties":false,"type":"object","required":["model","price_min","subtitle","editors_choice","ratings_hist","similar_apps"],"title":"StorePagePublic","description":"The public app page's level (no Pro entitlement: the SEO render, the\npaywall teaser, a free account): basic plus the star breakdown, Editors'\nChoice and \"You Might Also Like\" as names only. Extra keys are refused."},"StorePageSimilarName":{"properties":{"store_id":{"type":"string","title":"Store Id"},"title":{"type":"string","title":"Title"}},"type":"object","required":["store_id","title"],"title":"StorePageSimilarName","description":"An app from the App Store's \"You Might Also Like\" that the catalog has:\nits track id and name (the public app page links it)."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"Error":{"title":"Error","type":"object","properties":{"detail":{"type":"string","description":"What went wrong and how to fix it."}},"required":["detail"]}},"securitySchemes":{"ApiKeyBearer":{"type":"http","scheme":"bearer","description":"Your GetAppNiche API key (`getappniche_...`) as a Bearer token."},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"The same API key in an `X-Api-Key` header, for clients that cannot set `Authorization`."}}},"tags":[{"name":"Apps","description":"Search the app catalog and read one app's record."},{"name":"Keywords","description":"ASO keyword difficulty and opportunity scores."},{"name":"Reviews","description":"Store reviews: live for any app, enriched for monitored apps."}],"externalDocs":{"description":"REST API quickstart","url":"https://getappniche.com/docs/api-quickstart"}}