Tutorial

How to Enrich Cold Email Targets for E-Commerce

Enrich e-commerce lead lists with store data, tech stack signals, and traffic estimates via search API. $0.005/lead.

Cold email to e-commerce stores works better with enriched data. Instead of blasting generic messages, this pipeline takes a list of store domains and enriches each with product count estimates, tech stack signals, and competitive positioning. Each enrichment query costs $0.005.

Prerequisites

  • Python 3.8+
  • requests library
  • A Scavio API key from scavio.dev
  • A list of e-commerce domains to enrich

Walkthrough

Step 1: Enrich e-commerce domains with search data

Search for each domain to find store details, reviews, and market positioning.

Python
import os, requests, json, csv
from datetime import datetime

API_KEY = os.environ['SCAVIO_API_KEY']
SH = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}

TARGET_DOMAINS = [
    'allbirds.com',
    'brooklinen.com',
    'chubbiesshorts.com',
]

def enrich_ecommerce(domain):
    data = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json={'query': f'site:{domain}', 'country_code': 'us'}, timeout=10).json()
    organic = data.get('organic_results', [])
    # Basic enrichment
    enriched = {
        'domain': domain,
        'indexed_pages': len(organic),
        'title': organic[0].get('title', '') if organic else '',
        'description': organic[0].get('snippet', '')[:120] if organic else '',
        'product_pages': sum(1 for r in organic if any(w in r.get('link', '').lower() for w in ['/product', '/shop', '/collection'])),
        'has_blog': any('/blog' in r.get('link', '').lower() for r in organic),
    }
    # Tech stack signals from snippets
    all_text = ' '.join(r.get('snippet', '') for r in organic).lower()
    if 'shopify' in all_text: enriched['platform'] = 'Shopify'
    elif 'woocommerce' in all_text: enriched['platform'] = 'WooCommerce'
    elif 'bigcommerce' in all_text: enriched['platform'] = 'BigCommerce'
    else: enriched['platform'] = 'Unknown'
    return enriched

for domain in TARGET_DOMAINS:
    info = enrich_ecommerce(domain)
    print(f'  {domain:25} | Pages: {info["indexed_pages"]} | Products: {info["product_pages"]} | Blog: {info["has_blog"]}')
    print(f'    Platform: {info["platform"]} | {info["title"][:45]}')
print(f'\nCost: ${len(TARGET_DOMAINS) * 0.005:.3f}')

Step 2: Add competitive context

Find how each store ranks for key terms and who their competitors are.

Python
def competitive_context(domain):
    # Search for brand mentions
    brand = domain.split('.')[0]
    data = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json={'query': f'{brand} review', 'country_code': 'us'}, timeout=10).json()
    organic = data.get('organic_results', [])
    review_mentions = sum(1 for r in organic if domain in r.get('link', '').lower())
    competitor_domains = set()
    for r in organic:
        link = r.get('link', '')
        if domain not in link and any(ext in link for ext in ['.com', '.co']):
            comp_domain = link.split('//')[1].split('/')[0] if '//' in link else ''
            if comp_domain and 'google' not in comp_domain and 'youtube' not in comp_domain:
                competitor_domains.add(comp_domain)
    return {
        'brand_review_presence': review_mentions,
        'competitor_domains': list(competitor_domains)[:5],
        'total_review_results': len(organic),
    }

print(f'\n=== Competitive Context ===')
for domain in TARGET_DOMAINS:
    ctx = competitive_context(domain)
    print(f'  {domain:25} | Reviews: {ctx["brand_review_presence"]}/{ctx["total_review_results"]}')
    if ctx['competitor_domains']:
        print(f'    Competitors: {", ".join(ctx["competitor_domains"][:3])}')
print(f'\nAdditional cost: ${len(TARGET_DOMAINS) * 0.005:.3f}')

Step 3: Export enriched list for cold email

Generate the enriched CSV ready for cold email campaigns.

Python
def build_outreach_list(domains):
    leads = []
    for domain in domains:
        info = enrich_ecommerce(domain)
        ctx = competitive_context(domain)
        leads.append({**info, **ctx})
    # Export
    filename = f'ecommerce_leads_{datetime.now().strftime("%Y%m%d")}.csv'
    with open(filename, 'w', newline='') as f:
        fields = ['domain', 'title', 'platform', 'indexed_pages', 'product_pages', 'has_blog', 'brand_review_presence']
        writer = csv.DictWriter(f, fieldnames=fields)
        writer.writeheader()
        for lead in leads:
            writer.writerow({k: lead.get(k, '') for k in fields})
    print(f'\n=== E-Commerce Enrichment Summary ===')
    print(f'  Domains enriched: {len(leads)}')
    print(f'  Shopify stores: {sum(1 for l in leads if l["platform"] == "Shopify")}')
    print(f'  With blog: {sum(1 for l in leads if l["has_blog"])}')
    print(f'  Exported to: {filename}')
    print(f'\n  Cost: ${len(domains) * 2 * 0.005:.3f} (2 queries per domain)')
    print(f'  For 100 domains: ${100 * 2 * 0.005:.2f}')
    print(f'  vs. Clearbit enrichment: $0.20-1.00/lead')

build_outreach_list(TARGET_DOMAINS)

Python Example

Python
import os, requests
SH = {'x-api-key': os.environ['SCAVIO_API_KEY'], 'Content-Type': 'application/json'}

def enrich(domain):
    data = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json={'query': f'site:{domain}', 'country_code': 'us'}, timeout=10).json()
    results = data.get('organic_results', [])
    print(f'{domain}: {len(results)} indexed pages')

enrich('allbirds.com')
print('Cost: $0.005')

JavaScript Example

JavaScript
const SH = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
const data = await fetch('https://api.scavio.dev/api/v1/search', {
  method: 'POST', headers: SH,
  body: JSON.stringify({ query: 'site:allbirds.com', country_code: 'us' })
}).then(r => r.json());
console.log(`Indexed pages: ${(data.organic_results || []).length}`);

Expected Output

JSON
  allbirds.com              | Pages: 10 | Products: 4 | Blog: True
    Platform: Shopify | Allbirds: Sustainable Shoes and Clothing
  brooklinen.com             | Pages: 10 | Products: 5 | Blog: True
    Platform: Shopify | Brooklinen: Luxury Bedding and Towels
  chubbiesshorts.com         | Pages: 8  | Products: 3 | Blog: False
    Platform: Shopify | Chubbies: The Shorts Company

Cost: $0.015

=== E-Commerce Enrichment Summary ===
  Domains enriched: 3
  Shopify stores: 3
  With blog: 2
  Cost: $0.030 (2 queries per domain)
  For 100 domains: $1.00
  vs. Clearbit enrichment: $0.20-1.00/lead

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+. requests library. A Scavio API key from scavio.dev. A list of e-commerce domains to enrich. 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

Enrich e-commerce lead lists with store data, tech stack signals, and traffic estimates via search API. $0.005/lead.