Blog/SEO

Use Screenshot API for SEO Page Monitoring

Your pages might look broken to Googlebot and you would never know. Use screenshot monitoring to catch visual issues before they tank your rankings.

March 14, 2026|8 min read

Why visual monitoring matters for SEO

Google evaluates your pages visually. Core Web Vitals, mobile-friendliness, and content layout all factor into rankings. A broken page that loads fine server-side but renders incorrectly in the browser can silently destroy your SEO performance.

Common issues that visual monitoring catches:

Setting up SEO page monitoring with ScreenshotAPI

The idea is simple: take screenshots of your important pages on a schedule, then compare them. When a page changes unexpectedly, you get alerted before Google re-crawls it.

Step 1: Define your monitoring list

Focus on pages that drive organic traffic. Check Google Search Console for your top landing pages.

// pages-to-monitor.js
const pages = [
  { url: 'https://yoursite.com/', name: 'Homepage' },
  { url: 'https://yoursite.com/pricing', name: 'Pricing' },
  { url: 'https://yoursite.com/product', name: 'Product' },
  { url: 'https://yoursite.com/blog/top-post', name: 'Top Blog Post' },
];

module.exports = pages;

Step 2: Capture screenshots with the API

const fetch = require('node-fetch');
const fs = require('fs');
const path = require('path');
const pages = require('./pages-to-monitor');

const API_KEY = process.env.SCREENSHOT_API_KEY;
const API_URL = 'https://screenshotapi-api-production.up.railway.app';

async function captureScreenshots() {
  const timestamp = new Date().toISOString().split('T')[0];
  const dir = `./screenshots/${timestamp}`;
  fs.mkdirSync(dir, { recursive: true });

  for (const page of pages) {
    console.log(`Capturing: ${page.name}`);

    // Desktop screenshot
    const desktopRes = await fetch(
      `${API_URL}/v1/screenshot?url=${encodeURIComponent(page.url)}&width=1280&height=800&format=png&fullpage=true`,
      { headers: { 'Authorization': `Bearer ${API_KEY}` } }
    );
    const desktopBuffer = await desktopRes.buffer();
    fs.writeFileSync(`${dir}/${page.name}-desktop.png`, desktopBuffer);

    // Mobile screenshot
    const mobileRes = await fetch(
      `${API_URL}/v1/screenshot?url=${encodeURIComponent(page.url)}&width=375&height=812&format=png&fullpage=true`,
      { headers: { 'Authorization': `Bearer ${API_KEY}` } }
    );
    const mobileBuffer = await mobileRes.buffer();
    fs.writeFileSync(`${dir}/${page.name}-mobile.png`, mobileBuffer);
  }

  console.log(`Screenshots saved to ${dir}`);
}

captureScreenshots();

Step 3: Compare screenshots over time

Use an image comparison library like pixelmatch to detect changes between screenshots:

const { PNG } = require('pngjs');
const pixelmatch = require('pixelmatch');

function compareScreenshots(img1Path, img2Path) {
  const img1 = PNG.sync.read(fs.readFileSync(img1Path));
  const img2 = PNG.sync.read(fs.readFileSync(img2Path));

  const { width, height } = img1;
  const diff = new PNG({ width, height });

  const mismatchedPixels = pixelmatch(
    img1.data, img2.data, diff.data,
    width, height,
    { threshold: 0.1 }
  );

  const changePercent = (mismatchedPixels / (width * height)) * 100;

  if (changePercent > 5) {
    console.warn(`WARNING: ${changePercent.toFixed(1)}% change detected!`);
    // Send alert via Slack, email, etc.
  }

  return changePercent;
}

Step 4: Automate with cron

Run the monitoring script daily or after each deploy. Here is a simple cron setup:

# Run daily at 6 AM
0 6 * * * cd /path/to/monitor && node capture.js && node compare.js

Advanced: Mobile vs desktop monitoring

Google uses mobile-first indexing, so mobile screenshots are actually more important for SEO. ScreenshotAPI lets you set any viewport size:

Advanced: Block cookie popups

Cookie consent popups can obscure your actual content in screenshots. ScreenshotAPI has built-in ad and cookie blocking to capture clean screenshots:

// Add block_ads=true to remove cookie popups and ads
const url = `${API_URL}/v1/screenshot?url=${encodeURIComponent(page.url)}&width=1280&height=800&block_ads=true`;

What to monitor

Focus your monitoring on:

  1. Top 10 organic landing pages -- these drive your SEO traffic
  2. Key conversion pages -- pricing, signup, product pages
  3. Pages with dynamic content -- anything loaded via JavaScript
  4. New pages after deploy -- catch deployment regressions immediately

Cost estimate

Monitoring 20 pages daily (desktop + mobile = 40 screenshots/day) uses about 1,200 screenshots per month. That fits comfortably in the Pro plan at 10,000 screenshots/month for $29/mo.

Get started

Sign up for a free account with 100 screenshots per month -- enough to test your monitoring setup before committing to a paid plan.

Try It Free in the Playground

Related articles