SDK base URL
Keep the official Exa and Tavily SDKs and change one argument. Use the key keyless to try it without paying.
| SDK | Constructor |
|---|---|
| exa_py | Exa(api_key="YOUR_API_KEY", base_url="https://api.contextfetch.dev") |
| exa-js | new Exa("YOUR_API_KEY", "https://api.contextfetch.dev") |
| tavily-python | TavilyClient(api_key="YOUR_API_KEY", api_base_url="https://api.contextfetch.dev/tavily") |
Exa SDKs
# pip install exa-pyfrom exa_py import Exa exa = Exa(api_key="YOUR_API_KEY", base_url="https://api.contextfetch.dev") res = exa.search( "vector database benchmarks 2026", num_results=5, contents={"text": True, "highlights": True},)for r in res.results: print(r.url, r.highlights)// npm i exa-jsimport Exa from "exa-js"; const exa = new Exa("YOUR_API_KEY", "https://api.contextfetch.dev"); const res = await exa.search("vector database benchmarks 2026", { numResults: 5, contents: { text: true, highlights: true },});for (const r of res.results) console.log(r.url, r.highlights);Tavily SDKs
# pip install tavily-pythonfrom tavily import TavilyClient tavily = TavilyClient( api_key="YOUR_API_KEY", # or "keyless" for the free tier api_base_url="https://api.contextfetch.dev/tavily",) res = tavily.search("vector database benchmarks 2026", max_results=5, include_raw_content=True)for r in res["results"]: print(r["url"], r["score"])// npm i @tavily/coreimport { tavily } from "@tavily/core"; const tvly = tavily({ apiKey: "YOUR_API_KEY", apiBaseURL: "https://api.contextfetch.dev/tavily",}); const res = await tvly.search("vector database benchmarks 2026", { searchDepth: "basic", maxResults: 5 });for (const r of res.results) console.log(r.url, r.score);