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.
One API for search, content extraction, maps, real-time data, and more. No other API combines this much functionality.
30,000 characters of real page content per result. Not snippets โ full articles, docs, and pages that AI can reason over.
Structured output with key_facts, entities, stats, and summaries. Built for RAG pipelines and autonomous agents.
JS-rendered content extraction with triple fallback. Give us a URL, get clean markdown back. Even from React/Vue sites.
Geocode, reverse geocode, directions, places, elevation โ all built in. No separate maps API needed.
Weather, crypto, currency, news, trending topics, time, IP lookup โ live data endpoints for agent context.
Every search and extraction auto-indexes new content. The more you use it, the smarter it gets. A true flywheel.
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.
One unified API. One key. Search, extract, maps, real-time data, media โ all in one subscription.
| Param | Description |
|---|---|
| q required | Search query |
| limit | Max results (default 10, max 50) |
| format | full, compact, or markdown |
| guaranteed | Only return results with verified 500+ char content |
| mode | Set 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 } }
| Param | Description |
|---|---|
| url required | Target URL to extract |
| format | full, markdown, or text |
| mode | Set to "agent" for key_facts, entities, summary |
GET /v1/extract?url=https://docs.anthropic.com&mode=agent
| Param | Description |
|---|---|
| q required | Address or place name |
| limit | Max results (default 5) |
GET /v1/geocode?q=Times+Square+New+York
| Param | Description |
|---|---|
| from | Starting address |
| to | Destination address |
GET /v1/directions?from=NYC&to=LA
GET /v1/news?q=artificial+intelligence&hours=24&limit=20
GET /v1/images?q=neural+network+diagram&limit=20
GET /v1/videos?q=python+tutorial&limit=10
POST /v1/search/bulk { "queries": ["query 1", "query 2", ...], "limit": 5 }
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?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
| Param | Description |
|---|---|
| sport | Sport key: nba, ufc, nfl, mlb, nhl, soccer, ncaaf, ncaab |
| team | Search by team/fighter name (works across all sports) |
| q | Alias 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" } }
| Param | Description |
|---|---|
| q | Search by ship name or MMSI |
| lat, lng | Center point for area search |
| radius | Search radius in km (default 50) |
| limit | Max 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
| Param | Description |
|---|---|
| q | Search by camera name or city |
| lat, lng | Center point for area search |
| radius | Search radius in km (default 100) |
| limit | Max 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
No complex setup. No OAuth. Just an API key and a GET request.
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
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"
{
"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.
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"
?research=true โ research papers (arxiv, nature, pubmed, science, IEEE, Lancet, NEJM)?news=true โ news outlets (Reuters, AP, BBC, CNN, NYT, WSJ, Bloomberg, NPR)?educational=true โ tutorials/docs (MDN, MIT OCW, Khan, docs.python.org, learn.microsoft)?source=domain.com โ restrict to a single domain?lang=en โ language filter (en, es, fr, de, ja, zh, ko, ar)?page_type=article โ article, homepage, reference, tag, category, video?has_content=true โ only results with substantive page content&strict=true โ enforce filters as hard allowlists&strict_fallback=relaxed โ auto-retry without strict when too few results{
"_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
}]
}
Three composable endpoints โ /search, /extract, /ask โ chain into full RAG and autonomous agent loops.
# 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}"
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 }, ...] }
# 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, ...
vybsly-mcp is live on npm. Drop Vybsly's 11 tools into any MCP-compatible client with a single config entry. Zero code required.
# Install globally npm install -g vybsly-mcp # Or run without installing (recommended for Claude Desktop) npx vybsly-mcp
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" }
}
}
}
Same JSON โ drop it into .cursor/mcp.json or the equivalent MCP config.
vybsly_search โ full-content web search with strict filtersvybsly_knowledge โ federated web + encyclopediavybsly_extract โ JS-rendered URL extractionvybsly_ask โ sourced AI answer (Perplexity-style)vybsly_stocks โ live stock pricesvybsly_crypto โ live crypto datavybsly_weather โ forecast + current conditionsvybsly_news โ recent news with datesvybsly_odds โ live sportsbook linesvybsly_geocode โ address โ coordinatesvybsly_directions โ turn-by-turnPackage: npmjs.com/package/vybsly-mcp ยท Size: 5.5 KB ยท Node 18+ ยท MIT License
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?")
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?")
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.")
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")
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 }]}
domain_score: 95 for official docs reduces hallucination riskEvery 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_score | 0โ95 | 95 = canonical docs, 90 = Wikipedia, 80 = .gov/.edu, 50 = default. Filter ≥80 for high-authority only. |
is_agent_docs | boolean | True = official framework documentation (555K+ sections from 340+ sources). Prefer for "how to" queries. |
page_type | string | article, tag, category, archive. Skip tag/archive pages โ they have no content. |
language | ISO 639-1 | Detected language (en, de, fr). Filter when user locale is known. |
_meta.strict_pass | boolean | True when result passed strict domain-allowlist filtering. Only present with strict=true. |
Real benchmarks. 20 queries. No cherry-picking. Tested April 2026.
| 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.
Start free. Scale when you're ready. No hidden fees.
Need 1M+/mo? Enterprise plans start at $299/mo. Contact us.
Self-service upgrades via Stripe. Cancel anytime โ no questions asked.
Join developers building AI agents, RAG pipelines, and search experiences with the most complete API available.