Exa review
Exa Python SDK is the official Python package for Exa, the web search API for AI, covering search, page contents, answers and agents.
TL;DR
Exa Python SDK (exa-py) is the official Python client for the Exa web search API for AI. It is for Python developers who want web search, page contents and answers in their code or LLM agents. It includes ready-made web_search tools for OpenAI and Anthropic tool loops, plus an Agent API for structured research tasks.
- 237GitHub stars
- +2new stars, week of Oct 25
- ~1.2Mdownloads a week, +2% vs 4-week avg
- #34in RAG, data and memory this week
Exa at a glance
- Category
- RAG, data and memory
- Maintained by
- Exa Labs (organization, @exa-labs on GitHub)
- License
- MIT
- Language
- Python, Jinja, Makefile
- Repository
- github.com/exa-labs/exa-py
- Website
- pypi.org/project/exa-py
- npm package
- exa-js 2.26.0
- Latest release
- v2.26.0 on GitHub, Oct 19, 2026
- First published
- Jul 4, 2023
What Exa does
- Exa searches the web with filters such as number of results, published date and included domains, and can return highlights from each result.
- Exa can return search output as plain text or as structured JSON that follows an output_schema you supply.
- Exa fetches the contents of pages you already have URLs for, as text or highlights, through get_contents.
- Exa answers questions directly with exa.answer and can stream answers and search output as chunks.
- Exa provides web_search and get_contents tools for OpenAI Chat Completions, the OpenAI Responses API and Anthropic, plus helpers that handle tool calls.
- Exa's Agent API runs research queries that return structured output, with effort levels including ultra and an optional cost budget.
- Exa Agent Monitors, in beta, keep a table of entities and fields fresh on a set cadence and expose a change feed.
How it works
Exa SDK is a Python client for the hosted Exa API. You create an Exa or AsyncExa client with an API key and call methods such as search, get_contents, answer and agent.runs.create. For LLM apps, you pass exa.openai or exa.anthropic tool definitions to the model and let the SDK handle the resulting tool calls. A JavaScript SDK, exa-js, also exists for Node.js and the browser.
How to install and start using Exa
With pip
pip install exa-pyRequirements
- Python 3.9 or newer
- An Exa API key
First steps
- Install the package with pip install exa-py on Python 3.9 or newer.
- Run exa.search with type="auto" and contents={"highlights": True} to get web results with highlights.
- Call exa.answer with a question to get a direct answer.
Who Exa is for
- Python developers adding live web search to LLM agents built on OpenAI or Anthropic models.
- RAG pipelines that need page contents or highlights from web results as model context.
- Research workflows that need structured JSON output, such as lists of companies or people.
- Teams tracking changes about a set of companies over time with Agent Monitors.
Limitations to know
- Exa SDK depends on the hosted Exa API and needs an API key. It does not run search locally.
- Exa structured search output with type object is limited to a nesting depth of 2 and 10 total properties.
- Exa Agent Monitors are in beta and require a beta header identifier.
- Exa's sync client cannot cancel a blocking read from another thread. Only the timeout bounds network inactivity.
Is Exa growing? Usage data
In the week of Oct 25–31, 2026, Exa ranked #337 on the Devtoolwatch Board and #34 in RAG, data and memory, with a momentum score of 24 out of 100. Its main package had about 1.2M downloads that week, +2% against its own 4-week average.
Show the weekly numbers
| Week of | New stars |
|---|---|
| Aug 9, 2026 | 2 |
| Aug 16, 2026 | 2 |
| Aug 23, 2026 | 3 |
| Aug 30, 2026 | 1 |
| Sep 6, 2026 | 0 |
| Sep 13, 2026 | 1 |
| Sep 20, 2026 | 0 |
| Sep 27, 2026 | 0 |
| Oct 4, 2026 | 0 |
| Oct 11, 2026 | 0 |
| Oct 18, 2026 | 1 |
| Oct 25, 2026 | 2 |
On Hacker News
- PyPI Was Subpoenaed, 1153 points and 597 comments (May 24, 2023)
- Black, the uncompromising Python code formatter, is stable, 500 points and 288 comments (Jan 29, 2022)
- Pypi.org is running a survey on the state of Python packaging, 234 points and 188 comments (Sep 7, 2022)
- Tariff: A Python package that imposes tariffs on Python imports, 221 points and 29 comments (Apr 14, 2025)
- PyPI now supports digital attestations, 218 points and 186 comments (Nov 14, 2024)
The Board ranks tools by four signals each week: new stars, new stars for the repo's size, added downloads and download growth beyond the market. How the ranking works.
Exa alternatives
Other RAG, data and memory tools on the Board in the week of Oct 25–31, 2026, by momentum:
| Rank | Tool | Stars | Downloads/wk |
|---|---|---|---|
| #1 | XERJXERJ is a local-first search engine and MCP server for AI agents, packaged as one Rust binary with an Elasticsearch-compatible API. | 17.9k | – |
| #2 | MemvidMemvid is a single-file memory layer for AI agents that packages data, embeddings, search indexes, and metadata into one portable .mv2 file. | 17.3k | – |
| #3 | LEANNLEANN is a Python vector database and RAG library that recomputes embeddings on demand to keep indexes small on personal devices. | 13.7k | – |
| #4 | GraphifyGraphify is an AI coding assistant skill that turns a codebase, with its docs, PDFs, images and videos, into a queryable knowledge graph. | 140k | 480.7k |
| #5 | MarkItDownMarkItDown is a lightweight Python utility from Microsoft that converts PDFs, Office documents, images, audio and other files to… | 193.2k | 4.7M |
| #6 | FirecrawlFirecrawl is an API and open source project to search, scrape, crawl, and interact with web pages, returning LLM-ready markdown or JSON… | 197.4k | 2.9M |
Recent Exa releases
Exa FAQ
Is Exa free and open source?
Yes. Exa's source code is on GitHub (exa-labs/exa-py) under the MIT license, so you can use it for free.
How do I install Exa?
Run pip install exa-py. The install section above has the other options from the project's README.
Is Exa still maintained?
Yes. The exa-labs/exa-py repository was last updated on Oct 19, 2026, and the latest release, v2.26.0 on GitHub, came out on Oct 19, 2026.
How popular is Exa?
Exa has 237 GitHub stars as of Nov 1, 2026. It gained 2 new stars in the week of Oct 25–31, 2026, against a 12-week average of 1 a week. Its main package had about 1.2M downloads that week, +2% against its own 4-week average. That made it #34 among RAG, data and memory tools on the Devtoolwatch Board.
Exa vs Firecrawl: how do they compare?
Exa and Firecrawl are both tracked by Devtoolwatch as RAG, data and memory tools. Exa has 237 GitHub stars and Firecrawl has 197.4k. In the week of Oct 25–31, 2026, Exa's main package had 1.2M downloads and Firecrawl's had 2.9M. Firecrawl is an API and open source project to search, scrape, crawl, and interact with web pages, returning LLM-ready markdown or JSON for AI agents. Firecrawl review.
What are the best alternatives to Exa?
Other RAG, data and memory tools on the Devtoolwatch Board in the week of Oct 25–31, 2026, by momentum: XERJ (#1), Memvid (#2), LEANN (#3), Graphify (#4), MarkItDown (#5). The alternatives table above has their numbers.
How do I use Exa as a tool with OpenAI or Anthropic?
Exa provides exa.openai.web_search() and exa.anthropic.web_search() tool definitions to pass in the model's tools list. You then call exa.openai.handle_tool_calls on the model message. With no arguments, web_search uses Exa's recommended settings: type="auto" and highlights.
Can Exa run alongside Anthropic's built-in web search tool?
Exa can run alongside it. Anthropic requires unique tool names, so you pass a custom name, such as exa.anthropic.web_search(name="exa_web_search"), next to the built-in web_search_20250305 tool.
Does Exa support async Python?
Exa supports async code through the AsyncExa client, which you await like the sync client. You can cancel an in-flight request by cancelling the asyncio task awaiting it.
How do timeouts work in Exa SDK?
Exa clients default to a 600-second network inactivity timeout, not a wall-clock deadline. You can set it client-wide or per call. A request that exceeds it raises ExaTimeoutError.
What deep search modes does Exa offer?
Exa offers three deep search variants: deep-lite, deep and deep-reasoning. These variants also support additional_queries.
Sources
- exa-labs/exa-py on GitHub
- Exa README
- exa-js on npm
- Exa website
- Release v2.26.0 (Oct 19, 2026)
- Release v2.25.0 (Oct 1, 2026)
- Release v2.24.0 (Oct 1, 2026)
- Hacker News: PyPI Was Subpoenaed
- Hacker News: Black, the uncompromising Python code formatter, is stable
- Hacker News: Pypi.org is running a survey on the state of Python packaging
- Devtoolwatch Board, the week of Oct 25–31, 2026
Exa README badge
Maintainers can show the tool's weekly Board rank in their README:
[](https://index.devtoolwatch.com/tools/exa/)How this page is made: Devtoolwatch writes each review from the project's README, releases, package metadata and website, with an AI model, then checks every claim against the source it cites and drops what the sources don't support. The numbers come from Devtoolwatch's daily GitHub snapshots, GitHub's stargazer history, and the npm and PyPI download APIs. Spotted an error? Email [email protected].