Rated 9.9/10 by Grok (xAI)

The Search API Built
for AI Agents

Full page content in every response. 24M+ pages, 30K characters per result. The only search API where AI systems get everything in one call โ€” no scraping, no second requests.

24M+
Pages Indexed
30K
Chars Per Result
26+
API Endpoints
9.9
Grok Rating

Everything AI Agents Need

One API for search, content extraction, maps, real-time data, and more. No other API combines this much functionality.

📄

Full-Content Search

30,000 characters of real page content per result. Not snippets โ€” full articles, docs, and pages that AI can reason over.

🤖

Agent Mode

Structured output with key_facts, entities, stats, and summaries. Built for RAG pipelines and autonomous agents.

🌐

Extract Any Page

JS-rendered content extraction with triple fallback. Give us a URL, get clean markdown back. Even from React/Vue sites.

🗺

Maps & Geospatial

Geocode, reverse geocode, directions, places, elevation โ€” all built in. No separate maps API needed.

Real-Time Data

Weather, crypto, currency, news, trending topics, time, IP lookup โ€” live data endpoints for agent context.

📈

Self-Growing Index

Every search and extraction auto-indexes new content. The more you use it, the smarter it gets. A true flywheel.

🔌

MCP Server โ€” Live on npm

Drop Vybsly's 11 tools into Claude Desktop, Cursor, Windsurf, or any MCP client with one config entry. npm install -g vybsly-mcp โ€” see setup.

30+ Endpoints

One unified API. One key. Search, extract, maps, real-time data, media โ€” all in one subscription.

GET /v1/search Full-content search with 30K chars per result
ParamDescription
q requiredSearch query
limitMax results (default 10, max 50)
formatfull, compact, or markdown
guaranteedOnly return results with verified 500+ char content
modeSet to "agent" for structured AI output
// Example request
GET /v1/search?q=machine+learning&limit=5&mode=agent

// Response includes full page content
{
  "results": [{
    "title": "Introduction to Machine Learning",
    "content": "... 30,000 chars of full page content ...",
    "url": "https://example.com/ml-guide",
    "relevance_score": 0.95
  }],
  "_meta": { "index_size": 24219426, "self_growing": true }
}
GET /v1/extract JS-rendered content extraction from any URL
ParamDescription
url requiredTarget URL to extract
formatfull, markdown, or text
modeSet to "agent" for key_facts, entities, summary
GET /v1/extract?url=https://docs.anthropic.com&mode=agent
GET /v1/geocode Convert address to coordinates
ParamDescription
q requiredAddress or place name
limitMax results (default 5)
GET /v1/geocode?q=Times+Square+New+York
GET /v1/directions Turn-by-turn driving directions
ParamDescription
fromStarting address
toDestination address
GET /v1/directions?from=NYC&to=LA
GET /v1/news Real-time news search from trusted sources
GET /v1/news?q=artificial+intelligence&hours=24&limit=20
GET /v1/images Image search with context
GET /v1/images?q=neural+network+diagram&limit=20
GET /v1/videos Video search with embeddable URLs
GET /v1/videos?q=python+tutorial&limit=10
POST /v1/search/bulk Batch search โ€” up to 50 queries in one request
POST /v1/search/bulk
{ "queries": ["query 1", "query 2", ...], "limit": 5 }
GET /v1/weather ยท /v1/crypto ยท /v1/currency ยท /v1/time Real-time utilities
GET /v1/weather?q=Nashville
GET /v1/crypto?coin=bitcoin
GET /v1/currency?from=USD&to=EUR&amount=100
GET /v1/time?tz=America/New_York
GET /v1/places ยท /v1/elevation ยท /v1/reverse-geocode Geospatial tools
GET /v1/places?q=coffee&lat=40.758&lng=-73.985
GET /v1/elevation?lat=27.9881&lng=86.925
GET /v1/reverse-geocode?lat=40.758&lng=-73.985
GET /v1/odds Live sports betting odds โ€” NBA, UFC, NFL, MLB, NHL
ParamDescription
sportSport key: nba, ufc, nfl, mlb, nhl, soccer, ncaaf, ncaab
teamSearch by team/fighter name (works across all sports)
qAlias for team โ€” search any matchup
// Get all NBA odds
GET /v1/odds?sport=nba

