ScavioScavio
ProductPricingDocs
Sign InGet Started
  1. Home
  2. Tutorials
  3. How to Add API Search to Hermes Without Browser
Tutorial

How to Add API Search to Hermes Without Browser

Give Hermes agent web search without a browser. Replace headless Chrome with a single API call. $0.005/search.

Get Free API KeyAPI Docs

Hermes agents rely on headless browsers or SearXNG for web search, which are slow, fragile, and resource-heavy. This tutorial replaces browser-based search with a direct API call. The agent gets structured results in 300ms instead of 3-5 seconds, with no Puppeteer, no Chrome, and no Docker dependency. Each search costs $0.005.

Prerequisites

  • Python 3.8+
  • requests library
  • A Scavio API key from scavio.dev
  • Hermes agent framework installed

Walkthrough

Step 1: Create the browser-free search tool

Build a search function that returns structured results without any browser dependency.

Python
import os, requests, json

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

def web_search(query, num_results=5):
    """Browser-free web search for Hermes agents.
    Returns structured results in ~300ms vs 3-5s with headless Chrome.
    """
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json={'query': query, 'country_code': 'us'}, timeout=10)
    resp.raise_for_status()
    data = resp.json()
    results = []
    for r in data.get('organic_results', [])[:num_results]:
        results.append({
            'title': r.get('title', ''),
            'url': r.get('link', ''),
            'content': r.get('snippet', ''),
        })
    # Include People Also Ask for richer context
    paa = [q.get('question', '') for q in data.get('people_also_ask', [])[:3]]
    return {'results': results, 'related': paa, 'count': len(results)}

# Test - no browser needed
result = web_search('python async database tutorial 2026')
print(f'Results: {result["count"]} (no browser, no Chrome, no Docker)')
for r in result['results'][:3]:
    print(f'  {r["title"][:50]}')
    print(f'  {r["url"]}')
if result['related']:
    print(f'\nRelated questions:')
    for q in result['related']:
        print(f'  - {q}')
print(f'\nCost: $0.005/search')

Step 2: Register as a Hermes tool

Wrap the search function as a tool that Hermes can discover and invoke.

Python
HERMES_SEARCH_TOOL = {
    'type': 'function',
    'function': {
        'name': 'web_search',
        'description': 'Search the web for current information. Use when you need to find documentation, verify facts, check APIs, or answer questions requiring up-to-date data. No browser required.',
        'parameters': {
            'type': 'object',
            'properties': {
                'query': {
                    'type': 'string',
                    'description': 'The search query. Be specific for better results.'
                },
                'num_results': {
                    'type': 'integer',
                    'description': 'Number of results to return (1-10, default 5)',
                    'default': 5
                }
            },
            'required': ['query']
        }
    }
}

def handle_hermes_tool(name, args):
    """Handle tool calls from Hermes agent."""
    if name == 'web_search':
        query = args.get('query', '')
        num = args.get('num_results', 5)
        result = web_search(query, num)
        return json.dumps(result)
    return json.dumps({'error': f'Unknown tool: {name}'})

# Simulate Hermes calling the tool
print('Hermes tool registered: web_search')
print('Dependencies removed: puppeteer, chromium, selenium')
result = handle_hermes_tool('web_search', {'query': 'FastAPI deployment best practices'})
parsed = json.loads(result)
print(f'\nTool returned {parsed["count"]} results')

Step 3: Replace browser search in the Hermes config

Update the Hermes agent configuration to use API search instead of browser search.

Python
# BEFORE: Hermes with browser search (in hermes_config.py)
# search_tool = BrowserSearchTool()
# Requires: puppeteer, chromium, 500MB+ disk, 3-5s per search

# AFTER: Hermes with API search
# search_tool = web_search  # The function we built above
# Requires: requests library only, 300ms per search

def demo_hermes_agent():
    """Demonstrate Hermes agent using API search instead of browser."""
    print('Hermes Agent Starting...')
    print('  Search backend: Scavio API (no browser)')
    print('  Dependencies: requests only')
    print('  Avg latency: ~300ms')
    # Agent task: research a topic
    task = 'Find the best Python web framework for async APIs in 2026'
    print(f'\nTask: {task}')
    # Step 1: Search
    print('\n  Step 1: Searching...')
    result = web_search(task)
    print(f'  Found {result["count"]} results in ~300ms')
    # Step 2: Process results
    print('\n  Step 2: Processing top results...')
    for r in result['results'][:3]:
        print(f'    - {r["title"][:50]}')
    # Step 3: Follow-up search
    if result['related']:
        print(f'\n  Step 3: Follow-up search...')
        followup = web_search(result['related'][0])
        print(f'  Follow-up: {followup["count"]} more results')
    print(f'\n  Total cost: $0.010 (2 searches)')
    print(f'  Browser equivalent: 6-10 seconds, 500MB RAM')
    print(f'  API equivalent: 600ms, 0MB extra RAM')

demo_hermes_agent()

Python Example

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

def hermes_search(query):
    data = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json={'query': query, 'country_code': 'us'}, timeout=10).json()
    return [{'title': r['title'], 'url': r['link']} for r in data.get('organic_results', [])[:5]]

for r in hermes_search('python async database'):
    print(f'{r["title"][:50]}')
print('No browser. $0.005/search.')

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: 'python async database', country_code: 'us' })
}).then(r => r.json());
(data.organic_results || []).slice(0, 5).forEach(r => console.log(r.title));
console.log('No browser needed.');

Expected Output

JSON
Results: 5 (no browser, no Chrome, no Docker)
  FastAPI with Async SQLAlchemy - Complete Guide
  https://fastapi.tiangolo.com/advanced/async-sql/
  Python Async Database Tutorial 2026 - Real Python
  https://realpython.com/async-database-python/

Hermes Agent Starting...
  Search backend: Scavio API (no browser)
  Dependencies: requests only
  Avg latency: ~300ms

Task: Find the best Python web framework for async APIs in 2026

  Total cost: $0.010 (2 searches)
  Browser equivalent: 6-10 seconds, 500MB RAM
  API equivalent: 600ms, 0MB extra RAM

Related Tutorials

  • How to Fix Hermes SearXNG Blocking with API Fallback
  • How to Build Hermes Research Pipeline Using Search API
  • How to Configure Pi Agent with Multiple Search Backends

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. Hermes agent framework installed. A Scavio API key gives you 50 free credits on signup.

Yes. The free tier includes 50 credits on signup, 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.

Related Resources

Best Of

Best Search API for Hermes Agent in 2026

Read more
Best Of

Best Search Backends for Hermes Agent (May 2026)

Read more
Use Case

Hermes Agent Search API Reliability

Read more
Use Case

Hermes Agent Web Search

Read more
Glossary

Search API Provider Landscape (2026)

Read more
Glossary

Hermes Agent Search Integration

Read more

Start Building

Give Hermes agent web search without a browser. Replace headless Chrome with a single API call. $0.005/search.

Get Free API KeyRead the Docs
ScavioScavio

Real-time search API for AI agents. Search every platform, not just Google.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative

Tools

  • JSON Formatter
  • cURL to Code
  • Token Counter
  • All Tools

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy