Blog / Free Core Web Vitals Monitoring Script

Free Core Web Vitals Monitoring Script

December 2, 2025 18 min read

Summarize this blog post with:

Core Web Vitals are an SEO ranking factor, since mid 2021.

But most teams only check them monthly and never against competitors.

You see your LCP is 2.4 seconds. And we congratulate yourself and your team! “Good”.

But you have no idea if your competitor improved to 1.8 seconds last week. You don’t know who’s winning on the metrics Google uses for ranking.

That’s not monitoring. That’s guessing.

Here’s the better approach: A free Google Apps Script that automatically collects Core Web Vitals data for your website and competitor websites every single day. No paid tools.

No monthly subscriptions. Just automated competitive intelligence.

What You'll Track (The Three Metrics That Matter)

Google reports six Core Web Vitals. Three are ranking factors:

  • LCP (Largest Contentful Paint) — How fast your main content loads. Usually the biggest ranking impact.
  • CLS (Cumulative Layout Shift) — Visual stability. High CLS means pages jump around during load (bad for ranking and UX).
  • INP (Interaction to Next Paint) — How fast your site responds to clicks. Matters for interactive elements and checkout flows.

The script also tracks FCP, FID, and TTFB for complete visibility.

Why trends matter: Your competitor’s LCP improved 0.8 seconds this week. They rank higher next month. You find out when your traffic drops. Track trends daily instead.

What You Get

  • Automated daily collection — Set once, runs forever
  • Competitive benchmarking — Your site + unlimited competitors in one view
  • Historical trending — See 30, 60, 90+ day performance shifts
  • Google Sheets integration — Raw data you control
  • No coding required — 5-minute setup
  • 100% free — No SaaS, no subscriptions

By day 7: Week of comparative data.

By day 30: Real competitive trends emerge.

By day 90: Clear picture of your technical ranking position.

F

Free Ebook

The Complete Core Web Vitals Playbook for 2026

Step-by-step strategies to hit green scores on LCP, INP & CLS — with real scripts, tools, and fixes used by top-performing sites.

How to Set It Up (5 Steps)

Step 1: Get Free API Access (3 minutes)

1.Go to https://console.cloud.google.com/

2. Create a new project

3. Search for “Chrome UX Report API”

4. Click Enable

5. Go to Credentials > Create API Key

6. Copy your key

Done. It’s free and takes 3 minutes.

What Your Data Looks Like

After one week of tracking, your LCP sheet will show this:

Domain Sat 18 Oct Sun 19 Oct Mon 20 Oc Tue 21 Oc Wed 22 Oc Thu 23 Oc Fri 24 Oc
your-store.com 2800 2700 2600 2500 2400 2300 2200
competitor-a.com 2100 2100 2000 2000 1900 1900 1800
competitor-b.com 3400 3500 3400 3600 3400 3500 3500

What you can see immediately:

  • Competitor A is faster than you by ~400ms and improving
  • Competitor B is slower but unstable (3400—3600ms range)
  • Your trend is positive (2800 → 2200ms over the week)
  • You’re improving, but A is still ahead

Now multiply this by 30 days of data and you see real competitive positioning.

The Full "CWV vs Competition" App Script Code

/**
* ============================================================
* CHROME UX REPORT AUTOMATION SCRIPT
* ============================================================
*
* This Google Apps Script automatically fetches Chrome UX
* Report metrics for your domains and organizes them in a
* Google Sheet with historical tracking.
*
* SETUP REQUIRED:
* 1. Replace YOUR_API_KEY_HERE with your Chrome UX Report API key
* 2. Ensure you have a sheet named “A” with your domains in column A
* 3. Run the createSheetsAndAddData() function to start monitoring
*
* Author: Panos Kondylis, COO of Fussion
* ============================================================
*/

const API_KEY = “YOUR_API_KEY_HERE”;
const ENDPOINT = “https://chromeuxreport.googleapis.com/v1/records:queryRecord”;

function createSheetsAndAddData() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const source = ss.getSheetByName(“A”);
const domains = source.getRange(“A2:A”).getValues().flat().filter(Boolean);

domains.forEach((domain) => {
const data = fetchCWV(domain);
writeRow(ss, domain, data);
});
}

Troubleshooting (FAQs)

Chrome UX Report only shows data for websites with sufficient real Chrome user traffic. If you see “No Data”: • Try a different domain format (www. vs. non-www sometimes matters) • Brand new sites take time to accumulate data • If a major competitor shows “No Data,” they might not have the traffic volume you think

Double-check your API key is correct, that the Chrome UX Report API is enabled in Google Cloud, and that your domains are listed in column A of sheet “A”. The script logs errors to the Apps Script execution log.

• The Chrome UX Report API has rate limits (150 requests/minute)

• If you have 30+ domains, run earlier or split into two sheets

• The script continues where it left off on the next run

Want Help Beyond Core Web Vitals Tracking?

  • This free script gets you competitive visibility on Core Web Vitals. If you want to go deeper—including automated infrastructure optimization, ranking correlation analysis, and ongoing performance improvement—we can help.
  • We work with ecommerce brands, SaaS companies, and media properties to engineer technical performance as a competitive advantage.

P

Panos Kondylis

COO at Fussion

For over 20 years, I’ve worked with ambitious teams to help them unlock scalable growth. From eCommerce scaleups to early-stage startups, I’ve helped shape growth strategies that really move the needle. Performance, automation, experimentation: whatever it takes to unlock real momentum. At Fussion, we didn’t set out to become “just another digital agency.” We built something we had as marketers: a team that actually gets it.

Table of Contents

Free CWV Playbook

Everything you need to hit green scores across LCP, INP, and CLS in 2026.

// contact

Get a Free Growth Discovery Call

spitishop

ÄLE

T

workearly

Book a call with us