Universal AI Page Monitor avatar

Universal AI Page Monitor

Pricing

Pay per event

Go to Apify Store
Universal AI Page Monitor

Universal AI Page Monitor

Monitor any URL for changes — Amazon products, LinkedIn profiles, job boards, pricing pages, Hacker News, GitHub. AI generates CSS selectors + regex filters in plain English. Works in any language. No API key needed. MCP-ready for Claude, Cursor, Codex, Gemini, Cline.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Vitaly Kuprin

Vitaly Kuprin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

5 days ago

Last modified

Share

Monitor Amazon products, LinkedIn profiles, job boards, pricing pages, Hacker News, GitHub releases, Shopify stores, or any URL for changes. Plain-English intent in → CSS selectors + regex filters out. Ready to plug into any change-detection system or call as a tool from any MCP client.

  • No OpenAI/Anthropic API key needed. AI cost is included in the per-call event price.
  • Works on any URL in any language (English, Russian, Spanish, Chinese, Arabic, etc.).
  • MCP-ready for Claude Desktop, Cursor, Codex, Gemini Code Assist, Cline, Continue, and every MCP-compatible client.
  • Typical run cost: ~$0.13 (init + page fetch + 1 AI call + result). 100 pages/month ≈ $13.

What it does

Given a URL, the Actor:

  1. Fetches the page (Playwright by default; HTTP for static pages).
  2. Extracts main content with Defuddle — picks the right contentSelector for monitoring.
  3. Detects schema.org page type (Product, Article, JobPosting, …) from JSON-LD.
  4. Strips ads & cookie banners via EasyList + Fanboy's Cookie List (pre-baked at build time).
  5. Generates noise filters (regex ignore_text + CSS subtractive_selectors) for ephemeral content like timestamps and counters.
  6. Generates trigger patterns when you provide a plain-English intent — e.g. "notify when sold out" → regex that fires only on real change.

Multilingual by design — the prompts include explicit examples in Russian, Spanish, Chinese, and Arabic. When the page is in a non-English language, the engine emits ignore_text regex patterns in that language verbatim (e.g. /найдено\s+[\d\s]+\s*вакансии/i for a Russian SERP).

Inputs

FieldTypeRequiredDescription
urlstringyesAny HTTP(S) URL
intentstringnoPlain-English description of the change you want detected
fetchModehttp | playwrightno (default playwright)http is cheap and fast for static pages; playwright renders JS-heavy SPAs
screenshotboolno (default false)Save full-page PNG to KV store (Playwright mode only)
useEasyListboolno (default true)Apply EasyList + Fanboy's Cookie List
userAgentstringnoOverride the User-Agent for the page fetch

No API keys to paste. AI cost is included in the ai-call event price below.

Output

One row per analyzed URL, written to the run's default dataset:

{
"url": "https://news.ycombinator.com",
"fetchedAt": "2026-05-09T13:30:00.000Z",
"fetchMode": "playwright",
"pageType": "website",
"contentSelector": "#hnmain",
"includeFilters": ["#hnmain"],
"subtractiveSelectors": [".pagetop", "td.title:has(.titleline)"],
"triggerText": ["/(?:show hn|ask hn):/i"],
"ignoreText": ["/\\d+\\s*points?/i", "/posted\\s+\\d+/i"],
"explanation": "Configured content selector and noise filters for a list page.",
"warning": null,
"screenshotKey": null,
"aiTokens": { "input": 920, "output": 180 },
}

The output schema matches SmartFilterResult exactly — feed it directly into any change-detection backend that accepts CSS include/subtract filters, regex ignore_text, and regex trigger_text.

Pricing

Pay-per-event. Charges are configured in the Apify Console:

  • init — once per run
  • page-fetched — once per successfully fetched page
  • ai-call — once per LLM call (only when intent is set; AI cost is included)
  • screenshot — once if screenshot: true
  • result-pushed — once per dataset row

A typical run with intent set, Playwright fetch, no screenshot: 1× init + 1× page-fetched + 1× ai-call + 1× result-pushed. No external accounts or API keys required — the AI cost is rolled into the ai-call event price.

MCP usage (works with every MCP client)

Apify exposes Store Actors as MCP tools natively via the Apify MCP server. The same configuration works in every MCP-compatible client:

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (macOS) / %APPDATA%\Claude\claude_desktop_config.json (Windows)
  • Cursor~/.cursor/mcp.json
  • OpenAI Codex (the desktop client and the API's tools surface)
  • Google Gemini Code Assist (when MCP is enabled)
  • Cline (VS Code extension) — cline_mcp_settings.json
  • Continue.dev~/.continue/config.json
  • OpenClaw and other community MCP clients
  • Custom MCP clients built with the official MCP SDK (Python, TypeScript, Go)

Add this block to your client's MCP config:

{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server"],
"env": { "APIFY_TOKEN": "<your-apify-token>" }
}
}
}

Then ask your agent something like:

"Monitor https://news.ycombinator.com and tell me which CSS selectors and regex patterns I should use to detect when a new top story appears."

The agent calls this Actor with url + intent, gets the returned filters, and uses them to wire up monitoring elsewhere — no manual API key handling, no platform-specific glue code.

Examples

// Track price drops on a product page (AI-driven trigger patterns)
{
"url": "https://www.amazon.com/dp/B08N5WRWNW",
"intent": "Notify me when the price drops below $200",
"fetchMode": "playwright"
}
// Article changelog monitoring (no AI — noise filters only, lower cost)
{
"url": "https://nextjs.org/docs/app/api-reference/components",
"fetchMode": "http",
"useEasyList": false
}
// Job board monitoring with screenshot
{
"url": "https://news.ycombinator.com/jobs",
"intent": "Track new senior backend engineering jobs in Berlin",
"screenshot": true
}

Limits

  • Single URL per run. For multi-URL workflows, run the Actor once per URL or use Apify's Task scheduler / Schedule integration.
  • Defuddle returns title/markdown separately — contentSelector may be null for unstructured pages where Defuddle falls back to Turndown.
  • LLM call uses gpt-4.1-mini under the hood (cheap, fast, deterministic-leaning). AI cost is included in the ai-call event price — no API key for you to manage. The aiTokens field in the output is for transparency only.

Source & methodology

Engine: @site-spy/smart-config-core — the same module used in production by the Site Spy change-detection service. Tested on 1,066 real production pages with 99.4% configure-success — works on sites that break generic scrapers (A/B-tested layouts, hashed CSS classes, JS-heavy SPAs, non-English content).

Source is bundled into the Actor image at publish time. Hybrid architecture: deterministic extractors (Defuddle, JSON-LD, EasyList, regex pattern library) do most of the work; the LLM (gpt-4.1-mini) is only invoked for noise + trigger generation when the user provides intent.