# Mobile App Revenue & Competitor Analyzer | Downloads Estimate (`apivault_labs/app-revenue-analyzer`) Actor

Estimate any iOS app's revenue and downloads: bands with confidence, chart positions, update cadence, in-app purchases, developer portfolio and 8 direct competitors. Keyword search mode for ASO. Bulk, no login, no API key. \ per 1,000 reports. CSV/JSON/Excel/API.

- **URL**: https://apify.com/apivault\_labs/app-revenue-analyzer.md
- **Developed by:** [Apivault Labs](https://apify.com/apivault_labs) (community)
- **Categories:** SEO tools, Developer tools
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 app reports

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Mobile App Revenue & Competitor Analyzer

**How much money does any iOS app make?** Estimate downloads and revenue for any App Store app, benchmark it against its direct competitors, and profile the developer's entire portfolio — in seconds, at **$1 per 1,000 app reports**.

No login. No API key. No browser scraping. Paste an App Store link or app ID and get a structured report you can export to JSON, CSV, Excel, or pull via API.

***

### Why this Actor

App-intelligence platforms (Sensor Tower, data.ai, AppMagic) lock these numbers behind **$400+/month** subscriptions. This Actor rebuilds the same estimated layer from public store signals — honestly, with **bands, confidence levels and a stated methodology** on every number — and adds something they don't have: the store's own **competitor recommendation graph** for every app.

Perfect for: app developers, UA/growth teams, ASO specialists, investors doing due diligence, and indie makers validating a niche before building.

***

### Two modes

#### `analyze` — full app intelligence

Pass one or many apps (ID or URL, mixed). Each returns a full report. Pass **2+ apps** and you also get a free **comparison leaderboard** ranking them by estimated downloads.

```json
{
    "mode": "analyze",
    "targets": ["284882215", "https://apps.apple.com/us/app/whatsapp-messenger/id310633997"],
    "country": "us"
}
```

#### `search` — keyword / ASO research

Find the top apps ranking for any keyword, each with estimated downloads and revenue attached. Spot underserved niches: high-download apps with poor ratings are opportunities.

```json
{
    "mode": "search",
    "searchTerms": ["budget tracker", "meditation"],
    "maxSearchResults": 25,
    "country": "us"
}
```

***

### What you get per app

#### 💰 Revenue & traction (estimated)

| Field | Description |
|---|---|
| `estimates.downloadsBand` | lifetime downloads: `low` / `mid` / `high` |
| `estimates.revenueBandUsd` | lifetime revenue band in USD |
| `estimates.confidence` | `high` / `medium` / `low` — based on signal strength |
| `estimates.methodology` | one sentence naming exactly which signals drove the estimate |
| `estimates.caveats` | what this number is NOT (real revenue is private to the developer) |
| `chartPositions` | current position in top-free / top-paid charts |

#### 📱 Product & maintenance

| Field | Description |
|---|---|
| `rating`, `ratingCount` | store rating and total ratings |
| `price`, `isFree`, `hasInAppPurchases` | monetization model |
| `version`, `releaseDate`, `lastUpdateDate`, `daysSinceUpdate` | update cadence — stale apps with big install bases are acquisition targets |
| `genre`, `contentRating`, `fileSizeMb`, `screenshotCount`, `iconUrl` | listing metadata |

#### 🏆 Competition & portfolio

| Field | Description |
|---|---|
| `competitors` | up to 8 direct competitors from our recommendation graph — each with rating, price and estimated downloads |
| `developerPortfolio` | every other app by the same developer, with stats |
| `portfolioRollup` | developer-level totals: app count, combined estimated downloads & revenue |

#### ⚖️ Comparison record (free, 2+ apps)

`recordType: "comparison"` — a leaderboard of all analyzed apps ranked by estimated downloads, with leader/trailer callouts. Never billed.

***

### How estimates work (and how honest they are)

Downloads are modeled from the app's public rating count using industry rating-rate ranges (0.5–2% of downloaders rate), cross-checked against chart position when available. Revenue = price × downloads for paid apps, or a blended ads/IAP lifetime-value coefficient for free apps.

Every estimate ships as a **band with confidence and methodology** — not fake-precision point numbers. Real revenue and download counts are private to the developer and Apple; no tool has them, and we don't pretend to.

### Use cases

- **Competitor research** — how much does the #1 app in your niche actually make? Who else is coming for you?
- **Niche validation** — search a keyword, look for apps with big downloads and <4.0 ratings: unmet demand
- **Acquisition scouting** — filter for apps with huge estimated downloads but `daysSinceUpdate` > 365: abandoned money-makers
- **Investor due diligence** — verify a pitch deck's download claims against public-signal bands
- **Portfolio analysis** — paste one app, get the developer's entire business profiled

### Input reference

| Field | Description |
|---|---|
| `mode` | `analyze` (default) or `search` |
| `targets` | App Store URLs (`apps.apple.com/.../id123456`) or numeric app IDs |
| `searchTerms` | keywords for `search` mode |
| `maxSearchResults` | apps per keyword, 1–50 (default 25) |
| `country` | two-letter store code (`us`, `gb`, `de`, …) — affects ratings, charts, pricing |

Empty input runs a free demo lookup.

### Output

One dataset record per app (JSON / CSV / Excel / API / webhook / n8n / Zapier). Failed lookups are returned with `success: false` and are **never billed**.

### Pricing

Pay per app report — **$1 per 1,000 reports** on paid plans. See the **Pricing** tab. The comparison leaderboard is always free.

### Notes

- iOS App Store only in v1 (Google Play inputs get a free pointer to the iOS twin)
- Estimates are estimates — bands with stated confidence, not measurements

# Actor input Schema

## `mode` (type: `string`):

analyze = full reports for given apps. search = find top apps for keywords with estimates (ASO research).

## `searchTerms` (type: `array`):

App-store keywords to search, e.g. 'meditation', 'budget tracker'.

## `maxSearchResults` (type: `integer`):

How many top results to return per keyword (1-50).

## `maxConcurrency` (type: `integer`):

How many apps are processed in parallel (analyze mode). Higher = faster bulk runs.

## `targets` (type: `array`):

Each item can be an App Store URL (apps.apple.com/.../id123456), a numeric App Store app ID, or a Google Play package name (v1: Play inputs return a free pointer to the iOS twin).

## `country` (type: `string`):

Two-letter App Store country code (us, gb, de, ...). Affects ratings, charts and pricing.

## Actor input object example

```json
{
  "mode": "analyze",
  "maxSearchResults": 25,
  "maxConcurrency": 10,
  "targets": [
    "284882215",
    "https://apps.apple.com/us/app/whatsapp-messenger/id310633997"
  ],
  "country": "us"
}
```

# Actor output Schema

## `reports` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "targets": [
        "284882215",
        "https://apps.apple.com/us/app/whatsapp-messenger/id310633997"
    ],
    "country": "us"
};

// Run the Actor and wait for it to finish
const run = await client.actor("apivault_labs/app-revenue-analyzer").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "targets": [
        "284882215",
        "https://apps.apple.com/us/app/whatsapp-messenger/id310633997",
    ],
    "country": "us",
}

# Run the Actor and wait for it to finish
run = client.actor("apivault_labs/app-revenue-analyzer").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "targets": [
    "284882215",
    "https://apps.apple.com/us/app/whatsapp-messenger/id310633997"
  ],
  "country": "us"
}' |
apify call apivault_labs/app-revenue-analyzer --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,apivault_labs/app-revenue-analyzer"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/oULtaUHKS4ya5uaSq/builds/xYrKp6oOwH00cCNgb/openapi.json
