Tutorial

How to Replace Clay with Claude Code and Scavio

Clay workflows are powerful but expensive. Rebuild the core enrichment flows in Claude Code + Scavio for a fraction of the cost.

Clay's enrichment-tables-plus-waterfalls model is powerful but starts at $800/mo for serious use. By 2026, teams are rebuilding the top 5 Clay workflows in Claude Code + Scavio and saving 70%. This tutorial ports the lead-enrichment, website-change-detection, and intent-signal workflows.

Prerequisites

  • Claude Code latest
  • A Scavio API key
  • Google Sheets or Airtable for the table UI
  • Node.js 20+

Walkthrough

Step 1: Set up a Sheet as the table UI

Columns: name, company, role, enriched_bio, last_news.

Text
# Google Sheet schema
name | company | role | enriched_bio | last_news | score

Step 2: Register Scavio MCP in Claude Code

Enables tool access during the enrichment loop.

JSON
{
  "mcpServers": {
    "scavio": { "command": "scavio-mcp", "env": { "SCAVIO_API_KEY": "sk_live_..." } }
  }
}

Step 3: Write the enrichment skill

Claude Code reads the sheet, enriches each row via Scavio, and writes back.

// ~/.claude/skills/clay-enrich.md
For each row with empty enriched_bio, use scavio to search the name + company and fill in:
- enriched_bio (role, seniority, tenure)
- last_news (most recent company news)
- score (0-10 based on ICP fit)

Step 4: Run the enrichment

Claude Code loops through rows.

Bash
claude-code run ./clay-enrich.md --sheet prospects.csv

Step 5: Add waterfalls for fallback

If Scavio does not find data, fall back to Google News SERP.

// In the skill prompt:
If primary SERP returns nothing, run scavio with platform=news as fallback.

Python Example

Python
import os, requests, csv

API_KEY = os.environ['SCAVIO_API_KEY']

def enrich(row):
    q = f'"{row["name"]}" "{row["company"]}"'
    r = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': API_KEY},
        json={'query': q, 'num_results': 3})
    hits = r.json().get('organic_results', [])
    row['enriched_bio'] = hits[0].get('snippet', '') if hits else ''
    return row

with open('prospects.csv') as f:
    rows = [enrich(r) for r in csv.DictReader(f)]
print(rows[0])

JavaScript Example

JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
export async function enrich(row) {
  const r = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST',
    headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ query: `"${row.name}" "${row.company}"`, num_results: 3 })
  });
  const hits = (await r.json()).organic_results || [];
  return { ...row, enriched_bio: hits[0]?.snippet || '' };
}

Expected Output

JSON
1000-row enrichment in 12-20 minutes. Typical Clay equivalent cost: $400/mo. Claude Code + Scavio: $30-80/mo at same volume.

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.

Claude Code latest. A Scavio API key. Google Sheets or Airtable for the table UI. Node.js 20+. A Scavio API key gives you 500 free credits per month.

Yes. The free tier includes 500 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

Clay workflows are powerful but expensive. Rebuild the core enrichment flows in Claude Code + Scavio for a fraction of the cost.