// Search by fighter name
GET /v1/odds?team=chimaev

// List available sports
GET /v1/odds

// Response
{
  "sport": "NBA",
  "game_count": 21,
  "games": [{
    "away_team": "Chicago",
    "home_team": "Washington",
    "game_time": "7:00pm EDT",
    "best_odds": { "away_spread": "-5.5", "away_ml": "-235" },
    "bookmakers": [
      { "name": "FanDuel", "away_ml": "-235", "home_ml": "+210" },
      { "name": "DraftKings", "away_ml": "-230", "home_ml": "+200" }
    ]
  }],
  "_meta": { "source": "live scrape", "update_interval": "10 minutes" }
}
GET /v1/ships Live ship tracking โ€” 41K+ vessels with AIS data
ParamDescription
qSearch by ship name or MMSI
lat, lngCenter point for area search
radiusSearch radius in km (default 50)
limitMax results (default 100)
// Ships near New York
GET /v1/ships?lat=40.7&lng=-74.0&radius=30&limit=10

// Search by name
GET /v1/ships?q=henry+hudson
GET /v1/cameras 354 live webcams worldwide with YouTube streams
ParamDescription
qSearch by camera name or city
lat, lngCenter point for area search
radiusSearch radius in km (default 100)
limitMax results (default 20)
// Cameras in Tokyo
GET /v1/cameras?q=tokyo

// Cameras near a location
GET /v1/cameras?lat=48.858&lng=2.294&radius=50

Start Building in Minutes

No complex setup. No OAuth. Just an API key and a GET request.

Python
JavaScript
cURL
import requests

# Search with full content
response = requests.get("https://vybsly.ai/api/v1/search", params={
    "q": "how to build a RAG pipeline",
    "limit": 5,
    "mode": "agent",
    "guaranteed": "true"
})

for result in response.json()["results"]:
    print(result["title"])
    print(result["content"][:500])  # Full 30K chars available

Web + Encyclopedia in One Call

Two indexes, one API. 24.2M full-content web pages + 7.5M structured encyclopedia articles. Query both in parallel, get separated results tagged by source.

# Inline: add encyclopedia results to any search
curl "https://vybsly.ai/api/v1/search?q=einstein&include=encyclopedia"

# Dedicated federated endpoint (cleaner for agents)
curl "https://vybsly.ai/api/v1/knowledge?q=quantum+physics&limit=10"

Response Shape

{
  "total_results": 10,
  "layers": {
    "vybsly": { "count": 7, "total_index": 24219426 },
    "vybpedia": { "count": 3, "total_found": 3279 }
  },
  "results": {
    "vybsly": [
      { "source": "vybsly", "url": "...", "content": "5000 chars...",
        "domain_score": 90, "page_type": "article" }
    ],
    "vybpedia": [
      { "source": "vybpedia", "title": "Quantum physics",
        "summary": "...", "categories": ["Quantum physics"],
        "page_type": "encyclopedia" }
    ]
  }
}

Why two indexes: Web pages are messy and need full-text + ranking. Encyclopedia articles are structured and need category/topic lookup. Keeping them separate preserves the strengths of each โ€” federate at query time, don't merge at storage.

Filter With Confidence

Loose filters bias results. Strict filters ENFORCE them. Tight domain allowlists + transparent validation flags so your agent knows exactly what it got back.

# Loose: prefer research domains, but allow edge results
curl "https://vybsly.ai/api/v1/search?q=mRNA+vaccines&research=true"

# Strict: ONLY peer-reviewed research domains (arxiv, nature, pubmed, NEJM, Lancet, ...)
curl "https://vybsly.ai/api/v1/search?q=mRNA+vaccines&research=true&strict=true"

# Strict + fallback: when too few strict results, auto-fill with relaxed (clearly tagged)
curl "https://vybsly.ai/api/v1/search?q=obscure+topic&research=true&strict=true&strict_fallback=relaxed"

Available Filters

Response Validation Fields

{
  "_meta": {
    "index_size": 23576356,
    "index_size_formatted": "24.22M pages",
    "version": "1.2",
    "strict_mode": true,
    "strict_filters_applied": ["research"],
    "strict_insufficient": false,
    "strict_fallback_used": false,
    "strict_pass_count": 7
  },
  "results": [{
    "url": "https://www.nature.com/...",
    "domain": "nature.com",
    "domain_score": 90,
    "strict_pass": true,
    "confidence": 0.95
  }]
}

