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

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

Exa charges $4 to $7 per 1,000 searches by search type and Parallel $1 to $5 by mode, each with its own request and its own JSON. SpecStream answers both calls, on their own paths, with one key.

Change `https://api.exa.ai` to `https://api.specstream.ai/exa` and `https://api.parallel.ai` to `https://api.specstream.ai/parallel`. Your Exa and Parallel code keeps its body and its parser, and both send the same SpecStream key in `x-api-key`.

A search of up to 10 results costs $0.005 on either path, in every mode. SpecStream scores 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks, on the [benchmarks](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=exa-vs-parallel) page.

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

## SpecStream, Exa and Parallel side by side

| | SpecStream | Exa | Parallel |
|---|---|---|---|
| The call your code sends | Both, on one key. `POST https://api.specstream.ai/exa/search` in Exa's JSON and `POST https://api.specstream.ai/parallel/v1/search` in Parallel's JSON, with the SpecStream key in `x-api-key` | `POST https://api.exa.ai/search` with `query`, `numResults` and a search `type`, and an Exa key in `x-api-key` or as a Bearer token | `POST https://api.parallel.ai/v1/search` with `search_queries` and a `mode`, and a Parallel key in `x-api-key` |
| Price per 1,000 searches | $5 for up to 10 results, on both paths and in every Exa `type` and every Parallel `mode`, page text included | $4 on `lite` and $7 on `auto` and `fast`, for up to 10 results | $1 on `turbo` and `fast`, $5 on `basic` and `advanced`, the default, with 10 results included |
| More results in one call | Up to 100 on either path. Each started block of 10 more adds $0.006, so 100 results cost $0.059 | `numResults` from 1 to 100. Every result above 10 adds $1 per 1,000 results | `max_results` defaults to 10, and public modes cap results at 20. Additional results cost $1 per 1,000 |
| The text of each page | In the same search at no extra cost: Exa's `contents.text` and Parallel's excerpts. The Extract API reads any page at $0.80 per 1,000 pages | Contents costs $1 per 1,000 pages per content type | Extract costs $1 per 1,000 URLs. Excerpt length does not change the search price |
| Busy and failed calls | No limit per key and no daily limit. A busy call answers `429` in the API's own error form with `Retry-After`, and charges nothing | One API call to an endpoint is one request, priced per 1,000 requests | 600 searches a minute. `429` when rate limited, `402` for insufficient credit |
| Free to start | $10 of credit, no card, which covers 2,000 searches. Credit you buy never expires | $10 in credits on sign up, reset to $10 on the first of every month, no payment method | $5 free monthly with a card on file, plus up to $80 at signup |
| Every match as structured rows | Deep Search: a request in plain words returns every match on the live web as rows that meet each condition you wrote, at 5¢, 15¢ or $1 a row, plus 5¢ for an email and 15¢ for a phone. The most a run can cost is quoted before it starts | Agent: $0.012 a request at `minimal` effort up to $1.00 at `xhigh` | FindAll: $0.25 a run plus $0.03 a match on `base`, up to $10.00 a run plus $1.00 a match on `pro` |
| Reruns | Save a request and it reruns hourly to yearly, with each row labeled changed, unchanged or no longer matching | Monitors run scheduled searches at $2 per 1,000 requests | Monitor reruns a query at $3 per 1,000 checks on `lite` and $10 on `base` |
| MCP and SDKs | MCP server, REST API, Python and TypeScript SDKs and a CLI. Exa's `exa-py` and Parallel's `parallel-web` SDK reach SpecStream through their base address setting | Hosted MCP server at `https://mcp.exa.ai/mcp`, and the `exa-py` and `exa-js` SDKs | Hosted MCP server, Python and TypeScript SDKs and a CLI |

## Why teams choosing between Exa and Parallel use SpecStream

### Keep both calls and change two lines

Your Exa call and your Parallel call keep their bodies, their headers and their parsers. Each one changes its address, and both carry the same key.

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

# Parallel: was https://api.parallel.ai/v1/search
curl -X POST https://api.specstream.ai/parallel/v1/search \
  -H "x-api-key: $SPECSTREAM_KEY" -H "Content-Type: application/json" \
  -d '{"search_queries": ["open source vector databases"], "mode": "fast"}'
