Tutorial

How to Add Search to an n8n Workflow in Five Minutes

Add web search to any n8n workflow in under five minutes using an HTTP Request node. No custom code or plugins required.

n8n is a popular no-code workflow automation tool, but it does not include a native web search node. Adding search takes exactly one HTTP Request node and five minutes of configuration. This tutorial walks through the setup step by step, shows how to parse results, and includes three workflow templates: content research, competitor monitoring, and lead enrichment. Cost: $0.005 per search via Scavio.

Prerequisites

  • n8n installed (self-hosted or n8n.cloud)
  • A Scavio API key from scavio.dev
  • Basic familiarity with n8n nodes

Walkthrough

Step 1: Add the HTTP Request node for search

Configure an HTTP Request node to call the Scavio search API. This is the only node you need for web search.

Python
# n8n HTTP Request Node Configuration:
#
# 1. Add an HTTP Request node to your workflow
# 2. Configure it:
#    Method: POST
#    URL: https://api.scavio.dev/api/v1/search
#    Authentication: None
#    Send Headers: ON
#      Header 1: x-api-key = {{$env.SCAVIO_API_KEY}}
#      Header 2: Content-Type = application/json
#    Send Body: ON
#    Body Content Type: JSON
#    Body Parameters:
#      query = {{$json.search_query}}   (or hardcode a string)
#      country_code = us
#      num_results = 10
#
# 3. Test it by clicking 'Execute Node'

# Python equivalent for testing:
import requests, os
resp = requests.post('https://api.scavio.dev/api/v1/search',
    headers={'x-api-key': os.environ['SCAVIO_API_KEY'],
             'Content-Type': 'application/json'},
    json={'query': 'n8n workflow automation 2026',
          'country_code': 'us', 'num_results': 5})
results = resp.json().get('organic_results', [])
print(f'{len(results)} results returned')
for r in results:
    print(f'  {r["title"][:50]}')

Step 2: Parse search results in n8n

Add a Set node or Function node after the HTTP Request to extract the fields you need from the search response.

Python
# n8n Function Node to parse results:
# (Place after the HTTP Request node)
#
# const results = $input.first().json.organic_results || [];
# return results.map(r => ({
#   json: {
#     title: r.title,
#     url: r.link,
#     snippet: r.snippet || '',
#     domain: new URL(r.link).hostname
#   }
# }));

# Python equivalent:
def parse_results(api_response: dict) -> list:
    results = api_response.get('organic_results', [])
    return [{
        'title': r['title'],
        'url': r['link'],
        'snippet': r.get('snippet', ''),
        'domain': r['link'].split('/')[2] if '/' in r['link'] else ''
    } for r in results]

data = resp.json()
parsed = parse_results(data)
for r in parsed[:3]:
    print(f'{r["title"]}: {r["domain"]}')

Step 3: Three ready-to-use workflow templates

Connect the search node to different triggers and downstream nodes for common automation patterns.

Python
# Template 1: Content Research (Cron -> Search -> Google Sheets)
# Trigger: Schedule (daily at 9am)
# Search query: 'latest {your_topic} news 2026'
# Output: Append results to Google Sheets

# Template 2: Competitor Monitor (Cron -> Search -> Slack)
# Trigger: Schedule (every 6 hours)
# Search query: 'site:{competitor.com} new'
# Output: Send new pages to Slack channel

# Template 3: Lead Enrichment (Webhook -> Search -> CRM)
# Trigger: Webhook (receives company name)
# Search query: '{company_name} news funding 2026'
# Output: Update CRM record with enrichment data

import requests, os

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']

def search(query):
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'},
        json={'query': query, 'country_code': 'us', 'num_results': 5})
    return resp.json().get('organic_results', [])

# Template 1: Daily content research
results = search('AI agent frameworks news 2026')
print(f'Content research: {len(results)} articles found')

# Template 2: Competitor monitoring
results = search('site:competitor.com new features')
print(f'Competitor updates: {len(results)} new pages')

# Template 3: Lead enrichment
results = search('Acme Corp funding news 2026')
print(f'Lead enrichment: {len(results)} results')

print(f'\nTotal cost: 3 searches = $0.015')
print(f'Monthly at 4x/day: $1.80')

Python Example

Python
import requests, os

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']

def search(query, count=5):
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'},
        json={'query': query, 'country_code': 'us', 'num_results': count})
    return [{'title': r['title'], 'url': r['link'], 'snippet': r.get('snippet', '')}
            for r in resp.json().get('organic_results', [])]

# Same query your n8n HTTP Request node would make
results = search('n8n workflow automation 2026')
for r in results:
    print(f'{r["title"]}: {r["url"]}')
print(f'Cost: $0.005')

JavaScript Example

JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;

async function search(query, count = 5) {
  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, country_code: 'us', num_results: count })
  });
  return (await resp.json()).organic_results?.map(r => ({
    title: r.title, url: r.link, snippet: r.snippet || ''
  })) || [];
}

// Same query your n8n node would make
search('n8n workflow automation 2026').then(r => r.forEach(x => console.log(x.title)));

Expected Output

JSON
5 results returned
  n8n Workflow Automation Platform - Getting Started
  Best n8n Workflows for 2026 - Community Templates
  How to Automate Anything with n8n

Content research: 5 articles found
Competitor updates: 3 new pages
Lead enrichment: 5 results

Total cost: 3 searches = $0.015
Monthly at 4x/day: $1.80

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 installed (self-hosted or n8n.cloud). A Scavio API key from scavio.dev. Basic familiarity with n8n nodes. 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

Add web search to any n8n workflow in under five minutes using an HTTP Request node. No custom code or plugins required.