# Exa Search

> Semantic web search, similar page discovery, and content extraction via Exa AI API. Use when the user needs meaning-based search (not keyword matching), wants to find pages similar to a URL, or needs clean content extraction from web pages. Requires EXA_API_KEY environment variable.

- Skill: `joemccann/exa-search` (Agent Skill)
- Install (CLI): `npx skillmds@latest add joemccann/exa-search`
- Raw SKILL.md: https://api.skillmd.com/api/skills/joemccann/exa-search/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: joemccann (https://skillmd.com/u/joemccann)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/joemccann/exa-search

---


# Exa Search

Exa is a semantic search engine built for AI. Unlike keyword search, Exa finds content by meaning using neural embeddings. It also provides clean content extraction and similarity search.

## Prerequisites

Set the `EXA_API_KEY` environment variable. Get a key at https://dashboard.exa.ai/api-keys

## Available Tools

This package provides three tools:

### exa_search

Semantic web search. Finds pages by meaning, not keywords.

**Key parameters:**
- `query` — Natural language description of what you're looking for
- `type` — `auto` (default), `fast` (sub-350ms), `neural`, `deep` (multi-step reasoning)
- `category` — Filter: `company`, `research paper`, `news`, `tweet`, `personal site`, `financial report`
- `includeDomains` / `excludeDomains` — Domain filtering
- `startPublishedDate` / `endPublishedDate` — Date range (ISO 8601)
- `includeText` — Get full page text
- `includeSummary` — Get AI-generated summary
- `includeHighlights` — Get relevant excerpts (default: true)
- `numResults` — Result count (default: 10, max: 100)

### exa_find_similar

Find pages semantically similar to a given URL. Good for competitor analysis, related content, and "more like this" discovery.

**Key parameters:**
- `url` — The URL to find similar pages for
- `numResults`, `includeDomains`, `excludeDomains`, date filters — Same as search
- `excludeText` — Exclude results containing specific text

### exa_get_contents

Extract clean, parsed content from one or more URLs. More reliable than raw scraping.

**Key parameters:**
- `urls` — Array of URLs to extract
- `includeText` — Full page text (default: true)
- `includeSummary` — AI summary
- `includeHighlights` — Key excerpts
- `maxTextCharacters` — Max characters per page (default: 5000)

## When to Use Each Tool

| Goal | Tool | Tip |
|------|------|-----|
| Find content about a topic | `exa_search` | Use `category` to narrow results |
| Research with reasoning | `exa_search` with `type: "deep"` | Best for complex questions |
| Quick lookup | `exa_search` with `type: "fast"` | Sub-350ms responses |
| Find competitors/alternatives | `exa_find_similar` | Pass the company's URL |
| Get page content cleanly | `exa_get_contents` | Batch multiple URLs |
| Find related articles | `exa_find_similar` | Pass the article URL |

## Examples

### Search for research papers
```
exa_search("transformer architecture improvements 2024", {
  category: "research paper",
  numResults: 5,
  includeHighlights: true,
  includeSummary: true
})
```

### Find companies similar to a competitor
```
exa_find_similar("https://stripe.com", {
  numResults: 10,
  includeSummary: true,
  category: "company"
})
```

### Extract content from multiple pages
```
exa_get_contents({
  urls: ["https://example.com/article1", "https://example.com/article2"],
  includeText: true,
  maxTextCharacters: 3000
})
```