```

A team that has not chosen yet writes to either format and moves nothing later. The parameter by parameter tables are in the [Exa migration guide](https://specstream.ai/migrate/exa?utm_source=alternatives&utm_campaign=exa-vs-parallel) and the [Parallel migration guide](https://specstream.ai/migrate/parallel?utm_source=alternatives&utm_campaign=exa-vs-parallel).

### What each path reads and returns

On `/exa/search`, `query`, `numResults` from 1 to 100, `includeDomains`, `excludeDomains`, `includeText`, `excludeText`, `startPublishedDate`, `endPublishedDate` and `contents.text` work as on Exa. The reply has `requestId`, `results[]` with `id`, `url`, `title`, `publishedDate` and `text` when asked, `searchTime` and `costDollars.total`. `score`, `summary`, `image` and `favicon` are not returned; the results arrive in rank order.

On `/parallel/v1/search`, `search_queries`, `mode`, `advanced_settings.max_results` up to 100, `source_policy` with `include_domains`, `exclude_domains` and `after_date`, the excerpt settings and `session_id` work as on Parallel. The reply has `search_id`, `session_id` and `results[]` with `url`, `title`, `publish_date` and `excerpts`. `warnings` and `usage` are not returned.

### $5 per 1,000 searches in every mode, from credit that does not expire

Exa prices a search by its `type` and charges Contents per page and per content type. Parallel prices by `mode`, adds $1 per 1,000 extra results and stops public modes at 20 results. On SpecStream a search of up to 10 results is $0.005 on either path, with page text in the same call, and 100 results are $0.059. There is no monthly plan, a top-up never expires, and a call stopped by a `429` charges nothing.

### The most accurate web search API in the world

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-parallel).

### About one second a search, with no limit per key

Both paths run the fast search unless the call asks for page text or results past the first ten. On November 9, 2026 production took 1 to 20 fast searches a second and answered 718 of 720: 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. A busy call gets a `429` with `Retry-After` and is not charged.

### Zero retention on any key

Set `zero_retention` when you create a key, or later. A search made with that key keeps no request text and no answer after the reply. The charge keeps the account, the key, the request ID, the price and the time.

```
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, crawls and rows on the same key

