Competitor Scanner
Analyse rival actors in your categories. Compare pricing, growth rates, user counts, and feature sets. Identify threats and opportunities in your market segments.
Maintenance Pulse
90/100Cost Estimate
How many results do you need?
Pricing
Pay Per Event model. You only pay for what you use.
| Event | Description | Price |
|---|---|---|
| competitor-scan | Charged per competitor analysis. | $0.50 |
Example: 100 events = $50.00 · 1,000 events = $500.00
Documentation
Scan the Apify Store for competitor actors in your categories, compare their metrics against yours, and understand your market position. ApifyForge Competitor Scan automatically detects which categories your actors belong to, fetches top competitors in each category from the Store, and produces a side-by-side comparison of user counts, run volumes, and pricing. It calculates your market position percentile and identifies the competitors getting the most traction. Built to power the competitive intelligence panel of the ApifyForge dashboard.
Why use ApifyForge Competitor Scan?
- Know your competition. See who else is publishing actors in your categories and how their traffic compares to yours.
- Market position percentile. Get a clear percentile ranking (0-100) showing where you stand relative to competitors in each category.
- Pricing intelligence. See what competitors charge for PPE pricing so you can benchmark your own prices.
- Auto-detect categories. Leave the categories field empty and the actor will automatically detect all categories from your published actors.
- Cross-category analysis. If you publish actors in multiple categories, get a separate comparison for each one.
- User and run benchmarks. Compare your average user count and run volume against category averages to identify where you outperform or underperform.
- Dashboard-ready output. Structured JSON designed for direct integration with ApifyForge for competitive dashboards and trend tracking.
Key Features
- Fetches all your actors and auto-detects their categories from the Apify Store
- Scans the Store by category to find competitor actors
- Filters out your own actors from competitor lists
- Deduplicates competitors that appear in multiple categories
- Extracts PPE pricing from competitor actor metadata
- Computes per-category comparisons: your average vs. competitor average for users and runs
- Calculates market position percentile based on 30-day user counts
- Configurable: specify categories manually or let auto-detection handle it
- Configurable competitor limit per category (default: 20, max: 100)
How to Use
- Go to ApifyForge Competitor Scan on the Apify Store.
- Click Try for free.
- Enter your Apify API Token.
- Optionally specify Categories to Scan (leave empty for auto-detection).
- Optionally adjust Max Competitors per Category (default: 20).
- Click Start.
- Wait for the run to complete (typically 30-120 seconds depending on category count).
- Review competitor data and market position in the Dataset tab.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
apifyToken | string | Yes | -- | Your Apify API token. Find it at https://console.apify.com/settings/integrations |
categories | array of strings | No | Auto-detected | Apify Store categories to scan for competitors. Leave empty to auto-detect from your actors. Valid values: AI, DEVELOPER_TOOLS, SOCIAL_MEDIA, SEO_TOOLS, ECOMMERCE, etc. |
maxCompetitorsPerCategory | integer | No | 20 | Maximum number of competitor actors to fetch per category. Range: 5-100. |
Input Examples
Auto-detect categories and scan (recommended for first run):
{
"apifyToken": "apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
Scan specific categories:
{
"apifyToken": "apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"categories": ["AI", "DEVELOPER_TOOLS", "SEO_TOOLS"]
}
Deep scan with more competitors per category:
{
"apifyToken": "apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"categories": ["SOCIAL_MEDIA"],
"maxCompetitorsPerCategory": 50
}
Output Example
{
"categoriesScanned": ["AI", "DEVELOPER_TOOLS", "SEO_TOOLS"],
"competitors": [
{
"name": "web-scraper",
"username": "apify",
"title": "Web Scraper",
"runs30d": 245000,
"users30d": 18500,
"totalUsers": 892000,
"ppePrice": 0.50,
"categories": ["DEVELOPER_TOOLS"]
},
{
"name": "google-search-scraper",
"username": "apify",
"title": "Google Search Results Scraper",
"runs30d": 189000,
"users30d": 14200,
"totalUsers": 654000,
"ppePrice": 0.25,
"categories": ["SEO_TOOLS", "DEVELOPER_TOOLS"]
},
{
"name": "instagram-scraper",
"username": "competitor_dev",
"title": "Instagram Profile Scraper",
"runs30d": 67000,
"users30d": 4300,
"totalUsers": 128000,
"ppePrice": null,
"categories": ["SOCIAL_MEDIA"]
}
],
"comparison": [
{
"category": "AI",
"userActorCount": 72,
"competitorCount": 20,
"avgCompetitorUsers": 340,
"avgCompetitorRuns": 5200,
"userAvgUsers": 18,
"userAvgRuns": 230,
"marketPosition": 35
},
{
"category": "DEVELOPER_TOOLS",
"userActorCount": 85,
"competitorCount": 20,
"avgCompetitorUsers": 1250,
"avgCompetitorRuns": 28000,
"userAvgUsers": 45,
"userAvgRuns": 480,
"marketPosition": 42
},
{
"category": "SEO_TOOLS",
"userActorCount": 15,
"competitorCount": 20,
"avgCompetitorUsers": 890,
"avgCompetitorRuns": 15000,
"userAvgUsers": 120,
"userAvgRuns": 2100,
"marketPosition": 58
}
],
"scannedAt": "2026-03-16T14:30:00.000Z"
}
Output Fields
| Field | Type | Description |
|---|---|---|
categoriesScanned | array | List of Apify Store categories that were scanned |
competitors | array | All competitor actors found, sorted by 30-day users descending. Deduplicated across categories. |
competitors[].name | string | Actor name (slug) |
competitors[].username | string | Publisher's Apify username |
competitors[].title | string | Actor display title |
competitors[].runs30d | number | Number of runs in the last 30 days |
competitors[].users30d | number | Number of unique users in the last 30 days |
competitors[].totalUsers | number | All-time total user count |
competitors[].ppePrice | number or null | Pay-Per-Event price in USD, or null if no PPE pricing configured |
competitors[].categories | array | Apify Store categories this actor belongs to |
comparison | array | Per-category comparison between your actors and competitors |
comparison[].category | string | Category name |
comparison[].userActorCount | number | Number of your actors in this category |
comparison[].competitorCount | number | Number of competitor actors analyzed in this category |
comparison[].avgCompetitorUsers | number | Average 30-day user count for competitor actors |
comparison[].avgCompetitorRuns | number | Average 30-day run count for competitor actors |
comparison[].userAvgUsers | number | Average 30-day user count for your actors in this category |
comparison[].userAvgRuns | number | Average 30-day run count for your actors in this category |
comparison[].marketPosition | number | Your market position percentile (0-100). Based on 30-day users of your best actor vs. all actors in the category. Higher is better. |
scannedAt | string | ISO 8601 timestamp of when the scan was performed |
Programmatic Access
Python
from apify_client import ApifyClient
client = ApifyClient("apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx")
run = client.actor("ryanclinton/apifyforge-competitor-scan").call(
run_input={
"apifyToken": "apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"categories": ["AI", "DEVELOPER_TOOLS"],
"maxCompetitorsPerCategory": 30
}
)
dataset_items = client.dataset(run["defaultDatasetId"]).list_items().items
scan = dataset_items[0]
print(f"Categories scanned: {', '.join(scan['categoriesScanned'])}")
print(f"Total competitors found: {len(scan['competitors'])}")
print("\nMarket position by category:")
for comp in scan["comparison"]:
print(f" {comp['category']}: {comp['marketPosition']}th percentile "
f"(your avg: {comp['userAvgUsers']} users vs competitor avg: {comp['avgCompetitorUsers']})")
print("\nTop 5 competitors by users:")
for c in scan["competitors"][:5]:
price = f"${c['ppePrice']}" if c["ppePrice"] else "free"
print(f" {c['username']}/{c['name']}: {c['users30d']} users, {c['runs30d']} runs, {price}")
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({
token: "apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
});
const run = await client.actor("ryanclinton/apifyforge-competitor-scan").call({
apifyToken: "apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
categories: ["AI", "DEVELOPER_TOOLS"],
maxCompetitorsPerCategory: 30,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const scan = items[0];
console.log(`Categories: ${scan.categoriesScanned.join(", ")}`);
console.log(`Competitors found: ${scan.competitors.length}`);
// Find underpriced opportunities
const cheapCompetitors = scan.competitors.filter(
(c) => c.ppePrice && c.ppePrice < 0.05 && c.users30d > 1000
);
console.log(`High-traffic, low-price competitors: ${cheapCompetitors.length}`);
cURL
# Start the competitor scan
curl -X POST "https://api.apify.com/v2/acts/ryanclinton~apifyforge-competitor-scan/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"apifyToken": "apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx", "categories": ["AI", "DEVELOPER_TOOLS"]}'
# Fetch results from the default dataset
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_API_TOKEN"
How It Works
ApifyForge Competitor Scan executes a multi-stage competitive intelligence pipeline:
-
Actor enumeration. Calls
GET /v2/acts?my=truewith pagination to retrieve every actor in your account. -
Username resolution. Extracts your username from your actor list or falls back to
GET /v2/users/me. Your username is used to filter your own actors out of competitor lists. -
Category detection. If no categories are specified in the input, the actor calls
GET /v2/acts/{actorId}for each of your actors and collects all unique categories. This gives you automatic category coverage based on where you actually compete. -
Category-actor mapping. For each detected category, groups your actors that belong to that category. This enables per-category comparison of your metrics vs. competitors.
-
Store scanning. For each category, calls
GET /v2/store?category={CATEGORY}with pagination to fetch competitor actors. Fetches extra actors beyond the configured limit to account for filtering out your own actors. -
Competitor extraction. Filters out actors published by your username, deduplicates across categories (an actor appearing in multiple categories is only listed once), and extracts PPE pricing from the
pricingInfosarray. -
Comparison computation. For each category, computes:
- Average 30-day users and runs for your actors vs. competitor actors
- Market position percentile: ranks your best actor's user count against all actors (yours + competitors) in the category
-
Output. Sorts competitors by 30-day users descending, pushes results to the default dataset, and charges one PPE event.
How Much Does It Cost?
ApifyForge Competitor Scan uses Pay-Per-Event pricing at $0.15 per scan.
| Scenario | Events | Cost |
|---|---|---|
| One-time competitive analysis | 1 | $0.15 |
| Weekly monitoring (4x/month) | 4 | $0.60 |
| Daily monitoring (30x/month) | 30 | $4.50 |
Platform compute costs also apply. A typical scan of 3-5 categories with 20 competitors each completes in under 2 minutes using 256 MB of memory.
Tips
- Start with auto-detection. Leave the categories field empty on your first run to see which categories your actors fall into. You might discover you are competing in categories you did not expect.
- Benchmark pricing. Use the
ppePricefield from competitors to see the going rate in your categories. If competitors charge $0.25 and you charge $0.05, you may be underpricing. - Focus on market position. A market position of 50 means you are at the median. Below 30 means your actors are in the bottom third of the category -- consider improving descriptions, reliability, or SEO.
- Track over time. Schedule monthly scans to see whether your market position is improving. New competitors enter the Store regularly, so staying static means falling behind.
- Increase the competitor limit for deep dives. Set
maxCompetitorsPerCategoryto 50 or 100 for categories where you want exhaustive competitive coverage. - Combine with Quality Monitor. If your market position is low, run a Quality Monitor scan to identify which quality dimensions are dragging you down compared to competitors.
Limitations
- Store API ordering. The Apify Store API returns actors in its default ordering, which may not perfectly align with "top competitors." The scan fetches extra actors to compensate but may miss some competitors in very crowded categories.
- No historical competitor data. Each scan gives you a snapshot. To track competitor trends, schedule regular runs and analyze the dataset over time.
- PPE pricing only. Only Pay-Per-Event pricing is extracted from competitors. Flat-rate, subscription, or free pricing models are not differentiated -- they all show as
ppePrice: null. - Category limits. Very broad categories (like DEVELOPER_TOOLS) may have hundreds of actors. The
maxCompetitorsPerCategorysetting caps how many are analyzed. - Market position calculation. The percentile is based on your single best-performing actor in each category, not your average. This gives an optimistic view of your position.
- API calls scale with categories. Scanning 10+ categories with high competitor limits generates many API calls. Keep category count reasonable or increase the timeout.
Frequently Asked Questions
What categories can I scan? Any valid Apify Store category: AI, AGENTS, AUTOMATION, DEVELOPER_TOOLS, ECOMMERCE, JOBS, LEAD_GENERATION, NEWS, SEO_TOOLS, SOCIAL_MEDIA, TRAVEL, VIDEOS, REAL_ESTATE, INTEGRATIONS, OTHER, OPEN_SOURCE, and more. Leave the field empty to auto-detect from your actors.
How is market position calculated? The market position is a percentile (0-100). It takes the 30-day user count of your best actor in the category, combines it with all competitor user counts, sorts them, and finds where your best actor ranks. A position of 75 means your best actor has more users than 75% of actors in that category.
Why are some competitors showing ppePrice: null?
These competitors either offer their actors for free, use flat-rate pricing, or have not configured PPE pricing. The scan only extracts PPE pricing from the pricingInfos metadata.
Can I scan categories I do not have actors in? Yes. Specify the categories manually in the input. This is useful for market research before entering a new category. Your comparison metrics will show 0 for your side, but you will see competitor data and pricing.
Integration with ApifyForge Dashboard
This actor powers the competitive intelligence panel of the ApifyForge dashboard. When connected, competitor data is visualized with market position gauges per category, competitor leaderboards, pricing comparison charts, and trend analysis for market position changes over time. The dashboard highlights categories where you are underperforming relative to competitors and suggests specific improvements based on the gap. Schedule this actor to run monthly for ongoing competitive monitoring.
How it works
Configure
Set your parameters in the Apify Console or pass them via API.
Run
Click Start, trigger via API, webhook, or set up a schedule.
Get results
Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.
Use cases
Sales Teams
Build targeted lead lists with verified contact data.
Marketing
Research competitors and identify outreach opportunities.
Data Teams
Automate data collection pipelines with scheduled runs.
Developers
Integrate via REST API or use as an MCP tool in AI workflows.
Related actors
Bulk Email Verifier
Verify email deliverability at scale. MX record validation, SMTP mailbox checks, disposable and role-based detection, catch-all flagging, and confidence scoring. No external API costs.
GitHub Repository Search
Search GitHub repositories by keyword, language, topic, stars, forks. Sort by stars, forks, or recently updated. Returns metadata, topics, license, owner info, URLs. Free API, optional token for higher limits.
Website Content to Markdown
Convert any website to clean Markdown for RAG pipelines, LLM training, and AI apps. Crawls pages, strips boilerplate, preserves headings, tables, and code blocks. GFM support.
Website Tech Stack Detector
Detect 100+ web technologies on any website. Identifies CMS, frameworks, analytics, marketing tools, chat widgets, CDNs, payment systems, hosting, and more. Batch-analyze multiple sites with version detection and confidence scoring.
Ready to try Competitor Scanner?
Start for free on Apify. No credit card required.
Open on Apify Store