You’ve used the Search API. You send a query, you get back a list of web results. Titles, URLs, snippets. It works great for quick lookups, building search UIs, and feeding results into RAG pipelines.
But some questions need more than a list of links. Questions like “what are the latest breakthroughs in quantum computing” or “how do mRNA vaccines work” need someone (or something) to actually read through dozens of sources, cross-reference them, and write up a coherent answer with citations.
That’s what the Research API does. It’s like having a research assistant that reads the web and writes you a report with footnotes.
By the end of this guide you’ll be able to call the Research API in Python or TypeScript and get back comprehensive, cited answers to questions of varying complexity. You’ll also see how to use beta request fields with direct HTTP calls.
Here’s the difference between Search and Research for the same query:
Search API returns raw results:
Research API returns a synthesized, grounded answer with inline citations:
Same question, fundamentally different output. Search gives you building blocks. Research gives you the finished product.
The Research API doesn’t just run one search. It’s powered by the You.com search index, purpose-built for speed, accuracy, and relevance. Instead of relying on third-party search providers, the Research API searches and reads pages directly from this index. That means lower latency, fresher results, and better extraction quality than you’d get stitching together external services yourself.
On top of that index sits an agentic system that does the actual research. It doesn’t follow a fixed pipeline. Instead it works in an iterative loop:
The agent adapts its research strategy as it goes. A question about quantum computing might lead it down a different path than one about financial regulations. Higher effort levels give the agent more time to iterate, which means more searches, more pages read, and a more thorough answer.
Because the search index, page extraction, and synthesis are all built and optimized together, the Research API can deliver results that would be difficult to replicate by chaining separate tools.
Use Research when:
Use Search when:
You need two things:
That’s it. No other dependencies needed.
Research API fields such as source_control and output_schema may not be available in SDKs yet. Use cURL or fetch for those fields until SDK support ships.
We’ve built a complete sample app you can fork and deploy:
The repo includes:
research.py is a standalone Python CLI scriptapp/api/research/route.ts is the Next.js API route using the TypeScript SDKapp/page.tsx is the React frontend with effort level picker and markdown renderingTo run it yourself:
The research_effort parameter controls how deep the Research API digs. Higher effort means more searches, more sources read, and more thorough analysis.
lite for anything you’d normally just google but want a synthesized answer instead of clicking through linksstandard when you’re not sure. It’s the sweet spot for most use casesdeep when accuracy and thoroughness matter more than speedexhaustive when you need to be really sure. Compliance checks, investment research, technical deep divesUse source_control to constrain which web sources the research agent searches and visits. You can allow specific domains, block specific domains, filter by recency, or focus results by country.
Supported source_control fields:
Use output_schema to return a JSON object in output.content instead of a Markdown string. This is useful when you need predictable fields for downstream systems.
output_schema works with standard, deep, and exhaustive. It does not work with lite, which returns 422 when output_schema is present.
output_schema supports a reliability-focused JSON Schema subset:
anyOf.properties.additionalProperties: false.required.{"type": "null"} is not supported outside anyOf. Use a nullable union such as ["string", "null"] instead.Supported patterns include nested objects, arrays, enums, nested anyOf, and non-recursive $defs and $ref. Unsupported keywords include allOf, format, pattern, min/max constraints, uniqueItems, and conditional schema keywords. See the Research API overview for the full rules and limits.
The API returns a structured response. By default, output.content is Markdown and output.content_type is text:
output.content is a Markdown string with numbered inline citations ([1], [2], etc.)output.sources is an array of sources, each with URL, title, and relevant snippetsWhen you provide output_schema, output.content is a JSON object and output.content_type is object. Sources remain in output.sources.
Now that you can call the Research API, here are some directions to explore:
pip install youdotcom)npm install @youdotcom-oss/sdk)