The same key reads up to 20 pages a call with the [Extract API](https://specstream.ai/extract-api?utm_source=alternatives&utm_campaign=exa-vs-parallel) at $0.80 per 1,000 pages, maps and crawls whole sites, and runs [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=exa-vs-parallel), which returns every match on the live web as structured rows at 5¢, 15¢ or $1 a row. 10,000 rows with 5 facts each cost $500, and the most a run can cost is approved before it starts.

## Other search APIs for AI agents

### Tavily

Search for agents sold by credit: a basic search is 1 credit and an advanced search 2, at $0.008 a credit pay as you go, with 1,000 free credits every month. SpecStream answers Tavily's own `POST /search` at `https://api.specstream.ai/tavily`, in Tavily's JSON, at $0.005 a search.

### Brave Search API

Results from Brave's own index at $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` at `https://api.specstream.ai` with the key in `X-Subscription-Token`, at $5 per 1,000 searches.

### Serper

Google results as prepaid credits, from $1.00 per 1,000 on the 50k pack, and credits valid for 6 months. SpecStream answers Serper's `POST /search` at `https://api.specstream.ai/serper`, and a SpecStream top-up never expires.

### Firecrawl

Scrape, crawl and search by monthly credits: Hobby is $19 a month for 5,000 credits, and search costs 2 credits per 10 results. SpecStream answers Firecrawl v2 search and scrape at `https://api.specstream.ai/firecrawl`, at $0.005 a search and $0.0008 a page.

## How to run your Exa and Parallel calls on 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. Point each client at its SpecStream path and send the SpecStream key in `x-api-key`. In Python:

```
import requests

HEADERS = {"x-api-key": SPECSTREAM_KEY}

# Exa's call, was https://api.exa.ai/search
exa = requests.post(
    "https://api.specstream.ai/exa/search",
    headers=HEADERS,
    json={"query": "open source vector databases", "numResults": 10},
    timeout=30,
).json()
for result in exa["results"]:
    print(result["title"], result["url"], result["publishedDate"])

# Parallel's call, was https://api.parallel.ai/v1/search
parallel = requests.post(
    "https://api.specstream.ai/parallel/v1/search",
    headers=HEADERS,
    json={"search_queries": ["open source vector databases"], "mode": "fast"},
    timeout=30,
).json()
for result in parallel["results"]:
    print(result["title"], result["url"])
```

3. In JavaScript:

```
const headers = { "x-api-key": process.env.SPECSTREAM_KEY, "Content-Type": "application/json" };

// Exa's call, was https://api.exa.ai/search
const exa = await fetch("https://api.specstream.ai/exa/search", {
  method: "POST",
  headers,
  body: JSON.stringify({ query: "open source vector databases", numResults: 10 }),
}).then((r) => r.json());

// Parallel's call, was https://api.parallel.ai/v1/search
const parallel = await fetch("https://api.specstream.ai/parallel/v1/search", {
  method: "POST",
  headers,
  body: JSON.stringify({ search_queries: ["open source vector databases"], mode: "fast" }),
}).then((r) => r.json());

for (const result of [...exa.results, ...parallel.results]) console.log(result.title, result.url);
```

4. Leave the rest. Each call is billed as one search at $0.005 for up to 10 results. On a `429`, wait the seconds in `Retry-After` and send the call again; nothing was charged.

When your agent needs every match in place of a results page, write the request in plain words. SpecStream reads it back as the conditions every row must meet and the facts to bring back, quotes the most it can cost, and delivers the rows after you approve.

## Frequently asked questions

### Is Exa better than Parallel?

For an agent that needs both styles of search, SpecStream answers Exa's `POST /search` and Parallel's `POST /v1/search` with one key at $0.005 a search. It scores 97.9 F-score on all 1,000 SimpleQA Verified questions, and a team keeps whichever format it already wrote.

### Exa vs Parallel pricing: what does each cost?

Exa costs $4 per 1,000 searches on `lite` and $7 on `auto`, plus $1 per 1,000 results above 10. Parallel costs $1 per 1,000 on `turbo` and `fast` and $5 on `basic` and `advanced`. SpecStream costs $5 per 1,000 searches of up to 10 results in every mode, with no monthly plan.

### Can I use both Exa and Parallel?

Yes, with one key: SpecStream answers Exa's call at `https://api.specstream.ai/exa` and Parallel's at `https://api.specstream.ai/parallel`, each in its own JSON. One balance, one request log and one spending limit cover both.

### How many results does a call return?

Up to 100 on SpecStream, on either path, for $0.059. Exa takes `numResults` from 1 to 100, and Parallel's public modes cap results at 20.

### Do the Exa and Parallel SDKs work with SpecStream?

Yes: Exa's Python SDK takes `base_url="https://api.specstream.ai/exa"` and Parallel's `parallel-web` SDK takes `base_url="https://api.specstream.ai/parallel"`, with the SpecStream key in place of theirs. The calls and the replies stay as they are.

### Which one is free to start?

SpecStream gives $10 of credit with no card, which covers 2,000 searches. Exa gives $10 in credits on sign up with no payment method, and Parallel gives $5 a month with a card on file, plus up to $80 at signup.

## Sources

SpecStream wrote this page. Each figure for Exa, Parallel 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 API reference](https://exa.ai/docs/reference/search.md), read Nov 10, 2026
- [Parallel pricing](https://docs.parallel.ai/getting-started/pricing.md), read Nov 10, 2026
- [Parallel search modes](https://docs.parallel.ai/search/modes.md), read Nov 10, 2026
- [Parallel advanced search settings](https://docs.parallel.ai/search/advanced-search-settings.md), read Nov 10, 2026
- [Parallel rate limits](https://docs.parallel.ai/getting-started/rate-limits.md), read Nov 10, 2026
- [Parallel errors](https://docs.parallel.ai/resources/warnings-and-errors.md), read Nov 10, 2026
- [Parallel products and free credit](https://parallel.ai/pricing), read Nov 10, 2026
- [Parallel docs index](https://docs.parallel.ai/llms.txt), read Nov 10, 2026
- [Parallel changelog](https://docs.parallel.ai/resources/changelog.md), read Nov 10, 2026
- [Parallel MCP](https://docs.parallel.ai/integrations/mcp/quickstart.md), 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
- [Serper homepage and pricing](https://serper.dev/), read Nov 10, 2026
- [Firecrawl pricing](https://www.firecrawl.dev/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
