v2.43.18

spider-rs/spiderv2.43.18Feb 2, 2026by j-mendez

AI Summary

Added comprehensive web search capabilities to RemoteMultimodalEngine with support for multiple search providers including Serper, Brave, Bing, and Tavily.

Key Highlights

  • Multiple search providers: Serper, Brave, Bing, Tavily
  • New methods: search(), search_and_extract(), research()
  • Custom API endpoints for self-hosted or alternative services
  • AI-optimized search with Tavily provider
  • Privacy-focused search with Brave provider

New Features

  • Web search integration for RemoteMultimodalEngine
  • Structured search results with search() method
  • Search + fetch + LLM extraction with search_and_extract()
  • Search + extract + synthesize with research() method
  • Custom API URL support for all providers

Full Release Notes

## Features

### Web Search Integration
Add web search capabilities to Spider's RemoteMultimodalEngine with support for multiple search providers.

#### Supported Providers
- **Serper** (`search_serper`) - Google SERP API
- **Brave** (`search_brave`) - Privacy-focused search
- **Bing** (`search_bing`) - Microsoft Bing Web Search
- **Tavily** (`search_tavily`) - AI-optimized search

#### New Methods
- `search()` - Search the web and return structured results
- `search_and_extract()` - Search + fetch pages + LLM extraction
- `research()` - Search + extract + synthesize findings into summary

## Setup

### Cargo.toml
```toml
[dependencies]
spider = { version = "2.43.18", features = ["search_serper"] }
```

### Configuration
```rust
use spider::configuration::{SearchConfig, SearchProviderType};
use spider::features::automation::RemoteMultimodalEngine;

let mut engine = RemoteMultimodalEngine::new(api_url, model, None);
engine.with_search_config(Some(
    SearchConfig::new(SearchProviderType::Serper, "your-api-key")
        // Optional: custom API endpoint
        .with_api_url("https://custom.api.com/search")
));

// Simple search
let results = engine.search("rust web crawler", None, None).await?;

// Search + extract
let data = engine.search_and_extract(
    "best rust frameworks",
    "Extract name and description",
    None,
    None,
).await?;

// Research with synthesis
use spider::features::automation::ResearchOptions;
let research = engine.research(
    "How do async runtimes work?",
    ResearchOptions::new().with_max_pages(5).with_synthesis(),
    None,
).await?;
println!("Summary: {}", research.summary.unwrap());
```

### Custom API Endpoints
All providers support custom API URLs for self-hosted or alternative endpoints:
```rust
SearchConfig::new(SearchProviderType::Brave, "api-key")
    .with_api_url("https://my-brave-proxy.example.com/search")
```

## Full Changelog
https://github.com/spider-rs/spider/compare/v2.43.17...v2.43.18