Tutorial

How to Find Automation Agency Clients with Search Data

Discover potential automation agency clients by monitoring search data for businesses with manual workflows. Data-driven client prospecting pipeline.

Automation agencies waste time cold-calling random businesses. A smarter approach: use search data to find businesses actively looking for automation help, complaining about manual processes, or hiring for roles that automation could replace. This tutorial builds a client discovery pipeline that searches Google and Reddit for signals indicating a business needs automation services, at $0.005 per search via the Scavio API.

Prerequisites

  • Python 3.9+ installed
  • requests library installed
  • A Scavio API key from scavio.dev
  • A clear niche for your automation agency

Walkthrough

Step 1: Define client discovery queries

Create search queries that reveal businesses needing automation. Job postings for manual roles, Reddit complaints about manual processes, and tool comparison searches all signal opportunity.

Python
import os, requests, time, re

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
URL = 'https://api.scavio.dev/api/v1/search'
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}

def build_discovery_queries(niche: str) -> list:
    return [
        # Job postings for manual roles (automation opportunity)
        {'query': f'{niche} data entry hiring 2026', 'signal': 'hiring_manual'},
        {'query': f'{niche} manual reporting job', 'signal': 'hiring_manual'},
        # Reddit pain points
        {'query': f'site:reddit.com {niche} spreadsheet nightmare', 'signal': 'pain_point'},
        {'query': f'site:reddit.com {niche} automate manual process', 'signal': 'seeking_automation'},
        # Tool research (actively looking for solutions)
        {'query': f'{niche} automation tools 2026', 'signal': 'tool_research'},
        {'query': f'{niche} workflow automation software', 'signal': 'tool_research'},
        # Industry-specific
        {'query': f'{niche} agency needs automation', 'signal': 'direct_need'},
    ]

queries = build_discovery_queries('real estate')
for q in queries:
    print(f'[{q["signal"]:20s}] {q["query"]}')

Step 2: Search and extract prospect signals

Run the discovery queries and extract companies showing automation need. Job boards reveal companies with manual processes, Reddit reveals pain points.

Python
def search_for_prospects(queries: list) -> list:
    prospects = []
    for q in queries:
        resp = requests.post(URL, headers=H,
            json={'query': q['query'], 'country_code': 'us', 'num_results': 5})
        for r in resp.json().get('organic_results', []):
            domain = re.search(r'https?://(?:www\.)?([\w.-]+)', r.get('link', ''))
            prospects.append({
                'title': r['title'],
                'url': r['link'],
                'domain': domain.group(1) if domain else '',
                'snippet': r.get('snippet', '')[:200],
                'signal': q['signal'],
                'query': q['query'],
            })
        time.sleep(0.3)
    return prospects

def score_prospects(prospects: list) -> list:
    scores = {
        'direct_need': 10, 'seeking_automation': 9, 'pain_point': 8,
        'hiring_manual': 7, 'tool_research': 5,
    }
    for p in prospects:
        p['score'] = scores.get(p['signal'], 3)
        # Boost if snippet mentions specific pain
        snippet_lower = p['snippet'].lower()
        if any(w in snippet_lower for w in ['manual', 'tedious', 'hours', 'spreadsheet']):
            p['score'] += 2
    prospects.sort(key=lambda x: x['score'], reverse=True)
    return prospects

prospects = search_for_prospects(queries)
scored = score_prospects(prospects)
print(f'Found {len(scored)} prospect signals')
for p in scored[:5]:
    print(f'  [{p["score"]:2d}] {p["signal"]:20s} | {p["domain"]}')
    print(f'       {p["title"][:60]}')

Step 3: Enrich prospects with company data

Search for each unique company domain to get more context: what they do, their size, and specific automation opportunities.

Python
def enrich_prospect(domain: str) -> dict:
    """Get company details via search."""
    resp = requests.post(URL, headers=H,
        json={'query': domain, 'country_code': 'us', 'num_results': 3})
    data = resp.json()
    kg = data.get('knowledge_graph', {})
    organic = data.get('organic_results', [])[:2]
    return {
        'domain': domain,
        'description': kg.get('description', organic[0].get('snippet', '') if organic else ''),
        'website': kg.get('website', f'https://{domain}'),
        'type': kg.get('type', ''),
    }