Build Real Agents in Minutes

Three composable endpoints โ€” /search, /extract, /ask โ€” chain into full RAG and autonomous agent loops.

Pattern 1: Search โ†’ Extract โ†’ Synthesize (RAG Loop)

# Python โ€” full RAG pipeline in 8 lines
import requests

q = "latest CRISPR breakthroughs in 2026"
hits = requests.get("https://vybsly.ai/api/v1/search",
    params={"q": q, "research": "true", "strict": "true", "limit": 5}).json()["results"]

# Each result already has 30K chars of content โ€” no extra extract needed
context = "\n\n".join([f"## {r['title']}\n{r['content'][:5000]}" for r in hits])

# Hand to your local LLM with the context
prompt = f"Answer using only these sources:\n{context}\n\nQuestion: {q}"

Pattern 2: One-Shot Sourced Answer (Perplexity-style)

curl -X POST "https://vybsly.ai/api/v1/ask" \
  -H "Content-Type: application/json" \
  -d '{"question": "How does mRNA vaccine work?", "max_sources": 5}'

# Returns: { answer: "...", sources: [{ title, url }, ...] }

Pattern 3: Agent Tool Discovery

# Pull OpenAI/LangChain compatible tool list
curl "https://vybsly.ai/api/v1/tools"

# Returns 15+ tools ready for function-calling agents:
# search, extract, stocks, odds, weather, geocode, directions, ...

One-Line MCP Setup for Claude Desktop, Cursor & Windsurf

vybsly-mcp is live on npm. Drop Vybsly's 11 tools into any MCP-compatible client with a single config entry. Zero code required.

npm package Source on GitHub
# Install globally
npm install -g vybsly-mcp

# Or run without installing (recommended for Claude Desktop)
npx vybsly-mcp

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)

{
  "mcpServers": {
    "vybsly": {
      "command": "npx",
      "args": ["-y", "vybsly-mcp"],
      "env": { "VYBSLY_API_KEY": "your_api_key_here" }
    }
  }
}

Cursor / Windsurf

Same JSON โ€” drop it into .cursor/mcp.json or the equivalent MCP config.

11 Tools Instantly Available

vybsly_search โ€” full-content web search with strict filters
vybsly_knowledge โ€” federated web + encyclopedia
vybsly_extract โ€” JS-rendered URL extraction
vybsly_ask โ€” sourced AI answer (Perplexity-style)
vybsly_stocks โ€” live stock prices
vybsly_crypto โ€” live crypto data
vybsly_weather โ€” forecast + current conditions
vybsly_news โ€” recent news with dates
vybsly_odds โ€” live sportsbook lines
vybsly_geocode โ€” address โ†’ coordinates
vybsly_directions โ€” turn-by-turn

Package: npmjs.com/package/vybsly-mcp ยท Size: 5.5 KB ยท Node 18+ ยท MIT License

LangChain Integration

Drop Vybsly into any LangChain agent in 12 lines. Works with all LangChain agent types โ€” ReAct, OpenAI Functions, Tool Calling, etc.

from langchain.tools import Tool
import requests

def vybsly_search(query: str) -> str:
    r = requests.get("https://vybsly.ai/api/v1/search",
        params={"q": query, "limit": 5, "mode": "agent"}).json()
    return "\n\n".join([f"[{r['title']}]({r['url']})\n{r['content'][:3000]}"
                        for r in r["results"]])

vybsly_tool = Tool(
    name="VybslySearch",
    func=vybsly_search,
    description="Full-content web search across 24.22M pages. Returns up to 30K chars per result."
)

# Add to any LangChain agent
from langchain.agents import initialize_agent, AgentType
agent = initialize_agent([vybsly_tool], llm, agent=AgentType.OPENAI_FUNCTIONS)
result = agent.run("What are the latest CRISPR breakthroughs?")

Hybrid RAG โ€” Web + Encyclopedia in One Tool (/v1/knowledge)

from langchain.tools import Tool
import requests

