# App Idea Validator: Market Check, Lean Canvas & Legal (`jaclfruit_296/app-idea-validator-actor`) Actor

Validate an app idea with real App Store & Google Play data: competitors, review gaps, AI score, Lean Canvas, legal check. About $0.40 per idea, pay per result.

- **URL**: https://apify.com/jaclfruit_296/app-idea-validator-actor.md
- **Developed by:** [Huy Tran](https://apify.com/jaclfruit_296) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $350.00 / 1,000 idea reports

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## App Idea Validator: Market Check, Lean Canvas & Legal

💡 **About $0.40 per idea** ($0.35 per report + $0.003 per competitor row). Pay only for results, no subscription.

Validate a mobile app idea in a few minutes, with **real App Store and Google Play data** instead of guesses.
Describe your idea in a sentence. The Actor finds your competitors, reads their numbers and their critical
reviews, and gives you a clear verdict: **Build**, **Reposition** or **Skip**, plus a one-page **Lean Canvas**
and a **legal & store-policy check** so you know what to build and what to avoid.

### What you get

- **A verdict with three scores (0–10)** for **Demand**, **Competition** and **Revenue**, each with a one-line reason.
- **Quick-filter warnings** for common deal-breakers: a page of look-alike apps, a strong free option, a feature the OS already has, store-policy or legal risk.
- **Market numbers per store**: competitors, strong competitors, newcomers that still gained traction, ratings on the leader, average rating, share of stale apps, share of paid apps or in-app purchases.
- **A competitor table**: rating, ratings count, installs, price, last update and a *direct competitor* flag, with links.
- **Gaps from competitor reviews**: what users hate or miss, with real quotes linked to the source.
- **A one-page Lean Canvas**: customer, problem, value proposition, 3 core features, channels and revenue (with the number of paying users needed for $1,000/month).
- **A legal & store-policy check**: risks that apply to your idea (App Store and Google Play rules, GDPR, CCPA, COPPA, health claims, trademarks), ranked High / Medium / Low, each with a fix.
- **Next moves**: sharper angles, a pricing suggestion, next steps and store keywords to target.

Everything is saved as a clean **HTML report**, a **dataset** of competitors (CSV, Excel, JSON) and a **JSON verdict** for automations and AI agents.

### Who it is for

- **Indie developers and app studios** choosing what to build next.
- **Product managers** sanity-checking a feature or a spin-off app.
- **ASO and growth people** sizing up a category before they enter it.
- **AI agents**: call it through the Apify API or the Apify MCP server to score ideas automatically.

### How to use it

1. Write your idea in **Your app idea**. One to three sentences: what it does, for whom, how it makes money.
2. Optionally add **store search keywords**. If you leave them empty, the AI picks three.
3. Choose the stores and the country, then click **Start**.
4. Open the **Validation report** in the Output tab.

#### Example input

```json
{
  "idea": "A habit tracker for people with ADHD that uses tiny 2-minute habits and a pet that grows when you keep a streak. Free with a $4.99/month premium plan.",
  "stores": ["app_store", "google_play"],
  "country": "us"
}
```

#### Example verdict (OUTPUT record, shortened)

```json
{
  "ideaName": "ADHD Habit Pet",
  "verdict": {
    "verdict": "reposition",
    "average": 6.3,
    "scores": {
      "demand": {"score": 9, "reason": "Top apps have 48k–400k ratings and 10M+ installs."},
      "competition": {"score": 4, "reason": "A near-identical pet-based app already has huge traction."},
      "revenue": {"score": 6, "reason": "Subscriptions are normal, but the leader's free tier is generous."}
    },
    "quickFilter": [{"flag": "Leader already does habit + pet", "severity": "high"}]
  }
}
```

#### Example competitor row

```json
{
  "name": "Habit Tracker - Loop",
  "storeLabel": "Google Play",
  "isDirectCompetitor": true,
  "rating": 4.7,
  "ratingsCount": 95000,
  "installs": 5000000,
  "price": 0,
  "lastUpdated": "2025-03-06",
  "daysSinceUpdate": 600,
  "url": "https://play.google.com/store/apps/details?id=..."
}
```

### How the score works

1. The Actor searches each store for your keywords and merges the results.
2. AI marks the **direct competitors**, meaning apps that do the same core job for the same user.
3. Market numbers are computed from the store data with fixed rules, not by the AI. They include a data-based *competition hint*.
4. Critical reviews (1–3 stars) from the biggest competitors are read to find gaps.
5. AI scores Demand, Competition and Revenue. The Competition score can move at most 2 points away from the data-based hint.
6. A last AI step writes the Lean Canvas and the legal & store-policy check, using the verdict and the review gaps.
7. The average is compared with the **pass bar** (7.5 by default):
   - at or above the bar: **Build**
   - up to 1.5 points below: **Reposition**
   - lower: **Skip**

The scores are a structured second opinion built on public store numbers. They are not a revenue forecast.
The legal check is a starting list of things to look at, not legal advice.

### Pricing

Pay per event. You pay only for results:

| Event | When it is charged |
|---|---|
| Idea report | Once per finished validation report |
| Competitor app | Per competitor row saved to the dataset |

A typical run with default settings costs about **$0.40**. The report is always saved first, so a tight
spending limit only trims the competitor rows. If the run fails before the report, you are not charged for one.

### Input options

| Field | Default | What it does |
|---|---|---|
| Your app idea | – | Required. One to three sentences. |
| Store search keywords | AI picks 3 | Up to 5 keywords. |
| Stores | both | App Store and/or Google Play. |
| Country | `us` | Store country. |
| Store language | `en` | Google Play language and keyword language. |
| Report language | English | Language of the verdict text. |
| Pass bar | 7.5 | Average score needed for *Build*. |
| Apps per keyword | 10 | Search results read per keyword and store. |
| Competitors to read reviews from | 4 per store | 0 skips reviews. |
| Reviews per competitor | 40 | Recent reviews per competitor. |
| Max reviews sent to the AI | 150 | Critical reviews go first. |

### Data sources and limits

- **App Store**: Apple's public iTunes Search API and customer-reviews feed. Apple does not publish install counts, so App Store demand is judged from ratings counts.
- **Google Play**: public store pages, read with the open-source `google-play-scraper` library. If Google changes its pages, Google Play can fail for a while. The run then continues with the App Store and notes the error in the summary.
- Only public data is read. No login, no personal data beyond what reviewers chose to publish.
- Search results depend on the country. Run the Actor again with another country to compare markets.

### FAQ

**Is a "Skip" verdict bad news?**
No, it can save you a week of building. Read the quick-filter flags and the *Sharper angles* list. A narrower niche often scores much better.

**Can I use my own keywords?**
Yes. Add up to five. Use the words real users type in the store, not your brand name.

**Can I run it for many ideas?**
Yes. Call the Actor from the API, a schedule or an AI agent once per idea, then compare the `average` field.

**Something looks wrong?**
Open an issue on the Actor's Issues tab. Include the run link.

# Actor input Schema

## `idea` (type: `string`):

Describe the app in one to three sentences: what it does, for whom, and how it makes money if you know.

## `keywords` (type: `array`):

Up to 5 keywords to search in the stores. Leave empty and the AI picks 3 from your idea.

## `stores` (type: `array`):

Which stores to check.

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

Two-letter store country, for example us, gb, de, jp.

## `storeLanguage` (type: `string`):

Two-letter language code used for Google Play and for the AI's search keywords, for example en, de, fr.

## `outputLanguage` (type: `string`):

Language of the verdict and the report text. Review quotes stay as written.

## `passThreshold` (type: `number`):

Average of the three scores needed for a Build verdict. Up to 1.5 points below gives Reposition, lower gives Skip.

## `appsPerKeyword` (type: `integer`):

How many search results to read for each keyword in each store.

## `reviewAppsPerStore` (type: `integer`):

Reviews are read from the biggest direct competitors. Set 0 to skip reviews.

## `reviewsPerApp` (type: `integer`):

Recent reviews to collect from each of those competitors.

## `maxReviewsAnalysed` (type: `integer`):

Critical (1-3 star) reviews go first. The price does not change with this number.

## Actor input object example

```json
{
  "idea": "A habit tracker for people with ADHD that uses tiny 2-minute habits and a pet that grows when you keep a streak. Free with a $4.99/month premium plan.",
  "stores": [
    "app_store",
    "google_play"
  ],
  "country": "us",
  "storeLanguage": "en",
  "outputLanguage": "English",
  "passThreshold": 7.5,
  "appsPerKeyword": 10,
  "reviewAppsPerStore": 4,
  "reviewsPerApp": 40,
  "maxReviewsAnalysed": 150
}
```

# Actor output Schema

## `report` (type: `string`):

HTML report: verdict, scores, market numbers, top competitors, review gaps, MVP, pricing and risks.

## `competitors` (type: `string`):

One row per app found, with rating, ratings count, installs, price, last update and a direct-competitor flag.

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

Scores, verdict, market metrics, review gaps and AI usage as JSON, for automations and AI agents.

# 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 = {
    "idea": "A habit tracker for people with ADHD that uses tiny 2-minute habits and a pet that grows when you keep a streak. Free with a $4.99/month premium plan."
};

// Run the Actor and wait for it to finish
const run = await client.actor("jaclfruit_296/app-idea-validator-actor").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 = { "idea": "A habit tracker for people with ADHD that uses tiny 2-minute habits and a pet that grows when you keep a streak. Free with a $4.99/month premium plan." }

# Run the Actor and wait for it to finish
run = client.actor("jaclfruit_296/app-idea-validator-actor").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 '{
  "idea": "A habit tracker for people with ADHD that uses tiny 2-minute habits and a pet that grows when you keep a streak. Free with a $4.99/month premium plan."
}' |
apify call jaclfruit_296/app-idea-validator-actor --silent --output-dataset

```

## MCP server setup

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

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/pn4dKLkkluSJpft48/builds/6d8W0WF2f5evVCogi/openapi.json
