Workflow

Daily Competitor SERP Report

Track competitor SERP positions daily for target keywords. Automated email report with position changes.

Overview

Every morning, search target keywords, record competitor positions, compare to yesterday, and email a summary of position changes. Catches competitor SEO moves early.

Trigger

Daily at 6 AM UTC

Schedule

Daily at 6 AM UTC

Workflow Steps

1

Load keywords and competitors

Read keyword list and competitor domains from config.

2

Search each keyword

Query Google SERP for each keyword via search API.

3

Extract competitor positions

Find each competitor domain in results and record position.

4

Compare to previous day

Load yesterday data and calculate position deltas.

5

Send email report

Format position changes and send via SMTP or API.

Python Implementation

Python
import requests, os, json

H = {"x-api-key": os.environ["SCAVIO_API_KEY"]}
KEYWORDS = ["best crm software", "crm comparison 2026"]
COMPETITORS = ["hubspot.com", "salesforce.com", "pipedrive.com"]

def track_positions():
    report = {}
    for kw in KEYWORDS:
        data = requests.post("https://api.scavio.dev/api/v1/search",
            headers=H, json={"platform": "google", "query": kw}).json()
        positions = {}
        for r in data.get("organic_results", []):
            for comp in COMPETITORS:
                if comp in r.get("link", ""):
                    positions[comp] = r.get("position", 0)
        report[kw] = positions
    return report

today = track_positions()
for kw, positions in today.items():
    print(f"\n{kw}:")
    for domain, pos in sorted(positions.items(), key=lambda x: x[1]):
        print(f"  #{pos} {domain}")

JavaScript Implementation

JavaScript
const H = {"x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json"};
const keywords = ["best crm software"];
const competitors = ["hubspot.com", "salesforce.com"];

for (const kw of keywords) {
  const r = await fetch("https://api.scavio.dev/api/v1/search", {
    method: "POST", headers: H, body: JSON.stringify({platform: "google", query: kw})
  });
  const data = await r.json();
  for (const comp of competitors) {
    const pos = data.organic_results?.find(r => r.link?.includes(comp));
    console.log(`${kw}: ${comp} = #${pos?.position || "not found"}`);
  }
}

Platforms Used

Google

Web search with knowledge graph, PAA, and AI overviews

Frequently Asked Questions

Every morning, search target keywords, record competitor positions, compare to yesterday, and email a summary of position changes. Catches competitor SEO moves early.

This workflow uses a daily at 6 am utc. Daily at 6 AM UTC.

This workflow uses the following Scavio platforms: google. Each platform is called via the same unified API endpoint.

Yes. Scavio's free tier includes 500 credits per month with no credit card required. That is enough to test and validate this workflow before scaling it.

Daily Competitor SERP Report

Track competitor SERP positions daily for target keywords. Automated email report with position changes.