# Apify Store Opportunity Radar (`invaluable_rondeau/apify-store-opportunity-radar`) Actor

Analyze public Apify Store metadata through the official API and rank Actor opportunities with evidence, pricing, quality, and change history.

- **URL**: https://apify.com/invaluable\_rondeau/apify-store-opportunity-radar.md
- **Developed by:** [PROOFNEXA](https://apify.com/invaluable_rondeau) (community)
- **Categories:** Developer tools, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 actor analyzeds

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/platform/actors/running/actors-in-store#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

## Apify Store Opportunity Radar

Apify Storeの公開Actorメタデータを、Apify公式APIから取得し、「需要がある市場」ではなく「新規ソロ開発者が勝てる余地」を比較する市場調査Actorです。日本在住・一人運営・小資本・AI/自動化重視の開発者が、外部有料Runと継続利益を検証するための相対ランキングを返します。

対象はApify開発者、複数Actorを運営する小規模チーム、AIエージェント/自動化事業者、スクレイピング事業者です。一般的な市場調査ではなく、Apify StoreのActor機会分析に限定しています。

### できること

4つのモードを提供します。

1. **Keyword Search** — 検索語ごとにStore検索結果を取得し、公開指標・価格・更新・品質シグナルを比較します。
2. **Actor Competitor Analysis** — Actor URL、`username/name`、Actor ID、名前を基準に、Store検索で直接/周辺候補を比較します。
3. **Category Opportunity Scan** — カテゴリまたは検索語セットをまとめて調査し、競争密度・集中度・価格分布・更新停止候補を比較します。
4. **Store Change Monitor** — 同じ条件の前回状態と比較し、新規・変更・未観測・急成長候補・放置候補を返します。初回は `growth_status=insufficient_history` です。

すべてのモードで、旧 `opportunity_score` を `demand_opportunity_score` として残し、新しい市場単位の `solo_builder_win_score` を主ランキングに使います。

### 取得データ

公式Store API/Actor APIで公開されている範囲から、Actor ID、名前、開発者、Store URL、説明、カテゴリ、タグ、公開状態、課金モデル、PPEイベント価格、Total users、30日利用者、Runs、成功率、評価、レビュー数、最終更新、最終Run、最新Build、README/schemaの存在シグナル、API/MCP/Schedule/WebhookのREADME記載シグナル、検索語、取得日時、取得元URL、欠損理由を正規化します。

取得できない項目は空欄または `missing_evidence` に残します。HTMLの見た目、非公開API、Private Actor、売上、顧客単価、内部ランキングロジック、レビュー本文や個人情報は取得・推定しません。

`total_users`、`monthly_active_users`（表示上は30日利用者代理値）、`total_runs`、`runs_30_days` は公開利用の代理指標です。売上、有料顧客数、有料Run数、利益ではありません。

### Solo Builder Win Score（主スコア）

`solo_builder_win_score` は、新規・無名・一人運営の開発者が競争、差別化、継続利用、保守、取得安定性、原価を踏まえて参入余地を調べる0〜100の相対スコアです。A〜Gの7軸を使います。

- A 新規参入勝率 20
- B 競争余地 20
- C 差別化余地 15
- D 継続課金力 15
- E 一人運営・保守適性 10
- F 規約・取得安定性 10
- G 利益率ポテンシャル 10

競合過密、上位Actor集中、公式Actor、無料代替、コモディティ性、規約不透明、Apify適合不足を減点します。状態管理、差分、証跡、期限、Webhook/Schedule、API/MCP周辺、顧客業務への埋め込みを、実際に観測できる範囲で加点します。

判定は `BUILD` / `WATCH` / `AVOID` / `REJECT` です。各行に `why_not_build` を最低3件保存します。規約、商用加工、商用再配布、候補Actorの原価はこのメタデータだけでは確認できないため `unknown` とし、confidenceを下げます。これは売上予測・成功確率・投資判断ではありません。

### Legacy Demand Opportunity Score

`opportunity_score` / `demand_opportunity_score` は、需要・公開利用兆候を比較する旧スコアです。主ランキングではなく、`solo_builder_win_score` との比較用に残します。高需要・低勝率市場を発見するために使います。

各行に `score_components`、`score_reasons`、`opportunity_confidence`、`missing_score_evidence` を含めます。成功確率、投資判断、売上予測ではありません。履歴が1時点しかない場合、成長判定は行いません。

### 入力例

```json
{
  "mode": "keyword-search",
  "keywords": ["email verifier", "webhook monitor"],
  "maxResults": 20,
  "includeReadmeAnalysis": true,
  "includePricing": true,
  "includeUserMetrics": true,
  "opportunityScoreEnabled": true,
  "soloBuilderWinScoreEnabled": true,
  "sortBy": "relevance"
}
```

`keywords` は最大20件、`actorUrls` は最大50件、`maxResults` は最大1,000件です。初期値は100件です。1,000件、複数語、README分析、履歴比較は取得件数に応じてCompute時間とAPI呼び出し数が増えます。初回は5〜20件で確認してください。

### 出力例

Datasetは1 Actor 1行の正規化レコードです。SummaryはDefault Key-Value Storeの`SUMMARY`に保存します。

```json
{
  "actor_id": "example~actor",
  "actor_name": "Example Actor",
  "monthly_active_users": 42,
  "pricing_model": "PAY_PER_EVENT",
  "price_per_event": 0.01,
  "demand_opportunity_score": 67.5,
  "solo_builder_win_score": 42,
  "score_confidence": 0.61,
  "verdict": "AVOID",
  "why_not_build": ["competition is dense", "candidate terms are unknown", "external paid repeat use is unverified"],
  "growth_status": "insufficient_history",
  "score_reasons": ["public 30-day usage signal exists"],
  "missing_score_evidence": ["historical_comparison"],
  "source_url": "https://api.apify.com/v2/store?...",
  "data_collected_at": "2026-08-06T00:00:00.000Z"
}
```

### 料金

公開版のPPE初期価格は、`actor-analyzed` `$0.005`、`opportunity-scored` `$0.02`、`change-detected` `$0.02`です。最大入力1,000件で全件に差分がある最悪ケースの表示上限は `$25.02`（`1000×$0.005 + $0.02 + 1000×$0.02`）です。このスコア改修では価格を変更しません。自己Runの使用量・PPEイベントは外部需要や収益ではありません。

課金する場合の設計は、`actor-analyzed`（Dataset保存成功後、完全な公開メタデータ取得に成功したActor行数）、`opportunity-scored`（スコア生成成功時にRunあたり1回）、`change-detected`（差分がある場合のみ）です。同一Run内で同一Actorを二重出力・二重課金しません。取得失敗・部分失敗、Dataset保存失敗、差分なしは課金対象にしません。自己テストは外部売上に含めません。

料金の事前見積りは、入力件数、スコア有無、差分監視の最大変更件数から計算してください。`maxTotalChargeUsd` は最大料金以上に設定し、入力を小さくすれば上限を下げられます。

### API / Schedule / Webhook / MCP

API実行例:

```bash
curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~apify-store-opportunity-radar/runs?waitForFinish=0" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode":"keyword-search","keywords":["MCP"],"maxResults":10,"opportunityScoreEnabled":true,"soloBuilderWinScoreEnabled":true}'
```

定期監視はApify Scheduleから同じ入力で実行し、前回のDefault Key-Value Store状態と比較します。Webhook通知はこのMVPではActorから直接送信しません。ApifyのRun/Schedule/Webhook連携または利用者所有の後段処理でDataset/Summaryを利用してください。MCP対応は公開ActorのREADMEにMCP利用記載があるかという検出シグナルであり、このActor自身がMCPサーバーになることを意味しません。

### データ取得元と利用条件

取得元はApify公式の公開Store API（`/v2/store`）と公開Actor API（`/v2/acts/{actorId}`）です。認証なしで取得できる公開データを基本とし、トークンを使う場合もAuthorizationヘッダーだけに限定します。

ApifyのGeneral Terms、Actor Terms、Store Publishing Terms、Acceptable Use Policyに従って利用してください。Private Actor、ログイン制限、CAPTCHA、robots/アクセス制限の回避、非公開APIの利用、レビューや説明文のコピー、個人情報の収集・再配布は行いません。公開情報の商用加工・再配布に関する不明点は、Apifyへ確認してから利用してください。

公式APIのレート制限・応答に従い、同時実行数4、タイムアウト20秒、429/5xxの指数バックオフ、部分失敗継続、取得元URL保存、KVS状態の名前空間分離を行います。長時間の全Store複製や高頻度巡回は想定していません。結果は取得時点のスナップショットであり、Storeの瞬間的な順位・表示と一致しないことがあります。

### 欠損・誤差

公式APIが返さない指標は空欄にし、`evidence_status` と `missing_evidence` に記録します。Total usersと30日利用者代理値は集計時点で異なる場合があります。Search rankはAPI応答順位の観測値です。両スコアはデータ不足時にconfidenceを下げます。

### サポート範囲

対象はApify公式APIの公開Actor/Storeメタデータ、4モード、JSON Dataset、Summary KVS、履歴比較、スコアの再現性です。非公開Actor、売上推定、ランキング保証、外部サイトの競合調査、法務・投資・事業成功の保証はサポート対象外です。

### 変更履歴

- 0.1 — 公式APIのみを使うMVP、4モード、正規化Dataset、Summary KVS、履歴差分、Legacy Demand Scoreを追加。
- 0.2 — Solo Builder Win Score、市場単位ランキング、旧Score比較、BUILD/WATCH/AVOID/REJECT、反対理由を追加。価格は変更なし。

このActorの出力は市場調査の補助情報です。法的判断、投資判断、売上見込み、購入判断の唯一の根拠として使用しないでください。

# Actor input Schema

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

Choose a keyword, actor competitor, category, or change-monitor analysis.

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

Up to 20 Store search terms.

## `actorUrls` (type: `array`):

Public Actor URL, username/name slug, Actor ID, or name. Up to 50.

## `categories` (type: `array`):

Optional official Store category filters.

## `maxResults` (type: `integer`):

Maximum number of unique public Actors to return, capped at 1,000.

## `includeDescriptions` (type: `boolean`):

Keep the public description in each record.

## `includeReadmeAnalysis` (type: `boolean`):

Fetch public Actor details and derive README/schema signals without storing README text.

## `includePricing` (type: `boolean`):

Include public pricing model and PPE event prices when available.

## `includeUserMetrics` (type: `boolean`):

Include public user, run, rating, and review metrics when available.

## `includeHistoricalComparison` (type: `boolean`):

Compare with the prior state in the scoped Key-Value Store when available.

## `previousDatasetId` (type: `string`):

Optional prior Dataset ID used as a read-only history fallback. Leave blank when unused.

## `opportunityScoreEnabled` (type: `boolean`):

Calculate the bounded relative opportunity score and evidence confidence.

## `soloBuilderWinScoreEnabled` (type: `boolean`):

Rank market headroom for a new solo builder while retaining the legacy demand opportunity score.

## `minUsers` (type: `integer`):

Exclude actors below this public total-user threshold.

## `minMonthlyUsers` (type: `integer`):

Exclude actors below this public 30-day-user threshold.

## `maxCompetitors` (type: `integer`):

Limit the number of competitor candidates used in the comparison summary.

## `sortBy` (type: `string`):

Official Store API ordering for each search request.

## `language` (type: `string`):

Optional language hint retained for future filtering; no undocumented API filter is used. Leave blank when unused.

## `exportFormat` (type: `string`):

Output preference retained for compatibility; Dataset records remain JSON objects.

## `dryRun` (type: `boolean`):

Use a local fixture and do not call the external Store API.

## Actor input object example

```json
{
  "mode": "keyword-search",
  "keywords": [
    "email verifier"
  ],
  "actorUrls": [],
  "categories": [],
  "maxResults": 100,
  "includeDescriptions": true,
  "includeReadmeAnalysis": true,
  "includePricing": true,
  "includeUserMetrics": true,
  "includeHistoricalComparison": true,
  "previousDatasetId": "",
  "opportunityScoreEnabled": true,
  "soloBuilderWinScoreEnabled": true,
  "minUsers": 0,
  "minMonthlyUsers": 0,
  "maxCompetitors": 50,
  "sortBy": "relevance",
  "language": "",
  "exportFormat": "json",
  "dryRun": false
}
```

# Actor output Schema

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

Run summary in the SUMMARY key-value record.

## `dataset` (type: `string`):

Normalized Actor records.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("invaluable_rondeau/apify-store-opportunity-radar").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("invaluable_rondeau/apify-store-opportunity-radar").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call invaluable_rondeau/apify-store-opportunity-radar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=invaluable_rondeau/apify-store-opportunity-radar",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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