# Apify Actor Market Gap Finder & Store Analytics (`synergistic_freedom/apify-store-competitor-intelligence`) Actor

Discover better Apify Actor ideas by analyzing Store competitors, demand, ratings, failures, pricing, and market gaps before you build.

- **URL**: https://apify.com/synergistic\_freedom/apify-store-competitor-intelligence.md
- **Developed by:** [To Long](https://apify.com/synergistic_freedom) (community)
- **Categories:** AI, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Actor Market Gap Finder & Store Analytics

Find better Apify Actor ideas before you build.

This Actor analyzes **public Apify Store metadata** for one or more search keywords and turns competitor listings into practical signals: demand, saturation, ratings, reliability gaps, pricing hints, positioning weaknesses, and risk flags. Instead of guessing which scraper, automation, or data product to build next, you get a structured market snapshot you can use to decide what to investigate, niche down, improve, or avoid.

Use it when you want to answer questions like:

- Which Apify Store niches show real usage but weak competition?
- Which Actors have demand but poor ratings, failures, thin documentation, or unclear positioning?
- Where could a more focused, better-documented, more reliable Actor stand out?
- Which ideas look too saturated, risky, or legally sensitive to pursue?
- What should I manually inspect before spending days building?

The output includes a human-readable Markdown report, portfolio-level summary, per-query market summaries, competitor records, opportunity scores, recommendations, and practical next-step briefs.

> This Actor is a research and prioritization tool. It does **not** guarantee revenue, predict profit, provide official Apify data, bypass anti-bot systems, or tell you to copy competitors.

### What does this Actor do?

It searches Apify Store for one or more keywords and analyzes the returned Actors. For each competitor, it outputs:

- Demand signals: recent users, runs, bookmarks
- Reliability signals: failed and timed-out runs
- Trust signals: ratings and review counts
- Positioning signals: title/description gaps
- Agentic-payment readiness
- Pricing hints found in public listing text
- Risk flags for anti-bot, PII/outreach, login, or branding issues
- `opportunity_score` from 0 to 100
- `recommendation`: `BUILD_NOW`, `WATCH`, or `AVOID`
- A practical `opportunity_brief` with buyer, pain, MVP fields, risks, and next action

The first dataset items are portfolio and Markdown summaries, so you can quickly read the result without parsing every record.

### Who should use it?

- Apify Actor creators looking for new scraper/API ideas
- Automation agencies researching marketplace gaps
- Indie hackers validating data-product niches
- AI agents that need structured Apify Store market metadata
- Growth teams comparing public Apify Store competitors

### Use cases

- Find Apify Actor ideas before building
- Research Apify Store competitors
- Discover underserved scraper niches
- Compare demand vs. reliability gaps
- Find Actors with high usage but poor ratings or weak docs
- Prioritize your next Apify Store product
- Build a portfolio of low-maintenance Actor experiments

### Input

```json
{
  "searchQuery": "real estate scraper",
  "searchQueries": "shopify leads\nmarket research",
  "limit": 20
}
````

| Field | Type | Description |
|---|---|---|
| `searchQuery` | string | Main keyword to search in Apify Store. |
| `searchQueries` | string | Optional extra keywords: one per line, or comma-separated. API callers may also pass a string array. |
| `limit` | integer | Competitors to inspect per query, from 1 to 100. |

### Best search queries to try

- real estate scraper
- google maps scraper
- ecommerce scraper
- lead generation
- shopify products
- job listings scraper
- travel data
- restaurant leads
- market research
- price monitor

### Output records

#### 1. `portfolio_summary`

A cross-query summary with the best overall opportunities.

#### 2. `markdown_report`

A human-readable Markdown report you can copy into Notion, Google Docs, or a planning document.

#### 3. `query_summary`

One summary per keyword, including:

- recommendation counts
- market saturation estimate
- keyword clusters
- top opportunities
- avoid list
- suggested next steps

#### 4. `competitor`

One record per competing Actor.

Example:

```json
{
  "recordType": "competitor",
  "searchQuery": "real estate scraper",
  "title": "Crexi Real Estate Listings Scraper",
  "url": "https://apify.com/parseforge/commercial-real-estate-listings-scraper",
  "metrics": {
    "users_30d": 26,
    "total_runs_30d": 1586,
    "failure_rate_30d": 0.0025,
    "rating": 0,
    "reviews": 0
  },
  "score_breakdown": {
    "demand": 41.63,
    "quality_gap": 8,
    "saturation_penalty": 0,
    "confidence": 63
  },
  "opportunity_score": 50,
  "recommendation": "WATCH",
  "opportunity_notes": [
    "有真实需求信号：近 30 天用户/运行量不低。",
    "有使用但评论少，说明竞品品牌/信任建设可能还弱。"
  ]
}
```

### Opportunity score explained

The score is a prioritization heuristic based on:

- **Demand** — recent users, runs, and bookmarks
- **Reliability gap** — failures and timeouts
- **Trust gap** — ratings and reviews
- **Positioning gap** — weak or short descriptions
- **Agentic-payment gap** — whether the listing appears ready for agentic discovery
- **Saturation penalty** — dominant head competitors may mean you should niche down
- **Confidence** — how much public signal supports the score

The score is **not a revenue prediction**. It helps you decide what to manually inspect next.

### Practical workflow

1. Run 3-10 broad searches such as `real estate scraper`, `shopify leads`, or `market research`.
2. Read the `markdown_report` and `portfolio_summary` first.
3. Open the top competitor pages.
4. Look for a narrower buyer/use case: country, platform, industry, workflow, or premium output.
5. Build a better Actor with cleaner output, stronger docs, examples, and an intelligence layer.
6. Avoid direct copycats and high-risk targets.

### Limitations and responsible use

Please read this before using the results to make product or business decisions.

- **No revenue guarantee.** Opportunity scores are prioritization heuristics, not profit forecasts. Actual revenue depends on demand, distribution, pricing, maintenance, reliability, costs, reviews, and many other factors.
- **Unofficial tool.** This Actor is independent and is not owned, operated, endorsed, or certified by Apify.
- **Public metadata only.** The Actor analyzes information available from public Apify Store listings and related public metadata. It does not access private Actor data, private user data, internal Apify analytics, or non-public dashboards.
- **No anti-bot bypass.** This Actor is not designed to bypass logins, paywalls, CAPTCHA, rate limits, anti-bot systems, access controls, or website terms.
- **Do not copy competitors.** Use the analysis to find better positioning, underserved niches, and product gaps. Do not copy another creator’s code, branding, screenshots, README, protected assets, or exact product implementation.
- **Manual review required.** Risk flags are conservative heuristics. You are responsible for reviewing target-site terms, privacy obligations, data protection rules, platform policies, and legal/compliance requirements before building or publishing any Actor.
- **Scores can be incomplete.** Public metadata can be missing, delayed, noisy, or interpreted incorrectly. Treat the output as a research starting point, not a final decision.

### FAQ

#### Will this tell me exactly which Actor will make money?

No. It identifies market signals and gaps so you can prioritize manual research. Revenue depends on demand, differentiation, pricing, distribution, maintenance, and cost control.

#### Why scan multiple queries?

Most profitable ideas come from comparing niches. A single query can be misleading; a small portfolio scan helps you find long-tail opportunities.

#### Should I immediately copy high-scoring competitors?

No. Use the output to find a narrower or better-positioned product. Copying competitors is risky and usually weakens conversion.

#### Can I use this for cold outreach lead scraping?

This Actor analyzes Store metadata. If you build lead-generation Actors later, make sure you follow platform rules, privacy laws, opt-out requirements, and target-site ToS.

### Monetization note

Start free or pay-per-usage until you have proof of demand. Consider pay-per-event only after you have real external users, successful runs, and clear value in the output.

# Actor input Schema

## `searchQuery` (type: `string`):

Main keyword to search in Apify Store, e.g. real estate scraper, shopify leads, reddit scraper.

## `searchQueries` (type: `string`):

Optional extra Apify Store keywords to scan in one run. Enter one keyword per line or separate them with commas. Keep it focused: 1-10 queries is best.

## `limit` (type: `integer`):

Number of Store Actors to inspect per query. Maximum 100.

## Actor input object example

```json
{
  "searchQuery": "real estate scraper",
  "searchQueries": "shopify leads\nmarket research",
  "limit": 20
}
```

# 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("synergistic_freedom/apify-store-competitor-intelligence").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("synergistic_freedom/apify-store-competitor-intelligence").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 synergistic_freedom/apify-store-competitor-intelligence --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Apify Actor Market Gap Finder & Store Analytics",
        "description": "Discover better Apify Actor ideas by analyzing Store competitors, demand, ratings, failures, pricing, and market gaps before you build.",
        "version": "0.2",
        "x-build-id": "s7uQFu5fUpvacusPQ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/synergistic_freedom~apify-store-competitor-intelligence/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-synergistic_freedom-apify-store-competitor-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/synergistic_freedom~apify-store-competitor-intelligence/runs": {
            "post": {
                "operationId": "runs-sync-synergistic_freedom-apify-store-competitor-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/synergistic_freedom~apify-store-competitor-intelligence/run-sync": {
            "post": {
                "operationId": "run-sync-synergistic_freedom-apify-store-competitor-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "searchQuery"
                ],
                "properties": {
                    "searchQuery": {
                        "title": "Single search query",
                        "type": "string",
                        "description": "Main keyword to search in Apify Store, e.g. real estate scraper, shopify leads, reddit scraper.",
                        "default": "real estate scraper"
                    },
                    "searchQueries": {
                        "title": "Additional search queries",
                        "type": "string",
                        "description": "Optional extra Apify Store keywords to scan in one run. Enter one keyword per line or separate them with commas. Keep it focused: 1-10 queries is best.",
                        "default": "shopify leads\nmarket research"
                    },
                    "limit": {
                        "title": "Competitors per query",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Number of Store Actors to inspect per query. Maximum 100.",
                        "default": 20
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