def build_prospect_profiles(scored_prospects: list, max_enrich: int = 10) -> list:
    """Enrich top prospects with company details."""
    # Deduplicate by domain
    seen = {}
    for p in scored_prospects:
        d = p['domain']
        if d and d not in seen:
            seen[d] = p
    unique = sorted(seen.values(), key=lambda x: x['score'], reverse=True)[:max_enrich]
    profiles = []
    for p in unique:
        enrichment = enrich_prospect(p['domain'])
        p.update(enrichment)
        profiles.append(p)
        time.sleep(0.3)
    return profiles

profiles = build_prospect_profiles(scored)
print(f'\nEnriched {len(profiles)} prospect profiles')
for p in profiles[:5]:
    print(f'\n  {p["domain"]} (Score: {p["score"]})')
    print(f'  Signal: {p["signal"]}')
    print(f'  Description: {p["description"][:80]}')

Step 4: Generate outreach context for each prospect

Create personalized outreach talking points based on the specific automation signal detected. Each prospect gets a tailored pitch angle.

Python
import csv

def generate_outreach(profiles: list) -> list:
    signal_pitches = {
        'hiring_manual': 'You are hiring for manual {niche} roles. Automation could handle this at 10x speed for the cost of one hire.',
        'pain_point': 'Your team mentioned struggling with manual processes. We automate exactly this type of workflow.',
        'seeking_automation': 'You are actively looking for automation solutions. We specialize in {niche} workflow automation.',
        'tool_research': 'You are evaluating automation tools. We build custom solutions that integrate your existing stack.',
        'direct_need': 'You have expressed a direct need for automation. We can scope a solution in a 30-minute call.',
    }
    for p in profiles:
        p['pitch'] = signal_pitches.get(p['signal'], 'We help companies automate manual workflows.').format(niche='your')
    # Export
    with open('agency_prospects.csv', 'w', newline='') as f:
        w = csv.DictWriter(f, fieldnames=['domain', 'score', 'signal', 'description', 'pitch', 'url'],
                          extrasaction='ignore')
        w.writeheader()
        w.writerows(profiles)
    total_searches = len(queries) + len(profiles)  # discovery + enrichment
    print(f'Exported {len(profiles)} prospects to agency_prospects.csv')
    print(f'Total searches: {total_searches}')
    print(f'Cost: ${total_searches * 0.005:.3f}')
    return profiles

generate_outreach(profiles)

Python Example

Python
import os, requests, time

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

def find_clients(niche):
    queries = [f'{niche} automate manual process', f'site:reddit.com {niche} spreadsheet help',
               f'{niche} automation tools 2026']
    leads = []
    for q in queries:
        resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
            json={'query': q, 'country_code': 'us', 'num_results': 5})
        for r in resp.json().get('organic_results', []):
            leads.append({'title': r['title'], 'url': r['link'], 'query': q})
        time.sleep(0.3)
    print(f'Found {len(leads)} automation-need signals for {niche}')
    print(f'Cost: ${len(queries) * 0.005:.3f}')
    for l in leads[:5]:
        print(f'  {l["title"][:60]}')

find_clients('real estate')

JavaScript Example

JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;

async function findClients(niche) {
  const queries = [`${niche} automate manual process`, `site:reddit.com ${niche} spreadsheet help`,
                   `${niche} automation tools 2026`];
  const leads = [];
  for (const q of queries) {
    const resp = await fetch('https://api.scavio.dev/api/v1/search', {
      method: 'POST',
      headers: { 'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json' },
      body: JSON.stringify({ query: q, country_code: 'us', num_results: 5 })
    });
    for (const r of ((await resp.json()).organic_results || [])) {
      leads.push({ title: r.title, url: r.link, query: q });
    }
  }
  console.log(`Found ${leads.length} signals for ${niche}`);
  leads.slice(0, 5).forEach(l => console.log(`  ${l.title.slice(0, 60)}`));
}

findClients('real estate');

Expected Output

JSON
Found 28 prospect signals
  [12] hiring_manual        | realtycorp.com
       Hiring: Data Entry Specialist for Property Listings
  [10] seeking_automation   | reddit.com
       r/realtors - How do you automate listing updates?

Enriched 10 prospect profiles

  realtycorp.com (Score: 12)
  Signal: hiring_manual
  Description: Full-service real estate brokerage with 200+ agents

Exported 10 prospects to agency_prospects.csv
Total searches: 17
Cost: $0.085

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.9+ installed. requests library installed. A Scavio API key from scavio.dev. A clear niche for your automation agency. 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

Discover potential automation agency clients by monitoring search data for businesses with manual workflows. Data-driven client prospecting pipeline.