Tutorial

How to Enrich Website Leads in n8n with Scavio

Five-workflow n8n setup that auto-enriches every inbound lead with LinkedIn, Reddit signal, and SERP context in under 10 seconds.

Inbound website leads land in HubSpot with just an email. Sales teams want LinkedIn, company size, and recent news before the SDR reaches out. Most enrichment stacks need three vendors and break every two weeks. This tutorial wires Scavio into n8n for SERP, Reddit, and LinkedIn-via-SERP under one credit pool.

Prerequisites

  • n8n self-hosted or cloud
  • Scavio API key in n8n credentials
  • HubSpot or Pipedrive credentials

Walkthrough

Step 1: Webhook trigger

n8n webhook node accepts the form payload (email + domain).

JavaScript
// Trigger node config: webhook URL exposed publicly
// Payload shape: { email: string, domain: string }

Step 2: SERP enrichment

HTTP node calls Scavio with site:linkedin.com filter.

JavaScript
// HTTP node:
// URL: https://api.scavio.dev/api/v1/google
// Body: { "query": "site:linkedin.com/in {{$json.email.split('@')[0]}}" }

Step 3: Reddit signal

HTTP node for Reddit company-mention check.

JavaScript
// HTTP node:
// URL: https://api.scavio.dev/api/v1/reddit/search
// Body: { "query": "{{$json.domain}}" }

Step 4: Merge into one record

Function node combines all enrichment data.

JavaScript
// Function node:
const enriched = {
  email: $input.first().json.email,
  linkedin: $('Scavio SERP').first().json.organic_results?.[0],
  reddit_mentions: $('Scavio Reddit').first().json.posts?.slice(0, 5)
};
return { json: enriched };

Step 5: Write to CRM

HubSpot node creates or updates the contact.

JavaScript
// HubSpot node config: operation=create or update
// Properties mapped from $json

Python Example

Python
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']

def enrich(email, domain):
    serp = requests.post('https://api.scavio.dev/api/v1/google',
        headers={'x-api-key': API_KEY},
        json={'query': f'site:linkedin.com/in {email.split("@")[0]}'}).json()
    rdt = requests.post('https://api.scavio.dev/api/v1/reddit/search',
        headers={'x-api-key': API_KEY},
        json={'query': domain}).json()
    return {'linkedin': serp.get('organic_results',[])[:3], 'reddit': rdt.get('posts',[])[:5]}

print(enrich('jane@acme.com', 'acme.com'))

JavaScript Example

JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
export async function enrich(email, domain) {
  const namePart = email.split('@')[0];
  const [serp, rdt] = await Promise.all([
    fetch('https://api.scavio.dev/api/v1/google', { method:'POST', headers:{'x-api-key':API_KEY,'Content-Type':'application/json'}, body: JSON.stringify({ query: `site:linkedin.com/in ${namePart}` }) }).then(r => r.json()),
    fetch('https://api.scavio.dev/api/v1/reddit/search', { method:'POST', headers:{'x-api-key':API_KEY,'Content-Type':'application/json'}, body: JSON.stringify({ query: domain }) }).then(r => r.json())
  ]);
  return { serp, rdt };
}

Expected Output

JSON
Each inbound form submission produces an enriched HubSpot contact with LinkedIn URL, recent Reddit mentions of the company, and SERP brand context — all in under 10 seconds.

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.

n8n self-hosted or cloud. Scavio API key in n8n credentials. HubSpot or Pipedrive credentials. 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

Five-workflow n8n setup that auto-enriches every inbound lead with LinkedIn, Reddit signal, and SERP context in under 10 seconds.