Search Plus: Reliable Web Search for Claude Code
Stop seeing "search failed" messages. Get reliable web search and URL extraction that actually works when Claude Code's built-in search fails.
From 20% to 95% success rate - transforms Claude Code's search reliability with intelligent fallback strategies
Quick Start (2 minutes)
# 1. Install from VibeKit Marketplace
/plugin marketplace add shrwnsan/vibekit-claude-plugins
/plugin install search-plus@vibekit
# 2. Test it works — just ask Claude to research something
"Research Claude Code plugin documentation"
# 3. Extract from blocked URLs
"Extract content from https://docs.anthropic.com/en/docs/claude-code/plugins"
Why You Need This
The Problem: Claude Code's search frequently fails with:
- ❌ "403 Forbidden" - Access denied
- ❌ "422 Unprocessable Entity" - Schema validation errors
- ❌ "429 Too Many Requests" - Rate limiting
- ❌ "Did 0 searches..." - Silent failures
The Solution: Search Plus handles all these errors automatically and finds the content you need.
What It Does
🔍 Enhanced Web Search
Searches the web when Claude Code's built-in search fails:
"Research latest React best practices 2025"
📄 URL Content Extraction
Extracts content from blocked or problematic URLs:
"Extract content from https://github.com/facebook/react/blob/main/README.md"
⚡ Intelligent Fallback
Automatically tries multiple services until one works:
- Self-hosted (optional): your SearXNG instance, tried first when
SEARCH_PLUS_SEARXNG_URLis set - Primary: TinyFish Search (if configured)
- Fallback 1: Tavily API (if configured)
- Fallback 2: Brave Search API (if configured)
- Fallback 3: Exa AI Search (if configured)
- Fallback 4: Jina.ai Search API (if configured)
- Fallback 5: Firecrawl Search (keyless — works with no API key)
- URL extraction: Tavily (if configured) → Jina Reader → TinyFish (if configured) → Firecrawl → Defuddle → Wayback Machine
- GitHub Integration: Native GitHub CLI access for repository content (when enabled)
- Result: You get answers instead of errors
Performance Results
Based on 35 comprehensive test scenarios:
| Metric | Claude Code (Default) | With Search Plus | Improvement |
|---|---|---|---|
| Overall Success Rate | 0-20% | 95%+ | +400% |
| 422 Schema Errors | 100% failure | 100% success | Complete fix |
| 429 Rate Limiting | 100% failure | 90% success | Major recovery |
| 403 Forbidden | 100% failure | 80% success | High recovery |
| Silent Failures | 100% occurrence | 0% | Eliminated |
Tested on real-world problematic domains including documentation sites, financial platforms, and social media.
Re-measured on 3.4.0 (Oct 2026, eval-027): 33/35 scenarios with honest post-3.4 success criteria — 100% of legitimate scenarios passed, 0 silent failures; both misses are by-design failure controls (a reserved domain and a clean 404) that failed with structured, actionable errors.
When to Use Search Plus
Use instead of Claude's default search when:
- 🚫 You see "403 Forbidden" errors
- 🚫 You get "Did 0 searches..." responses
- 🚫 Research fails on documentation sites
- 🚫 Financial or news content blocks access
- 🚫 You need reliable content extraction
Works great for:
- 📚 Documentation research
- 🔍 Technical blog posts
- 📰 News and current events
- 💼 Professional and academic research
- 🛠️ Development best practices
Setup Options
Option 1: Quick Start (No API Keys)
Works out of the box: web search uses Firecrawl's keyless tier (rate-limited per IP), and URL extraction uses Jina Reader, Firecrawl, Defuddle, and the Wayback Machine. For heavier use, add a free key:
- Tavily: Sign up at tavily.com → 1,000 free searches/month (recurring)
- Jina.ai: Sign up at jina.ai → 10M free tokens (~1,000 searches)
Option 2: Enhanced Performance (Optional)
Add API keys for maximum reliability and speed:
# Add these to your environment (optional)
export SEARCH_PLUS_TAVILY_API_KEY=your_tavily_key_here
export SEARCH_PLUS_TINYFISH_API_KEY=your_tinyfish_key_here
export SEARCH_PLUS_BRAVE_API_KEY=your_brave_key_here
export SEARCH_PLUS_EXA_API_KEY=your_exa_key_here
export SEARCH_PLUS_JINA_API_KEY=your_jina_key_here
export SEARCH_PLUS_FIRECRAWL_API_KEY=your_firecrawl_key_here
Free tiers available:
- Tavily: 1,000 searches/month free (recurring)
- TinyFish: free key (no card); search and up to 1,000 fetched URLs/day at no cost, with browser rendering
- Brave Search: $5 free credits/month (~1,000 queries, recurring)
- Exa AI: 1,000 searches/month free (recurring)
- Jina.ai Search: 10M free tokens (~1,000 searches, one-time)
- Jina.ai Public Reader: 20 RPM URL extraction only (no key)
- Firecrawl: keyless tier (no signup), or 1,000 credits/month with a free key
- Defuddle: URL → markdown extraction (no key)
See docs/CONFIGURATION.md for complete setup details.
Sandbox users: Node.js
fetch()does not use the proxy env vars that Claude Code's sandbox injects, so all search providers fail with DNS errors. Fix: add"node"toexcludedCommandsin your Claude Code settings (~/.claude/settings.json). This lets Node scripts bypass the sandbox network restrictions. On Node 22.22+ or 24+, you can instead setNODE_USE_ENV_PROXY=1to route fetch through the proxy without disabling the sandbox. One exception: the direct markdown fetch intentionally ignores proxy settings — its SSRF guard validates DNS answers at connect time, which requires owning the connection — so in a proxied sandbox the direct step always fails and the chain falls through to the other extraction providers. Also addapi.tavily.com,api.search.brave.com,api.exa.ai,s.jina.ai,r.jina.ai,api.jina.ai,api.firecrawl.dev,api.search.tinyfish.ai,api.fetch.tinyfish.ai,defuddle.md, andarchive.orgtoallowedDomains. See docs/evals/eval-026 for the full investigation.
Option 3: GitHub CLI Integration (Advanced)
Enable native GitHub repository access for maximum reliability with GitHub URLs:
# Install GitHub CLI
brew install gh # macOS
gh auth login # Authenticate
# Enable GitHub integration
export SEARCH_PLUS_GITHUB_ENABLED=true
See docs/CONFIGURATION.md#github-cli-integration for complete setup details.
Usage Examples
Basic Web Search
# When Claude's search fails
"Research Python async await best practices"
"Find React hooks documentation"
URL Content Extraction
# Extract from documentation sites
"Extract content from https://nextjs.org/docs/api-reference/create-next-app"
# Handle blocked or problematic URLs
"Get the content from https://reddit.com/r/programming/comments/example"
Complex Research
# Multi-topic research
"Research microservices vs monolith pros cons 2025"
# Site-specific searches
"Search site:github.com awesome list machine learning"
Two Ways to Use Search Plus
1. Automatic (Skill)
Claude automatically uses Search Plus when it detects you need web research or encounters search errors. Just ask:
"Research the latest Claude Code plugin architecture"
2. Agent Mode (Advanced)
For complex multi-step research:
"Use the search-plus agent to investigate this topic"
FAQ
Q: Is this safe to use? A: Yes. Uses industry-standard APIs. No data stored beyond what's necessary.
Q: Will this make my searches slower? A: Actually faster on average (2.3 seconds) compared to failed searches that require retries.
Q: Do I need to pay for this? A: No. Works with free services out-of-the-box. API keys are optional for enhanced performance.
Q: Can this get me blocked from websites? A: Requests go through extraction services (Tavily, Jina, Firecrawl, Defuddle), not directly to the site, and the plugin does not spoof browser headers.
Tests
Run the offline regression suite (no API keys needed) with Node's built-in test runner:
cd plugins/search-plus/skills/meta-search/scripts
node --test tests/*.test.mjs
Note the glob is required: node --test tests/ (directory form) fails with MODULE_NOT_FOUND on Node 22. Most tests are fully offline — fetch, DNS, and the direct-fetch transport are stubbed. Three end-to-end chain tests in tests/content-quality.test.mjs need DNS and skip themselves (reported as skipped, not failed) when it is unavailable, e.g. inside a network-restricted sandbox; run them on a machine with DNS for full coverage.
CI runs the same suite on Node 22 and 24, plus claude plugin validate ., for every pull request and push to main that touches plugins/search-plus/ (workflow).
Advanced Information
- Configuration: docs/CONFIGURATION.md - API keys and advanced setup
- Technical Details: docs/ARCHITECTURE.md - Implementation and design
- Performance Data: docs/PERFORMANCE.md - Comprehensive test results
- Contributing: See the main project/marketplace's contributing guidelines
License
Apache License 2.0 - See main project LICENSE for details.
Stop fighting with search failures. Install Search Plus and get reliable web research that just works.
Standards
Ships with dual manifests: a Claude Code plugin (.claude-plugin/plugin.json)
and an Agent Plugins v1.0.0 package (plugin.json).
The skills conform to the Agent Skills specification;
CI checks the two manifests stay in sync. Commands, agents, and hooks are
Claude Code-specific and not part of the portable package.