📊 Use Case

SEO Monitoring with Screenshots

Track visual changes on your website and competitors. Catch SEO issues before they impact rankings.

Why Visual SEO Monitoring?

Traditional uptime monitoring tells you if your site is "up" - but what about visual issues? A page can load with a 200 status while:

What You Can Monitor

🏠 Your Homepage

Catch layout issues, missing images, or broken hero sections before users see them.

💰 Pricing Page

Verify pricing displays correctly after deployments.

📄 Landing Pages

Monitor A/B tests and campaign pages for visual regressions.

🔍 Search Results

Track your Google rankings with SERP screenshots.

🏢 Competitor Sites

Get alerted when competitors update pricing or features.

📱 Mobile Views

Separate monitoring for mobile, tablet, and desktop.

Implementation

Automated Monitoring Script

const fetch = require('node-fetch');
const fs = require('fs');

const PAGES_TO_MONITOR = [
    { name: 'Homepage', url: 'https://yoursite.com/', device: 'desktop' },
    { name: 'Homepage Mobile', url: 'https://yoursite.com/', device: 'mobile' },
    { name: 'Pricing', url: 'https://yoursite.com/pricing', device: 'desktop' },
    { name: 'Competitor', url: 'https://competitor.com/', device: 'desktop' }
];

async function captureAll() {
    const timestamp = new Date().toISOString().split('T')[0];
    
    for (const page of PAGES_TO_MONITOR) {
        const params = new URLSearchParams({
            url: page.url,
            api_key: process.env.SNAPAPI_KEY,
            device: page.device,
            response: 'binary'
        });
        
        const response = await fetch(
            `https://snapapi.alterra-solutions.com/v1/screenshot?${params}`
        );
        
        const filename = `${page.name.replace(/\s+/g, '_')}_${timestamp}.png`;
        fs.writeFileSync(`./screenshots/${filename}`, 
            Buffer.from(await response.arrayBuffer())
        );
        
        console.log(`✅ Captured: ${page.name}`);
    }
}

captureAll();

GitHub Actions Scheduler

# .github/workflows/monitoring.yml
name: SEO Monitoring

on:
  schedule:
    - cron: '0 */6 * * *'  # Every 6 hours
  workflow_dispatch:

jobs:
  capture:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
      - run: npm install node-fetch
      - run: node monitor.js
        env:
          SNAPAPI_KEY: ${{ secrets.SNAPAPI_KEY }}
      - uses: actions/upload-artifact@v3
        with:
          name: screenshots
          path: ./screenshots/

Why SnapAPI for Monitoring?

⏱️

Reliable & Fast

Consistent sub-2-second captures. No flaky tests.

📱

Device Emulation

Desktop, tablet, and mobile viewports in one API.

🔄

Scheduled Captures

Works with cron, GitHub Actions, or any scheduler.

💾

Historical Archive

Store screenshots over time to track changes.

Start Monitoring Today

100 screenshots/month free - enough for hourly monitoring of 3 pages.

Get Free API Key →