def vybsly_knowledge(query: str) -> str:
    """Federated search: 24M web pages + 7.5M encyclopedia articles in one call.

    Returns both layers so the LLM sees messy web context AND structured
    encyclopedia articles (with categories, summaries). Better grounding
    than web-only search for research, definitions, and factual queries.
    """
    r = requests.get("https://vybsly.ai/api/v1/knowledge",
        params={"q": query, "limit": 10}).json()

    parts = []
    # Encyclopedia first (structured, authoritative)
    for r in r.get("results", {}).get("vybpedia", []):
        parts.append(f"[ENCYCLOPEDIA] {r['title']}\n"
                     f"Categories: {', '.join(r.get('categories', []))}\n"
                     f"{r.get('summary', '')}\n")
    # Then web (long-form, messy but full-content)
    for r in r.get("results", {}).get("vybsly", []):
        parts.append(f"[WEB] {r['title']} ({r.get('domain','?')})\n"
                     f"{r.get('content', '')[:2000]}\n")
    return "\n---\n".join(parts)

knowledge_tool = Tool(
    name="VybslyKnowledge",
    func=vybsly_knowledge,
    description="Hybrid web + encyclopedia search. Use for factual/research queries needing both structured authority (encyclopedia) and breadth (web). 24M web + 7.5M encyclopedia articles."
)

# Use as a standalone tool OR alongside VybslySearch / VybslyResearch
agent = initialize_agent([knowledge_tool], llm, agent=AgentType.OPENAI_FUNCTIONS)
result = agent.run("What is Einstein's general relativity and who verified it?")

Research-Only Variant (strict mode)

def vybsly_research(query: str) -> str:
    """Search ONLY peer-reviewed research (arxiv, nature, pubmed, NEJM, Lancet)."""
    r = requests.get("https://vybsly.ai/api/v1/search",
        params={"q": query, "research": "true", "strict": "true",
                "strict_fallback": "relaxed", "limit": 5}).json()
    return "\n\n".join([f"[{r['domain']}] {r['title']}\n{r['content'][:3000]}"
                        for r in r["results"]])

research_tool = Tool(name="VybslyResearch", func=vybsly_research,
    description="Peer-reviewed research search. Use for medical, scientific, or technical queries needing authoritative sources.")

LlamaIndex Integration

Use Vybsly as a FunctionTool in any LlamaIndex agent โ€” ReActAgent, OpenAIAgent, FunctionAgent.

from llama_index.core.tools import FunctionTool
from llama_index.core.agent import ReActAgent
import requests

def vybsly_search(query: str, research_only: bool = False) -> dict:
    """Full-content web search. Set research_only=True for peer-reviewed sources."""
    params = {"q": query, "limit": 5, "mode": "agent"}
    if research_only:
        params.update({"research": "true", "strict": "true"})
    return requests.get("https://vybsly.ai/api/v1/search", params=params).json()

vybsly_tool = FunctionTool.from_defaults(fn=vybsly_search)
agent = ReActAgent.from_tools([vybsly_tool], llm=llm, verbose=True)
response = agent.chat("Compare the latest LLM benchmarks")

Build Voice Agents with Vybsly + Vapi

Feed clean markdown search results directly into voice agent prompts. Vybsly's full-content API is purpose-built for real-time voice: sub-500ms responses, no HTML noise, 30K chars of grounded context per result. Works with Vapi, Bland AI, Retell, LiveKit, and any voice agent framework.

# Vapi Server Tool โ€” give your voice agent live web knowledge
# 1. Create a server endpoint that Vapi calls when the agent needs info

from fastapi import FastAPI, Request
import requests

app = FastAPI()

@app.post("/vapi-tool")
async def vapi_search_tool(req: Request):
    body = await req.json()
    query = body["message"]["toolCalls"][0]["function"]["arguments"]["query"]

    # Search Vybsly โ€” get clean markdown, not HTML noise
    results = requests.get("https://vybsly.ai/api/v1/search", params={
        "q": query, "limit": 3, "guaranteed": "true"
    }, headers={"X-API-Key": "YOUR_KEY"}).json()

    # Format top result as spoken context for the voice agent
    top = results["results"][0]
    context = f"{top['title']}: {top['content'][:2000]}"

    return {"results": [{
        "toolCallId": body["message"]["toolCalls"][0]["id"],
        "result": context
    }]}
