Tutorial

How to Build a Shopify Competitor Tracker API

Track Shopify competitor products, pricing, and rankings with automated search API queries. Monitor new products, price changes, and SEO positions.

Build a Shopify competitor tracker that monitors rival stores' product listings, pricing, and search rankings by searching for competitor products across Google and Amazon, extracting price and availability data, and comparing changes over time. Shopify store owners need to know when competitors launch new products, change prices, or gain search ranking positions. An automated tracker catches these changes daily without manual browsing, and the search API provides structured data that is easier to process than raw HTML scraping.

Prerequisites

  • Python 3.8+ installed
  • requests library installed
  • A Scavio API key from scavio.dev
  • Competitor store names or product categories

Walkthrough

Step 1: Define competitors to track

Set up the competitor stores and product categories to monitor.

Python
import os, requests, json, datetime, time, re

API_KEY = os.environ['SCAVIO_API_KEY']

COMPETITORS = [
    {'name': 'CompetitorA', 'domain': 'competitor-a.myshopify.com', 'categories': ['t-shirts', 'hoodies']},
    {'name': 'CompetitorB', 'domain': 'competitor-b.com', 'categories': ['sneakers', 'accessories']},
]

HISTORY_FILE = 'competitor_tracker.json'

print(f'Tracking {len(COMPETITORS)} competitors')

Step 2: Search competitor products

Query Google for competitor product pages to track their catalog.

Python
def search_competitor_products(competitor: dict) -> list:
    products = []
    for category in competitor['categories']:
        query = f'site:{competitor["domain"]} {category}'
        resp = requests.post('https://api.scavio.dev/api/v1/search',
            headers={'x-api-key': API_KEY},
            json={'platform': 'google', 'query': query}, timeout=15)
        results = resp.json().get('organic_results', [])
        for r in results[:5]:
            products.append({
                'competitor': competitor['name'],
                'category': category,
                'title': r.get('title', ''),
                'url': r.get('link', ''),
                'snippet': r.get('snippet', ''),
            })
        time.sleep(0.3)
    return products

prods = search_competitor_products(COMPETITORS[0])
print(f'Found {len(prods)} products')
for p in prods[:3]:
    print(f"  [{p['category']}] {p['title'][:50]}")

Step 3: Search competitor pricing on Amazon

Cross-reference competitor products on Amazon to compare pricing.

Python
def search_amazon_pricing(product_name: str) -> dict:
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': API_KEY},
        json={'platform': 'amazon', 'query': product_name}, timeout=15)
    results = resp.json().get('organic_results', [])
    if not results:
        return {'found': False}
    top = results[0]
    price_str = top.get('price', '')
    price_clean = re.sub(r'[^\d.]', '', str(price_str))
    return {
        'found': True,
        'title': top.get('title', ''),
        'price': float(price_clean) if price_clean else 0,
        'rating': top.get('rating', ''),
        'url': top.get('link', ''),
    }

for p in prods[:2]:
    amazon = search_amazon_pricing(p['title'][:40])
    if amazon['found']:
        print(f"  {p['title'][:30]}: Amazon ${amazon['price']}")

Step 4: Track search rankings

Monitor where competitors rank for target keywords.

Python
def track_rankings(keywords: list, competitor_domains: list) -> list:
    rankings = []
    for keyword in keywords:
        resp = requests.post('https://api.scavio.dev/api/v1/search',
            headers={'x-api-key': API_KEY},
            json={'platform': 'google', 'query': keyword}, timeout=15)
        results = resp.json().get('organic_results', [])
        for i, r in enumerate(results):
            link = r.get('link', '')
            for domain in competitor_domains:
                if domain in link:
                    rankings.append({
                        'keyword': keyword,
                        'competitor': domain,
                        'position': i + 1,
                        'title': r.get('title', ''),
                        'date': datetime.date.today().isoformat(),
                    })
        time.sleep(0.3)
    return rankings

domains = [c['domain'] for c in COMPETITORS]
rankings = track_rankings(['trendy t-shirts', 'custom hoodies'], domains)
for r in rankings:
    print(f"  #{r['position']}: {r['competitor']} for '{r['keyword']}'")

Step 5: Generate competitor report

Produce a daily report comparing competitor activity, pricing, and rankings.

Python
def daily_report(competitors: list) -> str:
    lines = [f'Competitor Report - {datetime.date.today().isoformat()}', '']
    for comp in competitors:
        lines.append(f'--- {comp["name"]} ({comp["domain"]}) ---')
        products = search_competitor_products(comp)
        lines.append(f'  Products indexed: {len(products)}')
        for p in products[:2]:
            amazon = search_amazon_pricing(p['title'][:40])
            price_info = f', Amazon: ${amazon["price"]}' if amazon.get('found') else ''
            lines.append(f'  - {p["title"][:40]}{price_info}')
        lines.append('')
    report = '\n'.join(lines)
    # Save report
    with open(f'competitor_report_{datetime.date.today().isoformat()}.txt', 'w') as f:
        f.write(report)
    print(report)
    return report

daily_report(COMPETITORS)

Python Example

Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}

def track_competitor(domain, category):
    data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
        json={'platform': 'google', 'query': f'site:{domain} {category}'}).json()
    return [{'title': r.get('title', ''), 'url': r.get('link', '')}
        for r in data.get('organic_results', [])[:5]]

print(track_competitor('example.myshopify.com', 't-shirts'))

JavaScript Example

JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function trackCompetitor(domain, category) {
  const r = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST', headers: H,
    body: JSON.stringify({platform: 'google', query: `site:${domain} ${category}`})
  });
  return ((await r.json()).organic_results || []).slice(0, 5)
    .map(r => ({title: r.title, url: r.link}));
}
trackCompetitor('example.myshopify.com', 't-shirts').then(console.log);

Expected Output

JSON
A Shopify competitor tracking system that monitors product catalogs, compares Amazon pricing, tracks search rankings, and generates daily competitive intelligence reports.

Related Tutorials

Frequently Asked Questions

Most developers complete this tutorial in 15 to 30 minutes. You will need a Scavio API key (free tier works) and a working Python or JavaScript environment.

Python 3.8+ installed. requests library installed. A Scavio API key from scavio.dev. Competitor store names or product categories. A Scavio API key gives you 250 free credits per month.

Yes. The free tier includes 250 credits per month, which is more than enough to complete this tutorial and prototype a working solution.

Scavio has a native LangChain package (langchain-scavio), an MCP server, and a plain REST API that works with any HTTP client. This tutorial uses the raw REST API, but you can adapt to your framework of choice.

Start Building

Track Shopify competitor products, pricing, and rankings with automated search API queries. Monitor new products, price changes, and SEO positions.