Site Intel Monitor – Screenshot & Track Changes
Pricing
from $18.00 / 1,000 page analyzeds
Site Intel Monitor – Screenshot & Track Changes
Screenshot any page, extract clean Markdown content, pull every table as structured JSON, and get alerted the moment the page changes — with an optional AI-written summary of exactly what changed. Built for competitor tracking, pricing-page monitoring, and changelog watching.
Pricing
from $18.00 / 1,000 page analyzeds
Rating
0.0
(0)
Developer
Zaden
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Site Intel Monitor — Screenshot + Content + Tables + Change Detection + AI Summaries
Site Intel Monitor is a website change monitor and competitor price monitoring tool in one: point it at any page — a competitor's pricing page, a changelog, a docs site, a product listing — and get back everything in one run: a full-page screenshot, the main content as clean Markdown, every table on the page as structured JSON, and — unlike most change-monitor tools, which only tell you that a page changed — a real paragraph-level summary of what changed, optionally rewritten into a plain-English, business-impact sentence by an LLM and pushed straight to Slack or your own webhook.
Most tools on Apify Store do one of these things well. This Actor exists because in practice you usually want several of them together — especially for competitive intelligence and pricing monitoring, where "did the price change," "show me exactly what changed," and "tell my team right now" are really the same job.
What you get, per URL
- Screenshot — full-page PNG, stored and linked from the result.
- Content — the main article/content area converted to clean Markdown, with title, byline, publish date, and excerpt pulled from page metadata where available. Navigation, ads, cookie banners, and other clutter are stripped before extraction.
- Tables — every
<table>on the page (or within a CSS selector you specify), parsed into headers, raw rows, and — when the table has clean unique headers — row objects you can use directly. - Change detection with a real diff — the Actor remembers each URL's content in your own account storage. On the next check, it doesn't just flag
changed: true— it tells you how many paragraphs were added or removed, with examples of the actual text, so you don't have to open the page to find out what happened. - AI-written summaries (optional, bring your own key) — paste your own Anthropic or OpenAI API key and, instead of a paragraph count, you get one plain-English sentence about what actually changed: "Pro plan price dropped from $49 to $39/mo" rather than "1 paragraph added, 1 removed." Your key is used only for that run and never stored; you're billed by the Actor only when a summary is actually produced.
- Slack / webhook alerts — set a webhook URL and get pushed a message the moment a change is detected, formatted to render directly in Slack (or consume as plain JSON anywhere else — Zapier, Make, n8n, your own endpoint). The AI summary, when available, is used as the headline.
- A severity tag —
critical(nothing could be extracted from the page — usually a blocked request, wrong selector, or a page that needs JS/login this Actor can't provide),warning(content changed since last check), orok(no change) — for instant triage across a large batch of monitored URLs. - A one-line executive summary — whatever's most useful right now: the AI or diff summary if something changed, "no changes" if it didn't, or a flag if extraction failed.
- Bounded concurrency — URLs are screenshotted, extracted, and diffed in parallel (configurable), so a batch of 50 monitored pages finishes in a fraction of the time a one-by-one check would take.
Who this is for
- Competitive intelligence teams tracking competitor pricing pages, feature pages, or changelogs
- Sales and marketing teams that want an alert-style feed of "what changed on their site"
- Anyone feeding LLMs / RAG pipelines who also wants tables extracted as real structured data, not just flattened into Markdown text
- Anyone who wants a visual screenshot alongside the extracted content for a quick human sanity-check
How to use it
- Add one or more URLs under URLs to check.
- Optionally set a CSS selector to scope extraction to part of the page (e.g.
.pricing-table) — otherwise the Actor auto-detects the main content area. - Toggle screenshot, extract tables, and detect changes on or off depending on what you need.
- Optionally paste a Slack incoming webhook URL (or any webhook endpoint) to get pinged the moment a change is detected — no extra setup needed on our side.
- Optionally paste your own Anthropic or OpenAI API key to turn on AI-written change summaries.
- Optionally adjust max concurrent pages — the default (5) balances speed against not hammering any one site too hard.
- Run it once for a one-off snapshot, or put it on an Apify Schedule to monitor pages over time — change detection compares each run against your last one automatically.
Example output (one item)
{"url": "https://example.com/pricing","title": "Pricing – Example","markdown": "# Pricing\n\nOur plans...","wordCount": 412,"tables": [{"index": 0,"caption": "Plans","headers": ["Plan", "Price", "Seats"],"rowObjects": [{ "Plan": "Starter", "Price": "$29/mo", "Seats": "1" },{ "Plan": "Team", "Price": "$99/mo", "Seats": "10" }]}],"severity": "warning","summary": "Team plan price dropped from $99/mo to $89/mo.","changed": true,"previousCheckedAt": "2026-08-12T09:00:00.000Z","diffSummary": "1 paragraph added, 0 removed since last check.","aiSummary": "Team plan price dropped from $99/mo to $89/mo.","paragraphsAdded": 1,"paragraphsRemoved": 0,"addedExamples": ["Team plan is now $89/mo (was $99/mo)."],"removedExamples": [],"screenshotUrl": "https://api.apify.com/v2/key-value-stores/.../records/screenshot-...png","checkedAt": "2026-08-19T09:00:00.000Z"}
The first time you check a given URL, changed will be null — there's nothing to compare against yet. From the second check onward it's true or false, and diffSummary/addedExamples/removedExamples are populated whenever a change is found.
Pricing
This Actor uses pay-per-event pricing:
- Page analyzed — charged once per URL successfully processed (content extraction, table extraction, and change-detection are bundled into this single event).
- Screenshot — charged once per URL only when the screenshot option is enabled.
- AI summary — charged only when you've supplied your own API key, a change was actually detected, and a summary was successfully produced. No key, no charge.
You only pay for what you actually use — turn off tables, screenshots, or AI summaries for URLs where you don't need them and you won't be charged for those events. Note: AI summaries require your own Anthropic or OpenAI API key, and that provider bills you directly for the underlying LLM call — this Actor's "AI summary" event only covers the orchestration.
FAQ
What do the "severity" and "summary" fields mean?
summary is a one-line, plain-English description of what happened on this check — the AI or diff summary if content changed, "no changes detected" if it didn't, or a flag if extraction failed. severity is the triage tag: critical means nothing could be extracted from the page at all (usually a blocked request, wrong selector, or a page that needs JavaScript rendering or a login this Actor can't provide) — which is worth checking regardless of whether you care about content changes. warning means content changed since your last check. ok means the page loaded fine and nothing changed.
Will higher concurrency get me rate-limited? It can, on sites with aggressive rate limiting, or if you're monitoring many URLs on the same domain. Start at the default (5) and lower it if you see more failed/blocked requests for a particular site.
Does change detection work across scheduled runs? Yes — the baseline is stored in your own Apify account (a persistent key-value store), keyed by URL, so it persists between runs regardless of how you trigger them.
Can I scope extraction to just part of the page? Yes, use the CSS selector input. Useful for pages with a lot of unrelated content around the part you actually care about.
How do the Slack/webhook alerts work?
Paste a Slack incoming webhook URL (or any HTTPS endpoint that accepts a JSON POST) into the webhook input. Whenever a run detects a change, the Actor POSTs a message with a human-readable text field (renders natively in Slack) plus structured fields (aiSummary, diffSummary, paragraphsAdded, paragraphsRemoved, addedExamples, removedExamples) for anything else — Zapier, Make, n8n, or your own backend. No alert is sent on the first check of a URL (nothing to compare against yet) or on runs where nothing changed.
How do AI summaries work, and is my API key safe?
Paste your own Anthropic or OpenAI API key into the "AI API key" input and pick the matching provider. When (and only when) a change is detected on a URL, the Actor sends the added/removed text to your provider with a tight prompt asking for one plain-English, business-impact sentence — not a general chatbot call, no conversation history, nothing stored server-side. Your key is read from that run's input, used for that one HTTP request, and discarded; it is never logged, written to the dataset, or reused across runs. If you leave this blank, everything else (screenshot, tables, diff, webhook alerts) works exactly the same, just with diffSummary instead of aiSummary as your description of the change.
Can I use this to monitor a competitor's website for changes? Yes — that's the primary use case. Add their pricing page, changelog, or product page as a URL, turn on change detection, and put the Actor on a schedule. You'll get a diff (and, with a BYOK API key, an AI-written summary) the moment something moves, pushed to Slack or your own webhook — no manual page-checking needed.
Is this legal? Web scraping publicly available, non-personal data is generally legal; what you do with the content is a separate question, and content like documentation, articles, or blogs is typically copyrighted. If you're unsure, seek professional legal advice.