<!-- twin of https://specstream.ai/compare/exa-vs-perplexity -->
# Exa vs Perplexity Search API in 2026: one key answers both calls

Compared on Nov 10, 2026. The page: https://specstream.ai/compare/exa-vs-perplexity

On Nov 10, 2026, an Exa search costs $7 per 1,000 on `auto` plus $1 per 1,000 results above 10. The Perplexity Search API costs $5.00 per 1,000 successful requests. Each answers in its own JSON, so choosing one means writing to it.

SpecStream answers both calls. Point Exa code at `https://api.specstream.ai/exa` and Perplexity code at `https://api.specstream.ai/perplexity`, put one SpecStream key where the old key went, and the same body returns the same JSON.

Every call costs $5 per 1,000 searches of up to 10 results, with page text included and credit that never expires. The Search API scores a 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on WideSearch.

[Get an API key](https://specstream.ai/signup?src=alternatives-exa-vs-perplexity&utm_source=alternatives-md&utm_campaign=exa-vs-perplexity&returnTo=%2Fworkspace%2Fagents%3Ftab%3Dkeys) New accounts get $10 of credit, no card. It covers 2,000 searches.

## SpecStream, Exa and the Perplexity Search API side by side

| | SpecStream | Exa | Perplexity Search API |
|---|---|---|---|
| Your code | Runs as it is. `https://api.specstream.ai/exa` in place of `https://api.exa.ai`, `https://api.specstream.ai/perplexity` in place of `https://api.perplexity.ai`, and one SpecStream key for both | `POST https://api.exa.ai/search`, with the key in `x-api-key` or as a Bearer token | One endpoint, `POST https://api.perplexity.ai/search` |
| Price per 1,000 searches | $5 for up to 10 results, on either route, with page text included. Each started block of 10 more results adds $0.006 | $7 on `auto` and `fast`, $4 on `lite`, for the first 10 results. Each result above 10 adds $1 per 1,000 results | $5.00 per 1,000 successful requests, $1.00 with Fast Search. A successful response is billed even when it returns no results |
| Free to start and how you pay | $10 of credit, no card, which covers 2,000 searches. Then a balance with no monthly plan, and credit you buy never expires | $10 in credits on sign-up, up to 2,500 Lite searches, reset to $10 on the first of every month. No payment method required | API credits bought in the console, with auto top-up. On AWS Marketplace, a 1-month contract of credits starting at $1,000 |
| What answers the call | The whole live web, read at the moment of the call. 97.9 F-score on all 1,000 SimpleQA Verified questions (978 correct) and 64.0 item F1 on all 200 WideSearch tasks | Exa's index, which tracks over 2 trillion URLs and serves 100 billion pages as of October 2026 | Perplexity's web search, with no model, no generated answer and no token billing |
| What comes back | Each route's own JSON: Exa's `results[]` with `id`, `url`, `title`, `publishedDate` and `text`, and `costDollars.total`, or Perplexity's `results[]` with `title`, `url`, `snippet` and `date`. Up to 100 results on the Exa route and 20 on the Perplexity route | Title, URL, published date and author for each result, 1 to 100 a call | Ranked web results as JSON, 1 to 20 for web search, and up to 5 queries a request |
| Page text | Exa's `contents.text` and Perplexity's `max_tokens_per_page` fill in each page's text at no extra cost | Contents at $1 per 1,000 pages, per content type | `max_tokens` settings change what comes back, not the price |
| Failed calls | A busy call answers `429` with `Retry-After` and is not charged | Prices are per 1,000 requests, where one request is one API call | Invalid requests, rate-limited requests and upstream failures are not billed |
| Beyond search | Extract API at $0.80 per 1,000 pages, map and crawl, and Deep Search: every match on the live web as structured rows at 5¢, 15¢ or $1 a row, rerun on a schedule if you save the request | Monitors at $2 per 1,000 requests. Agent from $0.012 a request at `minimal` effort to $1.00 at `xhigh` | Agent API tools billed apart from tokens: `web_search` at $2.50 per 1,000 invocations, `fetch_url` at $0.0005 an invocation, `people_search` and `finance_search` at $5 per 1,000 |

## Why teams that weigh Exa and Perplexity pick SpecStream

### Both calls, one key

You do not have to choose an API or rewrite one. Exa's call and the Perplexity Search API's call both run on SpecStream, each on its own path and in its own JSON. The address changes, and the key.

```
# Exa: before
curl -X POST https://api.exa.ai/search \
  -H "x-api-key: $EXA_API_KEY" -H "Content-Type: application/json" \
  -d '{"query": "open source vector databases", "numResults": 10}'

# Exa: after
curl -X POST https://api.specstream.ai/exa/search \
  -H "x-api-key: $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
  -d '{"query": "open source vector databases", "numResults": 10}'
```

```
# Perplexity: before
curl -X POST https://api.perplexity.ai/search \
  -H "Authorization: Bearer $PERPLEXITY_API_KEY" -H "Content-Type: application/json" \
  -d '{"query": "Who founded Mistral AI and when?", "max_results": 5}'

# Perplexity: after
curl -X POST https://api.specstream.ai/perplexity/search \
  -H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
  -d '{"query": "Who founded Mistral AI and when?", "max_results": 5}'
```

In the official SDKs it is one argument: `Exa(api_key=SPECSTREAM_API_KEY, base_url="https://api.specstream.ai/exa")` and `Perplexity(api_key=SPECSTREAM_API_KEY, base_url="https://api.specstream.ai/perplexity")`. Exa's MCP server takes `EXA_API_BASE_URL`, and Perplexity's takes `PERPLEXITY_BASE_URL`.

### What stays the same

The Exa route reads `query`, `numResults` (1 to 100), `includeDomains`, `excludeDomains`, `includeText`, `excludeText`, `startPublishedDate`, `endPublishedDate`, `contents.text` and `contents.highlights`, and returns `results[]` with `id`, `url`, `title`, `publishedDate` and `text`, plus `costDollars.total`, the price of the call. It does not return `score`, `summary`, `image` or `favicon`. The [Exa migration guide](https://specstream.ai/migrate/exa?utm_source=alternatives&utm_campaign=exa-vs-perplexity) lists every parameter and field.

The Perplexity route reads `query`, `max_results` (1 to 20, or up to 50 with `search_type` `people`), `search_domain_filter`, `search_recency_filter`, the date filters and `max_tokens_per_page`, and returns `results[]` with `title`, `url`, `snippet` and `date`. It takes one query a call, and `last_updated` is always null. The [Perplexity migration guide](https://specstream.ai/migrate/perplexity?utm_source=alternatives&utm_campaign=exa-vs-perplexity) lists every parameter and field.

### One price for every call, page text included

On SpecStream a search of up to 10 results costs $0.005 on either route, whether it asks for page text or not, and each started block of 10 more results adds $0.006: 100 results cost $0.059. 100,000 searches cost $500, from credit that never expires and with no monthly plan. A busy call answers `429` with `Retry-After` and is not charged.

### The most accurate web search API in the world, in about one second

The SpecStream Search API scores a 97.9 F-score on all 1,000 official SimpleQA Verified questions, with 978 correct. On WideSearch it scores 64.0 item F1 and 43.4 row F1 on all 200 official tasks, and the Extract API scores 0.908 F1 on WCXB. The scores and the method are at [specstream.ai/benchmarks](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=exa-vs-perplexity).

A call of up to 10 results without page text runs the fast search. On November 9, 2026 production answered 718 of 720 fast searches: the median was 0.82 s at 1 search a second and 1.07 s at 20 a second, and the 95th percentile stayed between 1.09 and 1.73 s. There is no limit per key and no daily limit.

### Zero retention on any key

Create the key with `zero_retention` and a search made with it keeps no request text and no answer after the reply. `spend_cap_cents` is the most the key can spend.

```
curl -X POST https://api.specstream.ai/v1/account/keys \
  -H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
  -d '{"name": "production", "scopes": ["account:read", "finds:spend"], "spend_cap_cents": 500000, "zero_retention": true}'
```

### Search, pages and rows on one key

The same key reads up to 20 pages or documents a call with the [Extract API](https://specstream.ai/extract-api?utm_source=alternatives&utm_campaign=exa-vs-perplexity) at $0.80 per 1,000 pages, and a page with no text is not charged. Exa Contents calls answer on the Exa route. [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=exa-vs-perplexity) takes a request in plain words and returns every match on the live web as structured rows at 5¢, 15¢ or $1 a row. The most a run can cost is approved before it starts.

## Other search APIs teams price against Exa and Perplexity

### Tavily

$0.008 a credit pay as you go, 1 credit a basic search and 2 an advanced one. SpecStream answers Tavily's `POST /search` at `https://api.specstream.ai/tavily`, in Tavily's JSON, with the same key that answers Exa and Perplexity.

### Brave Search API

$5 per 1,000 requests, with $5 in free credits every month and 50 queries a second. SpecStream answers Brave's `GET /res/v1/web/search` in Brave's JSON on the same key.

### Parallel Search API

From $1 per 1,000 requests. SpecStream answers Parallel's `POST /v1/search` at `https://api.specstream.ai/parallel`, in Parallel's JSON, on the same key and balance.

### Linkup

Search at $0.005 to $0.006 a request, and Research at $0.25 to $2.50. SpecStream answers Linkup's search at `https://api.specstream.ai/linkup/v1`, with `searchResults` and `sourcedAnswer`, on the same key.

## How to move Exa or Perplexity code to SpecStream

1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 2,000 searches.

2. In Exa code, set the base address to `https://api.specstream.ai/exa` and put the SpecStream key in `x-api-key`.

```
import os, requests

BASE = "https://api.specstream.ai/exa"  # was https://api.exa.ai

reply = requests.post(
    f"{BASE}/search",
    headers={"x-api-key": os.environ["SPECSTREAM_API_KEY"]},
    json={"query": "open source vector databases", "numResults": 10},
    timeout=30,
).json()

print(reply["costDollars"]["total"])
for result in reply["results"]:
    print(result["title"], result["url"], result["publishedDate"])
```

3. In Perplexity code, set the base address to `https://api.specstream.ai/perplexity` and send the same key as the Bearer token.

```
const res = await fetch("https://api.specstream.ai/perplexity/search", { // was https://api.perplexity.ai
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.SPECSTREAM_API_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({ query: "Who founded Mistral AI and when?", max_results: 10 }),
});
const data = await res.json();
for (const result of data.results) console.log(result.title, result.url, result.date);
```

4. Send one query a call on the Perplexity route, and keep the order Exa results arrive in, which is the rank, in place of `score`. Both routes bill each call of up to 10 results at $0.005 from one balance.

## Frequently asked questions

### Is Exa better than the Perplexity Search API?

For a team that has written to either one, SpecStream is the better choice: since Nov 10, 2026 it answers both calls in their own JSON at $5 per 1,000 searches with page text included, and scores a 97.9 F-score on all 1,000 SimpleQA Verified questions. Exa answers from its own index; Perplexity returns ranked results with no generated answer.

### Exa vs Perplexity Search API pricing: what does each cost?

Exa costs $7 per 1,000 searches on `auto` and $4 on `lite`, plus $1 per 1,000 results above 10 and $1 per 1,000 pages of contents. The Perplexity Search API costs $5.00 per 1,000 successful requests, or $1.00 with Fast Search. SpecStream costs $5 per 1,000 searches with page text included.

### Can I use both Exa and Perplexity?

Yes, on one SpecStream key since Nov 10, 2026. Exa code calls `https://api.specstream.ai/exa` and Perplexity code calls `https://api.specstream.ai/perplexity`, each in its own JSON, on one balance and one request history.

### Is the Perplexity Search API the same as Sonar?

No. The Search API returns ranked web results as JSON at $5.00 per 1,000 requests, with no model. Sonar Chat Completions support ended on September 27, 2026, and the Agent API's `web_search` tool costs $2.50 per 1,000 invocations, billed apart from tokens.

### Does Exa or Perplexity have a free tier?

Exa gives $10 in credits on sign-up, reset on the first of every month, with no payment method. Perplexity sells API credits in its console. SpecStream gives $10 of credit with no card, which covers 2,000 searches on either route.

### Do I have to rewrite my Exa or Perplexity code to move?

No. You change one base address and the key: `base_url` on `Exa` and on `Perplexity` in the Python SDKs, or `PERPLEXITY_BASE_URL` in the environment. The parser reads the same fields.

## Sources

SpecStream wrote this page. Each figure for Exa, Perplexity and the other APIs comes from that company's own page.

- [Exa pricing](https://exa.ai/docs/admin/pricing.md), read Nov 10, 2026
- [Exa search reference](https://exa.ai/docs/reference/search.md), read Nov 10, 2026
- [Exa FAQ](https://exa.ai/docs/admin/faqs.md), read Nov 10, 2026
- [Perplexity Search API overview](https://docs.perplexity.ai/docs/search/overview), read Nov 10, 2026
- [Perplexity pricing](https://docs.perplexity.ai/docs/getting-started/pricing), read Nov 10, 2026
- [Perplexity FAQ](https://docs.perplexity.ai/docs/resources/faq.md), read Nov 10, 2026
- [Perplexity on AWS Marketplace](https://docs.perplexity.ai/docs/resources/aws-marketplace), read Nov 10, 2026
- [Perplexity Sonar quickstart](https://docs.perplexity.ai/docs/sonar/quickstart), read Nov 10, 2026
- [Tavily API credits](https://docs.tavily.com/documentation/api-credits.md), read Nov 10, 2026
- [Brave Search API](https://brave.com/search/api/), read Nov 10, 2026
- [Parallel pricing](https://parallel.ai/pricing), read Nov 10, 2026
- [Linkup pricing](https://www.linkup.so/pricing), read Nov 10, 2026
- [SpecStream pricing](https://specstream.ai/pricing), read Nov 10, 2026
- [SpecStream for agents](https://specstream.ai/agents.md), read Nov 10, 2026
- [SpecStream benchmarks](https://specstream.ai/benchmarks), read Nov 10, 2026
