# Smart Monitor — AI Change Detection (`umischael/smart-monitor`) Actor

Monitor any web page for changes. When something changes, AI tells you what happened and why it matters — in plain language.

- **URL**: https://apify.com/umischael/smart-monitor.md
- **Developed by:** [Mischael RADABANORO](https://apify.com/umischael) (community)
- **Categories:** AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 url checkeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Smart Monitor — AI Change Detection

Monitor any web page for changes. When something changes, **AI tells you what happened and why it matters** — in plain language. No more cryptic diffs.

***

### 🚀 What it does

1. **Add URLs** — one or more web pages you want to watch
2. **Set a schedule** — run this Actor every hour, day, or week (Apify scheduler)
3. **Get AI summaries** — when a page changes, you get a clear explanation:
   - "The pricing page updated: Enterprise plan went from **$999 to $799/mo** and a new 'Startup' tier was added at **$299/mo**"
   - "Product page: **Out of stock** badge appeared on the Sony WH-1000XM6"
   - "Careers page: **3 new job postings** added (Senior Backend Engineer, Product Designer, Sales Lead)"

### 🔍 Why use it?

| Problem | Solution |
|---|---|
| Manual checking = waste of time | Automatic monitoring, AI does the reading |
| Diff tools show HTML gobbledygook | **Plain English summaries** of what changed |
| Competitor moves fast | Get notified instantly when they change pricing, features, or positioning |
| Too many pages to watch | Monitor unlimited URLs in one run |

### 🧠 How it works

- **Scrapes** the page text content
- **Compares** with the previous snapshot (stored in Apify KV store)
- **Summarizes** changes with AI (your own OpenAI API key)
- **Reports** every URL's status in the output dataset

#### Change detection modes

- **Full page** — monitors the entire visible text content
- **CSS selector** — targets a specific element (e.g., `.price`, `#product-title`, `.offer-card`)

### 📥 Input

| Field | Required | Description |
|---|---|---|
| URLs | ✅ | Web pages to monitor |
| Detection mode | ✅ | Full page or CSS selector |
| CSS selector | Conditional | Required if mode is CSS selector |
| OpenAI API Key | Optional | Your key for AI summaries. Without it, you get raw diffs only |
| Model | Optional | Default: gpt-4o-mini |
| Language | Optional | Summary language (English, French, Spanish...) |

### 📤 Output

Each run produces a dataset with one row per URL per run:

| Field | Description |
|---|---|
| `url` | The monitored URL |
| `status` | `initial`, `unchanged`, `changed`, `skipped`, `error` |
| `impact` | `low`, `medium`, `high`, or `unknown` (AI-estimated) |
| `summary` | AI-generated summary of changes (in your chosen language) |
| `diff_preview` | Raw diff (first 1000 chars) |
| `timestamp` | When the check ran |

### 📅 Scheduling

This Actor is designed to run on a **schedule**. Set it up in the Apify Console:

1. Run once to capture the initial baseline
2. Go to **Schedules** → create a daily/hourly schedule
3. The Actor will only report pages that actually changed

### 🔑 API key

Optional. Provide an OpenAI API key to get AI summaries. Without it, the Actor still detects changes and reports `status: changed` — just no summary.
Get your key at: https://platform.openai.com/api-keys

### 💰 Pricing

**Rental model** — $19/month (coming soon). One price, unlimited URLs per run.

*Apify platform usage credits apply for compute + storage (snapshots stored in KV store).*

# Actor input Schema

## `urls` (type: `array`):

One or more web pages to watch for changes

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

Full page text or a specific CSS element

## `cssSelector` (type: `string`):

Only monitor this CSS element (e.g. .price, #product-title, .offer-card)

## `openaiApiKey` (type: `string`):

Your OpenAI API key for AI change summaries. Get one at platform.openai.com/api-keys

## `model` (type: `string`):

Model for generating change summaries

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

Language for the AI change summary

## Actor input object example

```json
{
  "urls": [
    {
      "url": "https://example.com"
    }
  ],
  "mode": "full_page",
  "cssSelector": "",
  "model": "gpt-4o-mini",
  "language": "English"
}
```

# 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("umischael/smart-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("umischael/smart-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 umischael/smart-monitor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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