# Competitor Monitoring & Tracking: Pages, Jobs, Ads, News (`data-done-right/competitor-monitoring`) Actor

Competitor monitoring and competitor tracking in one report per domain: new website pages, new job openings, new Google ads and news mentions since your last run. Combines sitemaps, public job boards, Google Ads Transparency and Google News for competitor analysis. Schedule it weekly.

- **URL**: https://apify.com/data-done-right/competitor-monitoring.md
- **Developed by:** [Data Done Right](https://apify.com/data-done-right) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 competitor reports

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Competitor Monitoring & Tracking: Pages, Jobs, Ads, News

**Competitor monitoring and competitor tracking in one weekly report: for each competitor domain, what is new since you last looked.** This tool tracks new website pages, job openings, Google ads and news mentions, so marketing, product and sales teams spot launches early:

| Signal | Source | What it tells you |
|---|---|---|
| **New website pages** | Their sitemaps | New products, pricing pages, landing pages, docs, blog posts |
| **New job openings** | Their public job board (Greenhouse, Lever, Ashby, Workday, +3) | Where they're investing: new teams, new markets |
| **New Google ads** | Google Ads Transparency Center | New campaigns and messaging |
| **News mentions** | Google News, past 7 days | Press, funding, partnerships, problems |

### How to monitor your competitors

List the competitor domains, pick the signals you want to track, and schedule the Actor weekly. Each run compares with the previous one and lists only what changed.

### Input

```
airbnb.com
notion.so | https://jobs.ashbyhq.com/notion | Notion Labs
```

Give a domain, and optionally its careers URL and a distinctive brand name for news. Without them, the job board is detected from the domain name.

### Output (one report per competitor)

```json
{
  "domain": "notion.so", "reportDate": "2026-10-26", "previousRun": "2026-10-19",
  "summary": {"newPages": 14, "newJobs": 6, "newAds": 3, "newsMentions": 9},
  "totals": {"pagesInSitemaps": 19980, "openJobs": 129, "jobBoard": "ashby", "googleAdsSeen": 212},
  "newPages": ["https://www.notion.so/product/mail", "..."],
  "newJobs": [{"title": "Enterprise AE, DACH", "location": "Berlin", "url": "..."}],
  "newAds": [{"format": "video", "firstShown": "2026-10-22T...", "adUrl": "..."}],
  "news": [{"title": "...", "source": "TechCrunch", "publishedAt": "..."}],
  "warnings": []
}
```

The **first run saves a baseline**. Every later run lists only what's new. If a source is unavailable in a run, it's listed under `warnings` instead of being reported as "0 new", so you never get a false all-clear.

### Competitor tracking and analysis without a SaaS subscription

Most competitor tracking tools are monthly subscriptions. Here you pay per report: track 10 competitors weekly for about $1 a month. Use the reports for competitor analysis: which markets a rival is hiring for, which product pages it launched, and which ad campaigns it started.

### Competitor monitoring API

Call this Actor from the Apify API, Python, JavaScript, Make, Zapier or n8n and get each report as JSON, or export to CSV, Excel or Google Sheets. Send the weekly digest to Slack or email with an Apify integration.

### Use it in Claude, ChatGPT and Cursor

Connect Apify's MCP server (mcp.apify.com) and your AI assistant can check competitors itself. For example: "what did notion.so launch, hire for and advertise this week?" The only required input is `competitors`.

### How much does it cost

Pay per event: **$0.025 per competitor report** (`competitor-report`), plus the standard start fee. 10 competitors checked weekly cost about $1 a month. Apify Silver plans get 10% off, Gold and higher 20%.

### Use cases

- **Product and marketing teams:** see new product, pricing and landing pages as they appear.
- **Sales teams:** know where a rival is hiring and which markets it is entering.
- **Founders and analysts:** a weekly digest of press, ads and launches without checking each site by hand.

### FAQ

#### What is competitor monitoring?

Competitor monitoring means regularly checking what your competitors publish and do: new pages, hires, ads and press. This Actor automates that with public sources.

#### What is the difference between competitor monitoring and competitor analysis?

Monitoring is the ongoing tracking of what competitors change. Analysis is what you conclude from it. This Actor does the monitoring and gives you dated, structured changes to analyze.

#### What does this competitor monitoring tool track?

New pages from the competitor's sitemaps, new jobs from its public job board (Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable or Recruitee), new ads in the Google Ads Transparency Center, and Google News mentions from the past 7 days.

#### Does it monitor competitor prices?

No. For Shopify and WooCommerce price and stock changes, use the Shopify & WooCommerce Products + Price/Stock Change Monitor.

#### How often should I run it?

Weekly works well. The first run saves a baseline, and every later run lists only what is new since the previous one. You can schedule any interval.

#### What if a source is down?

It is listed under `warnings` for that competitor, so a failed source is never reported as "0 new".

#### Do I need a login or API key?

No. It uses public sources only.

### Related tools

- **Sitemap Extractor**: all URLs of a site, and only the new or changed pages.
- **[Google Ads Transparency Scraper](https://apify.com/data-done-right/google-ads-transparency-scraper)**: the full list of a competitor's Google ads.
- **[Hiring Signals](https://apify.com/data-done-right/hiring-signals)**: the tech stack and team growth behind a competitor's job posts.

# Actor input Schema

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

One per line: domain, optionally followed by '| careers URL' and/or '| brand name for news'. Example: notion.so | https://jobs.ashbyhq.com/notion | Notion Labs

## `trackPages` (type: `boolean`):

New URLs in the competitor's sitemaps.

## `trackJobs` (type: `boolean`):

From Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable or Recruitee.

## `trackAds` (type: `boolean`):

From Google Ads Transparency Center, for ads pointing to the domain.

## `trackNews` (type: `boolean`):

Google News mentions of the brand.

## `adsRegion` (type: `string`):

2-letter country code for ads, or 'anywhere'.

## `maxItemsPerSection` (type: `integer`):

Counts are always complete; this caps the listed examples.

## `maxPagesPerSite` (type: `integer`):

Cap for very large sites.

## `maxAdsPerSite` (type: `integer`):

Cap for big advertisers.

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

e.g. en-US.

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

e.g. US, GB.

## `proxyConfiguration` (type: `object`):

Residential gives Google sources the best success rate.

## Actor input object example

```json
{
  "competitors": [
    "notion.so | https://jobs.ashbyhq.com/notion"
  ],
  "trackPages": true,
  "trackJobs": true,
  "trackAds": true,
  "trackNews": true,
  "adsRegion": "US",
  "maxItemsPerSection": 50,
  "maxPagesPerSite": 2000,
  "maxAdsPerSite": 50,
  "language": "en-US",
  "country": "US",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All result items of this run (the default dataset), as JSON, CSV, Excel and more.

## `records` (type: `string`):

Key-value store records: the run summary, notes on any problems, and any files.

# 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 = {
    "competitors": [
        "notion.so | https://jobs.ashbyhq.com/notion"
    ],
    "maxPagesPerSite": 2000,
    "maxAdsPerSite": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("data-done-right/competitor-monitoring").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 = {
    "competitors": ["notion.so | https://jobs.ashbyhq.com/notion"],
    "maxPagesPerSite": 2000,
    "maxAdsPerSite": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("data-done-right/competitor-monitoring").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 '{
  "competitors": [
    "notion.so | https://jobs.ashbyhq.com/notion"
  ],
  "maxPagesPerSite": 2000,
  "maxAdsPerSite": 50
}' |
apify call data-done-right/competitor-monitoring --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,data-done-right/competitor-monitoring"
        }
    }
}
```

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/iFEpsQIBEJo9wCieO/builds/5VY4sH4ZbdWUNxumM/openapi.json
