Build an AI-Powered Competitive Intelligence Dashboard (Claude + Apify + n8n)
Enterprise competitive intelligence tools — Crayon, Klue, Kompyte, Similarweb — charge $300–$2,000/month (quote-based, plan-dependent) for competitive monitoring dashboards. This same monitoring can be built with Apify for data collection, Claude for analysis, n8n for orchestration, and a free dashboard — for under $50/month (starting cost; scales with competitor count, Actor fees, and proxy usage).
This guide builds it step by step: from identifying what to monitor, to automated daily scrapes, to AI-powered change detection that alerts your team in Slack when competitors make moves that matter.
TL;DR:
| Component | Tool | Cost |
|---|---|---|
| Data collection | Apify (5 competitors, daily) | ~$30/mo |
| Analysis | Claude API (change detection, summarization) | ~$5–15/mo |
| Orchestration | n8n (self-hosted) | $0 |
| Dashboard | Google Sheets or Grafana | $0 |
| Alerts | Slack webhooks | $0 |
| Total | ~$35–45/mo |
What to monitor
Not everything about your competitors matters. Focus on signals that inform decisions:
| Signal | Business value | Data source | Frequency |
|---|---|---|---|
| Pricing changes | Sales response, margin protection | Pricing pages | Daily |
| Feature launches | Product roadmap alignment | Changelog, blog | Daily |
| Job postings | Hiring signals → product direction | Careers page, LinkedIn | Weekly |
| Review sentiment | Brand perception, product quality | G2, Capterra, Trustpilot | Weekly |
| SEO rankings | Content strategy gaps | Google SERPs | Weekly |
| Funding/press | Strategic moves, financial health | News, Crunchbase | Daily |
Start with pricing + feature launches — highest signal, lowest scraping cost.
Architecture
┌────────────────────────────────────────────────────────────────────┐
│ CI Dashboard Architecture │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Apify │──▶│ n8n │──▶│ Claude │──▶│ Store │ │
│ │ Actors │ │ (orch) │ │ (diff) │ │ (DB) │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │
│ │ Scheduled daily/weekly │ │
│ │ ┌──────────┐ │
│ │ │Dashboard │ │
│ │ │(Sheets/ │ │
│ │ │ Grafana) │ │
│ │ └──────────┘ │
│ │ │ │
│ │ On change detected │ │
│ │ ┌──────────┐ │
│ └───────────────────────────────────│ Slack │ │
│ │ Alert │ │
│ └──────────┘ │
└────────────────────────────────────────────────────────────────────┘
Step 1: Configure Apify Actors for each competitor
Pricing page scraping
Use the Website Content Crawler for each competitor's pricing page:
{
"startUrls": [
{ "url": "https://competitor1.com/pricing" },
{ "url": "https://competitor2.com/pricing" },
{ "url": "https://competitor3.com/pricing" }
],
"maxCrawlPages": 1,
"crawlerType": "playwright:firefox",
"removeElementsCssSelector": "nav, footer, .cookie-banner"
}
Saved as an Apify Task — reusable with consistent inputs. Schedule daily at 06:00 UTC.
Changelog/feature scraping
{
"startUrls": [
{ "url": "https://competitor1.com/changelog" },
{ "url": "https://competitor2.com/blog/tag/product" }
],
"maxCrawlPages": 5,
"crawlerType": "cheerio"
}
Review sentiment
Use the Google Search Scraper for G2/Capterra reviews:
{
"queries": ["site:g2.com competitor1 reviews 2026"],
"maxPagesPerQuery": 1,
"countryCode": "us"
}
queries must be a JSON array of strings for apify/google-search-scraper — confirm field names on the Actor's input schema in Apify Console.
Step 2: n8n workflow for daily collection
Build this workflow in n8n (self-hosted). See n8n + Apify Integration for connection setup.
Workflow nodes:
- Schedule Trigger — Daily 06:00 UTC
- HTTP Request — Start Apify Task for pricing scraping
- Loop / HTTP Request — Poll
GET https://api.apify.com/v2/actor-runs/{runId}(or use Apify's Webhook integration) untilstatusisSUCCEEDEDorFAILED— a fixed 60 second Wait is unreliable for Playwright crawls - HTTP Request — Fetch Apify dataset results (
/v2/datasets/{datasetId}/items) - Code Node — Parse and structure scraped data
- Database or Sheets — Load previous snapshot (Postgres, S3, Google Sheets, etc. — pick one store and document the node)
- HTTP Request — Call Claude Messages API with previous + current JSON (set
x-api-key, model id, and respect payload size limits) - IF Node — Changes detected?
- Slack — Post change alert (if changes found)
- Google Sheets — Append new snapshot (always)
Claude diff analysis prompt
Compare these two competitive intelligence snapshots and identify meaningful changes.
PREVIOUS (yesterday):
[previous snapshot JSON]
CURRENT (today):
[current snapshot JSON]
Return a JSON response:
{
"changes_detected": true/false,
"changes": [
{
"competitor": "name",
"type": "pricing | feature | hiring | review",
"description": "What changed",
"significance": "high | medium | low",
"recommended_action": "What the team should consider"
}
],
"summary": "One paragraph executive summary"
}
Only report changes that would matter to a product or sales team. Ignore cosmetic changes, wording tweaks, and formatting differences.
Step 3: Dashboard setup
Option A: Google Sheets (simplest)
Create a sheet with tabs for each signal type. n8n appends new rows daily.
| Date | Competitor | Signal | Change | Significance | Action |
|---|---|---|---|---|---|
| 2026-04-07 | Acme | Pricing | Pro plan $29→$39 | High | Review our pricing |
| 2026-04-07 | Beta Inc | Feature | Launched API v3 | Medium | Assess feature gap |
Use Google Sheets' built-in charts for trend visualization.
Option B: Grafana (advanced)
For teams that want real dashboards, push CI data to PostgreSQL and visualize with Grafana:
- Store snapshots in a
ci_snapshotstable - Create Grafana panels for price trends, hiring velocity, review scores
- Set up Grafana alerts for threshold breaches
See Monitoring Scrapers with Grafana for the Grafana setup.
Step 4: Slack alert system
Configure a Slack Incoming Webhook for your CI channel:
{
"text": "🔔 *Competitive Intelligence Alert*",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "🏢 *Competitor:* Acme Corp\n📊 *Change:* Pro plan price increased $29 → $39\n⚡ *Significance:* High\n💡 *Action:* Review our pricing positioning — their increase opens opportunity for our mid-tier plan"
}
}
]
}
In n8n, the Slack node formats and sends alerts only when Claude's analysis returns changes_detected: true with significance: high or medium.
Step 5: Weekly CI digest
In addition to real-time alerts, generate a weekly summary:
Add a Friday 16:00 UTC scheduled workflow that:
- Collects all changes from the past 7 days
- Sends to Claude for strategic summarization
- Posts to a dedicated Slack channel or emails to stakeholders
Weekly digest prompt:
Summarize this week's competitive intelligence findings for our executive team.
Changes this week:
[aggregated changes JSON]
Format as:
1. **Top 3 takeaways** (most strategically important changes)
2. **Competitor-by-competitor summary** (2-3 sentences each)
3. **Recommended actions** (prioritized list)
4. **What to watch next week** (emerging patterns)
Write for a CEO audience: concise, action-oriented, no technical jargon.
Cost comparison: DIY vs enterprise CI tools
| DIY (this guide) | Crayon | Klue | Similarweb | |
|---|---|---|---|---|
| Monthly cost | $35–45 | $500+ | $1,200+ | $300+ |
| Competitors tracked | Unlimited | Plan-dependent | Plan-dependent | Plan-dependent |
| Customization | Full (you own the code) | Template-based | Template-based | Template-based |
| Data freshness | Daily (configurable) | Daily | Daily | Monthly |
| Setup time | 4–6 hours | 2–4 weeks | 2–4 weeks | 1–2 weeks |
| Maintenance | 1–2 hours/month | Vendor-managed | Vendor-managed | Vendor-managed |
| AI analysis | Claude (customizable prompts) | Built-in | Built-in | Limited |
When to use enterprise CI tools instead: You have 50+ competitors, need human analyst interpretation, require executive-ready reports with no technical maintenance, or compliance requires vendor SLAs and audit trails.
Technically unlimited. The Apify Starter plan ($29/month) handles 5-10 competitors comfortably with daily pricing scrapes and weekly feature/hiring checks. Each additional competitor adds roughly $3-5/month in Apify compute costs.
Website Content Crawler handles most structural changes automatically because it extracts text content, not specific CSS selectors. For heavily dynamic sites, add a health check: if the scraped content is empty or drastically shorter than previous runs, trigger an alert to review the Actor configuration.
Yes. Make.com provides the same orchestration capabilities with a visual builder. It's slightly easier to set up but costs $9-29/month vs free for self-hosted n8n. See our Make.com + Apify guide for the visual workflow approach.
Use Apify's built-in proxy rotation. For aggressive anti-bot sites, switch from Cheerio to Playwright-based crawling and use residential proxies. As a last resort, monitor their publicly available RSS feeds, press releases, and social media accounts instead.
Google Alerts covers news and press mentions but misses pricing changes, feature updates, job postings, and review sentiment. This CI dashboard captures structured data that Google Alerts cannot — it's a complement, not a replacement.
Very accurate for structured changes (pricing, feature lists, job postings). Less reliable for nuanced changes (rewording marketing copy, subtle UI shifts). Provide the previous snapshot alongside the current one — Claude produces better diffs when it can compare directly rather than relying on memory.
A competitive intelligence dashboard is not a nice-to-have — it is an early warning system for the moves that affect your revenue, product roadmap, and market positioning. Building it yourself costs $35–45/month and 4–6 hours of setup versus $500+/month for enterprise tools.
Start scraping competitors on Apify and build your first n8n workflow today. For the no-code alternative, set up Make.com with Apify modules.
