Skip to main content

Overview

Switch from Exa to Linkup’s Search, Fetch, and Research endpoints. Most of the migration is a mechanical rename. The part that is not mechanical is the query itself.
Exa and Linkup both take a query and return web results, but they expect the query to be written differently. Porting a call across without rewriting the query text does not give you a representative result.

The core difference

Both APIs put intelligence into the request, in different places. Anything you expressed to Exa as a parameter needs to be expressed to Linkup as words in q. A bare noun phrase gives the Linkup agent very little to plan a retrieval around, so rewriting the query is usually the difference between a mediocre result and a good one.
Migrating many call sites? Give a coding agent a representative sample of your existing Exa calls plus linkup-for-agents, our context pack of knowledge files, workflow recipes, and skills, and have it produce the translated versions. Install the skills into your project:
See also Linkup for agents.

Quick start

Get your API key

Get your API key

Create a Linkup account for free to get your API key.

Install the SDK

The three settings that matter most

Everything else is optional. These three account for nearly all of the difference in output quality.

1. depth: choose the retrieval strategy

Exa’s type is primarily a speed setting. Linkup’s depth selects how the search is carried out, so map it deliberately rather than as a direct rename. "flash" and "fast" pass the query as-is to the index, with no LLM. "standard" interprets the query and can run parallel sub-searches. "deep" adds the ability to open a page it discovered, read it, and decide what to do next. If step two depends on what step one found, or a discovered page has to be read, use "deep".

2. q: write an instruction, not a description

An Exa query describes a page. A Linkup query gives an instruction. Five moves that reliably improve results with "standard" and "deep":
  1. Start with a verb. Find, search, scrape, extract, compare.
  2. Name the fields you want back. Linkup returns evidence rather than whole pages, so specify which evidence you need.
  3. Break breadth into explicit facets. “Run separate searches for X, Y, and Z” is how you get parallel retrieval out of "standard". This replaces Exa’s additionalQueries.
  4. Repeat your constraints in every facet. Without it, individual facets drift off-target.
  5. Ask for source URLs. They make results verifiable at no extra cost.
See Search best practices for more.

3. outputType: match it to what your code does next

Exa returns pages and leaves the parsing to you. Linkup asks you to choose the response shape up front.

Migrate your search calls

Replace your API calls

Exa
Linkup

Parameter mapping

Response format differences

Exa response structure
Linkup response structure ("searchResults")
Linkup response structure ("sourcedAnswer")
Linkup response structure ("structured")
With includeSources set to true, the response becomes { "data": { ... }, "sources": [ ... ] }. See the structured output guide.

Worked example

A typical Exa company search, translated. Exa
Linkup
What changed:
  • category "company" became words in the query.
  • highlights became outputType "searchResults".
  • The noun phrase became an instruction with named fields.
  • One vague search became three parallel facets, with “US” and “Series A” repeated in all three so no facet drifts off-target.
To write the results straight into a database, switch outputType to "structured" and pass a structuredOutputSchema describing one company per array item.

Migrate your contents calls

Exa Contents returns page content for known URLs. Linkup Fetch returns clean markdown for a single public URL (HTML or PDF), with optional JavaScript rendering and optional structured extraction.
Fetch accepts one url per request. If you currently pass an array of URLs to Exa Contents, call Linkup Fetch once per URL (or in parallel). For batch workloads, submit your Fetch calls through Tasks: up to 100 per submission, with the same parameters and pricing as direct /fetch calls.

Replace your API calls

Exa
Linkup

Parameter mapping

Response format differences

Exa response structure
Linkup response structure
markdown is always returned. images is empty unless extractImages is true. data is present only when schema is set.

Example: structured extraction from a known URL

Replaces Exa Contents with a summary schema.
cURL

Migrate your answer calls

Exa Answer maps to Linkup Search with outputType "sourcedAnswer". For a schema-shaped answer, use outputType "structured" with structuredOutputSchema in place of Exa’s outputSchema. Fold systemPrompt and userLocation into q. Exa
Linkup
Exa returns answer plus citations. Linkup returns answer plus sources, each with name, url, and snippet.

Migrate your agent calls

For long-running research that Exa Agent handles (deep research, list building, enrichment), use Linkup Research. It returns a sourced answer or structured output (outputType "sourcedAnswer" or "structured"), with mode and reasoningDepth to pin the type of investigation and its thoroughness. For list building and enrichment over many rows, also see Tasks.

Need help?

Your Linkup account starts with $20 of free credit when you sign up with a professional email address. You can monitor usage and add more credit in the Billing section.