Why Vybsly for Voice Agents
  • Clean markdown โ€” no HTML tags or nav chrome that confuses the LLM mid-conversation
  • 30K chars per result โ€” enough context for accurate answers without multiple API calls
  • Sub-500ms โ€” fast enough for real-time voice conversations (doesn't stall the call)
  • 555K+ canonical docs indexed โ€” technical support voice agents get official docs, not blog posts
  • Domain-scored results โ€” domain_score: 95 for official docs reduces hallucination risk

Trust Signals for AI Agents

Every search result includes transparency fields so your agent can make programmatic trust decisions โ€” filter by authority, skip low-quality sources, prefer canonical documentation.

# Trust-aware agent search โ€” only use high-authority sources

results = vybsly.search("kubernetes pod security", limit=10)

# Filter: only trust canonical docs (domain_score >= 80)
trusted = [r for r in results if r.get("domain_score", 0) >= 80]

# Filter: only official developer docs
official = [r for r in results if r.get("is_agent_docs") == True]

# Skip junk: no tag pages, no archive pages
clean = [r for r in results if r.get("page_type") not in ("tag", "archive")]

# Strict mode: use domain allowlists for maximum reliability
strict = vybsly.search("CRISPR safety", research=True, strict=True)
# Check _meta.strict_pass on each result to verify it passed
Field Type Agent Use
domain_score0โ€“9595 = canonical docs, 90 = Wikipedia, 80 = .gov/.edu, 50 = default. Filter ≥80 for high-authority only.
is_agent_docsbooleanTrue = official framework documentation (555K+ sections from 340+ sources). Prefer for "how to" queries.
page_typestringarticle, tag, category, archive. Skip tag/archive pages โ€” they have no content.
languageISO 639-1Detected language (en, de, fr). Filter when user locale is known.
_meta.strict_passbooleanTrue when result passed strict domain-allowlist filtering. Only present with strict=true.

Faster Than the Competition

Real benchmarks. 20 queries. No cherry-picking. Tested April 2026.

Average Response Time (lower is better)
Vybsly
441ms
Tavily
559ms
Exa
1,090ms
Max Clean Content Per Result (higher is better)
Vybsly
30,000 chars โ€” clean extracted text
Exa
20,000 chars โ€” extracted text
Tavily
~5,000 chars (snippets by default)
raw HTML costs extra
Feature Vybsly Tavily Exa
Avg Speed (20 queries) 441ms โ€” Fastest 559ms 1,090ms
Full Content Per Result Up to 30,000 chars (clean text) ~5K default (raw HTML costs 2x credits) Up to 20,000 chars
AI-Generated Answer Included Included Not Available
Self-Growing Index Yes โ€” Every search grows the index No No
Own Search Index 24M+ pages Uses Bing/Google Neural index
Agent Mode Yes โ€” key_facts, entities, synthesis Basic No
Content Extraction API Yes โ€” /v1/extract with triple fallback Yes No
Maps / Geo / Weather Yes โ€” 8 geo + weather endpoints No No
Image + Video Search Yes โ€” 22M images, 960K videos No No
Free Tier 1,000 queries/mo 1,000 credits/mo 1,000 searches/mo
Starter Price $9/mo (10K queries) $0.008/credit $0.007/search

Benchmark: 20 diverse queries, 5 results each, full content enabled, nocache. Tested April 2026 from US East.

Simple, Developer-Friendly Pricing

Start free. Scale when you're ready. No hidden fees.

Free
$0/mo
Perfect for testing and prototyping
  • 1,000 queries/month
  • 50 queries/day
  • All 26+ endpoints
  • Full content (30K chars)
  • Strict mode + /v1/knowledge
Get Free Key
Starter
$9/mo
For indie devs โ€” 8ร— cheaper than Tavily
  • 10,000 queries/month
  • 500 queries/day
  • Everything in Free
  • Bulk search (50 queries/call)
  • Email support
Start with Starter
Business
$99/mo
For teams and high-volume apps
  • 250,000 queries/month
  • 10,000 queries/day
  • Everything in Pro
  • SLA guarantee
  • Priority support
Upgrade to Business

Need 1M+/mo? Enterprise plans start at $299/mo. Contact us.
Self-service upgrades via Stripe. Cancel anytime โ€” no questions asked.

Ready to Build with
Full-Content Search?

Join developers building AI agents, RAG pipelines, and search experiences with the most complete API available.