# Competitor Intelligence Monitor — Pricing, Hiring & Reviews (`ramsford/competitor-intelligence-monitor`) Actor

Track any competitor's pricing, hiring, reviews (Trustpilot, G2, Google), promotions, and website changes. Generates AI-ready intelligence reports on every run. Pay per report.

- **URL**: https://apify.com/ramsford/competitor-intelligence-monitor.md
- **Developed by:** [Don Johnson](https://apify.com/ramsford) (community)
- **Categories:** AI
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN 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

## Competitor Intelligence Agent — Monitor Websites, Pricing, Reviews & Hiring with AI Reports

**Track any competitor across 5 data sources. Get an AI-written intelligence brief — not a spreadsheet.**

Stop manually checking competitor sites. This Actor automatically monitors your competitors' websites, pricing pages, customer reviews, job postings, and promotional activity — then synthesizes everything into a structured AI intelligence report.

---

### The Problem

Your competitors changed their pricing last week. Did you know?

Staying current on competitors means checking 5+ sites per competitor, every week. Most teams give up, fall behind, and get blindsided. This Actor does it for you — automatically.

---

### What You Get Per Report

- **Website change detection** — headline rewrites, new CTAs, messaging shifts
- **Pricing page snapshot and delta** — price points extracted and compared vs last run
- **Review sentiment** — Trustpilot, G2, and Google ratings with sample reviews
- **Hiring signals** — open roles, job titles, department growth
- **Active promotions** — discount language, free-trial banners, promo copy
- **AI-generated executive summary** — "what changed, why it matters, what to do"

---

### Who This Is For

- **Founders** tracking 2–5 competitors weekly
- **Sales teams** needing "what changed at the account" before a call
- **Marketing teams** tracking competitor messaging shifts
- **Strategy and M&A analysts** building structured intel for board decks
- **MSPs and agencies** delivering competitive intelligence as a client deliverable

---

### Why This Actor vs. Alternatives

| Alternative | Gap |
|---|---|
| SaaS Pricing Tracker | Pricing pages only — no reviews, hiring, or site changes |
| Manual Google Alerts | No synthesis, no structure, no AI summary |
| Crayon / Klue / Klue | $20,000+/year — same intelligence output at 1/100th the cost |
| Spreadsheet + VA | Slow, inconsistent, doesn't scale |

**The only Apify Actor that monitors a competitor across 5 data sources and delivers an AI-written brief — not a CSV.**

---

### How It Works

1. Input your competitor domains (and optional Trustpilot/G2 URLs)
2. Actor scrapes homepage, pricing, careers, and review platforms via Playwright
3. Compares vs last run snapshot — surfaces what changed
4. Generates structured intelligence report with "Strategic Read" section
5. Output delivered to dataset (JSON + readable markdown)

---

### Input

```json
{
  "competitors": [
    {
      "name": "Acme Corp",
      "homepageUrl": "https://acmecorp.com",
      "pricingUrl": "https://acmecorp.com/pricing",
      "careersUrl": "https://acmecorp.com/careers",
      "trustpilotUrl": "https://www.trustpilot.com/review/acmecorp.com",
      "g2Url": "https://www.g2.com/products/acme/reviews",
      "googleQuery": "Acme Corp software"
    }
  ],
  "trackPricing": true,
  "trackReviews": true,
  "trackHiring": true,
  "trackPromotions": true,
  "trackSiteChanges": true,
  "reportStyle": "full"
}
````

Only `name` and `homepageUrl` are required. Pricing and careers URLs are auto-discovered from the nav if not provided.

***

### Sample Output

```markdown
## Competitor Intelligence Brief — Acme Corp
Generated: 2025-05-15T14:32:00Z

### Positioning
- Headline: The easiest way to manage your team
- Primary CTAs: Start Free Trial | Book a Demo

### Pricing
- Source: https://acmecorp.com/pricing
- Plans detected: 3
- Price points: $29, $79, $199/mo

### Reputation & Reviews
- TRUSTPILOT: 4.2★ — 1,847 reviews
- G2: 4.5★ — 312 reviews

### Hiring Signal
- Open roles: 23
- New titles: Head of Sales | DevRel Lead | Sr. Engineer (Go)

### Changes Since Last Run
- Pricing: New tier at $199 added; $149 tier removed
- Hiring: 18 → 23 open roles (+5)
- Homepage: Headline rewritten

### Strategic Read
- Hiring acceleration: +5 roles — likely post-funding expansion
- Pricing: New tier signals up-market move; review your own positioning
- Homepage rewrite detected — investigate ICP overlap
```

***

### Pricing

**Pay per report** — $0.50 per competitor intelligence report generated.

Run weekly on 5 competitors = $2.50/week. Compare: Crayon/Klue = $400+/week.

***

### Use Cases

#### Weekly Competitive Sweep

Schedule weekly across your top 5 competitors. Get a fresh intelligence brief every Monday — ready for your team standup.

#### Pre-Call Sales Intel

Run on-demand before an enterprise call. Know what changed at the account in the last 30 days.

#### Hiring-as-Growth-Signal

Track `changedSinceLastRun.hiring.delta`. A +10 role surge often signals a funding event before any press release.

#### Competitor Messaging Tracker

Monitor `siteChangeSignals.headline` for repositioning moves. When a competitor rewrites their homepage, it's usually a strategic shift.

***

### FAQ

**What review sources does it check?**
Trustpilot, G2, and Google (via search snippet). Provide the URLs in your input for best results.

**How fresh is the data?**
Scraped live on every run — no caching. Schedule daily or weekly for ongoing monitoring.

**Can I run this on a schedule?**
Yes — use Apify's built-in scheduler to run daily, weekly, or on any cron schedule.

**How do I connect to Slack or Notion?**
Use Apify webhooks + Zapier/Make to forward dataset items to any downstream tool.

**What if a page doesn't load?**
The Actor includes timeout recovery and logs warnings. It continues processing other competitors even if one page fails.

***

[Run your first competitor report →](https://apify.com/ramsford/competitor-intelligence-monitor)

# Actor input Schema

## `competitors` (type: `array`):

List of competitor objects. Each needs at minimum: name and homepageUrl.

## `trackPricing` (type: `boolean`):

Scrape pricing pages and detect price changes vs previous run.

## `trackReviews` (type: `boolean`):

Scrape Trustpilot, G2, and Google review ratings.

## `trackHiring` (type: `boolean`):

Detect open job postings and hiring acceleration/contraction.

## `trackPromotions` (type: `boolean`):

Detect active discounts, free trial offers, and promo banners.

## `trackSiteChanges` (type: `boolean`):

Detect headline, sub-headline, and CTA changes vs previous run.

## `maxReviewsPerCompetitor` (type: `integer`):

Maximum number of individual reviews to collect per review source.

## `reportStyle` (type: `string`):

Use 'full' for detailed markdown reports or 'brief' for bullet-point summaries.

## Actor input object example

```json
{
  "competitors": [
    {
      "name": "Acme Corp",
      "homepageUrl": "https://acmecorp.com",
      "pricingUrl": "https://acmecorp.com/pricing",
      "careersUrl": "https://acmecorp.com/careers",
      "trustpilotUrl": "https://www.trustpilot.com/review/acmecorp.com",
      "g2Url": "https://www.g2.com/products/acme-corp/reviews",
      "googleQuery": "Acme Corp software"
    }
  ],
  "trackPricing": true,
  "trackReviews": true,
  "trackHiring": true,
  "trackPromotions": true,
  "trackSiteChanges": true,
  "maxReviewsPerCompetitor": 10,
  "reportStyle": "full"
}
```

# 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("ramsford/competitor-intelligence-monitor").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("ramsford/competitor-intelligence-monitor").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 ramsford/competitor-intelligence-monitor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Competitor Intelligence Monitor — Pricing, Hiring & Reviews",
        "description": "Track any competitor's pricing, hiring, reviews (Trustpilot, G2, Google), promotions, and website changes. Generates AI-ready intelligence reports on every run. Pay per report.",
        "version": "0.1",
        "x-build-id": "6ytCIHBkOyqb9CFGj"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/ramsford~competitor-intelligence-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-ramsford-competitor-intelligence-monitor",
                "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/ramsford~competitor-intelligence-monitor/runs": {
            "post": {
                "operationId": "runs-sync-ramsford-competitor-intelligence-monitor",
                "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/ramsford~competitor-intelligence-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-ramsford-competitor-intelligence-monitor",
                "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": [
                    "competitors"
                ],
                "properties": {
                    "competitors": {
                        "title": "Competitors",
                        "type": "array",
                        "description": "List of competitor objects. Each needs at minimum: name and homepageUrl."
                    },
                    "trackPricing": {
                        "title": "Track Pricing",
                        "type": "boolean",
                        "description": "Scrape pricing pages and detect price changes vs previous run.",
                        "default": true
                    },
                    "trackReviews": {
                        "title": "Track Reviews",
                        "type": "boolean",
                        "description": "Scrape Trustpilot, G2, and Google review ratings.",
                        "default": true
                    },
                    "trackHiring": {
                        "title": "Track Hiring",
                        "type": "boolean",
                        "description": "Detect open job postings and hiring acceleration/contraction.",
                        "default": true
                    },
                    "trackPromotions": {
                        "title": "Track Promotions",
                        "type": "boolean",
                        "description": "Detect active discounts, free trial offers, and promo banners.",
                        "default": true
                    },
                    "trackSiteChanges": {
                        "title": "Track Site Changes",
                        "type": "boolean",
                        "description": "Detect headline, sub-headline, and CTA changes vs previous run.",
                        "default": true
                    },
                    "maxReviewsPerCompetitor": {
                        "title": "Max Reviews Per Competitor",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of individual reviews to collect per review source.",
                        "default": 10
                    },
                    "reportStyle": {
                        "title": "Report Style",
                        "enum": [
                            "full",
                            "brief"
                        ],
                        "type": "string",
                        "description": "Use 'full' for detailed markdown reports or 'brief' for bullet-point summaries.",
                        "default": "full"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
