<!-- twin of https://specstream.ai/search-api-github-repositories -->
# Search API GitHub repositories in 2026: same SDK, $1 per 1,000

Compared on Nov 12, 2026. The page: https://specstream.ai/search-api-github-repositories

The search API repositories on GitHub are SDKs and MCP servers for a paid API: `tavily-python` at $8 per 1,000 searches, `exa-py` at $7, Brave's MCP server at $5, `serpapi-python` at $25. The code is free to clone. Every call is billed.

SpecStream is the live web data engine. Its Search API answers the calls of those same SDKs at one address, for $1 per 1,000 searches. You change the base address and the key. New accounts get $10 of credit, no card.

[Get an API key](https://specstream.ai/signup?src=alternatives-search-api-github-repositories&utm_source=alternatives-md&utm_campaign=search-api-github-repositories&returnTo=%2Fworkspace%2Fsearch%3Froute%3Dtavily) New accounts get $10 of credit, no card. It covers 10,000 searches.

## SpecStream and the search API repositories, from each README and pricing page

| | SpecStream | Tavily | Exa | Brave Search API | SerpApi |
|---|---|---|---|---|---|
| Repository on GitHub | `specstream/specstream-tools`, and no client of ours to adopt: the SDK you cloned works with a new base address | `tavily-ai/tavily-python`, the Tavily Python wrapper for search, extract, crawl, map and research | `exa-labs/exa-py`, the official Python SDK for Exa | `brave/brave-search-mcp-server`, an MCP server that integrates the Brave Search API | `serpapi/serpapi-python`, the official SerpApi Python SDK |
| Install | Nothing to install for a switch. For our own client: `pip install specstream-client` or `npm install @specstream/sdk` | `pip install tavily-python` | `pip install exa-py`, on Python 3.9 or later | `npx -y @brave/brave-search-mcp-server`, with `BRAVE_API_KEY` set | `pip install serpapi`, on Python 3.6 or later |
| The search call | `GET /v1/web-search?q=`, or the call of each SDK in this table at its own path, with the reply in that API's shape | `client.search("latest AI research")` | `exa.search(...)` with `type="auto"` | The server's web search tool, which calls the Brave Search API with your key | `client.search({"engine": "google", "q": "coffee"})` |
| Price per 1,000 searches | $1 for up to 10 results on every drop-in address and with `speed=fast`. $5 on the default search. A call that returns no results costs nothing | $8 pay as you go: $0.008 a credit, and a basic search costs 1 credit. An advanced search costs 2 credits, $16 | $7 on `auto` and `fast`, $4 on `lite`, for up to 10 results | $5 per 1,000 requests | $25 on Starter: $25 a month for 1,000 searches. Developer is $75 a month for 5,000 |
| Free to start | $10 of credit, no card. That is 10,000 searches | 1,000 free API credits every month, no credit card | $10 in credits the day you sign up, up to 2,500 Lite searches | $5 in free credits every month | Free plan: 250 searches a month |
| The same code on SpecStream | One key answers all four, at $1 per 1,000 searches | `TavilyClient(api_key=<key>, api_base_url="https://api.specstream.ai/tavily")` | `Exa(api_key=<key>, base_url="https://api.specstream.ai/exa")` | Base address `https://api.specstream.ai` in place of `https://api.search.brave.com`, with the key in `X-Subscription-Token` | `client.BASE_DOMAIN = "https://api.specstream.ai/serpapi"` |

## Why teams keep the repository and move the calls to SpecStream

### The SDK stays. The address changes

A search API repository on GitHub is a client. What you pay for is the address it calls. Tavily's own README shows its client taking another base address, `api_base_url="https://your-gateway.com/tavily"`. Point that setting at SpecStream and every `client.search()` in your code is one search at $0.001, with the reply in Tavily's shape.

```
from tavily import TavilyClient
from exa_py import Exa

# Before: TavilyClient(api_key=TAVILY_KEY)
tavily = TavilyClient(api_key=SPECSTREAM_KEY, api_base_url="https://api.specstream.ai/tavily")
print(tavily.search("latest AI research")["results"][0]["url"])

# Before: Exa(api_key=EXA_KEY)
exa = Exa(api_key=SPECSTREAM_KEY, base_url="https://api.specstream.ai/exa")
print(exa.search("latest AI research", num_results=10).results[0].url)
```

The move for each API, with its parameters and reply fields, is on [Migrate to SpecStream](https://specstream.ai/migrate?utm_source=alternatives&utm_campaign=search-api-github-repositories): [Tavily](https://specstream.ai/migrate/tavily?utm_source=alternatives&utm_campaign=search-api-github-repositories), [Exa](https://specstream.ai/migrate/exa?utm_source=alternatives&utm_campaign=search-api-github-repositories), [Brave](https://specstream.ai/migrate/brave?utm_source=alternatives&utm_campaign=search-api-github-repositories) and [SerpApi](https://specstream.ai/migrate/serpapi?utm_source=alternatives&utm_campaign=search-api-github-repositories).

### List the search-api repositories with GitHub's own API

GitHub's REST API searches repositories at `GET /search/repositories`. This call lists the repositories that carry the `search-api` topic, most stars first, and needs no token:

```
curl "https://api.github.com/search/repositories?q=topic:search-api&sort=stars&order=desc&per_page=20"
```

GitHub returns up to 1,000 results for each search, and allows 10 requests a minute without a token and 30 with one. The list holds search databases, self-hosted gateways and MCP servers next to the clients of paid APIs, so read each README for the address it calls and the key it needs before you build on it.

### The most accurate web search API

SpecStream scores 97.9 F-score on all 1,000 official SimpleQA Verified questions (978 correct), and 64.0 item F1 and 43.4 row F1 on all 200 official WideSearch tasks. The Extract API scores 0.908 F1 on WCXB. Each score and its method is on the [benchmarks](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=search-api-github-repositories) page.

### Search, pages and rows on one key

The [Search API](https://specstream.ai/search-api?utm_source=alternatives&utm_campaign=search-api-github-repositories) is `GET /v1/web-search`. The [Extract API](https://specstream.ai/extract-api?utm_source=alternatives&utm_campaign=search-api-github-repositories) returns the main text of up to 20 pages or documents a call at $0.80 per 1,000 pages, and a page with no text is not charged. [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=search-api-github-repositories) returns every match on the live web as structured rows at 5¢, 15¢ or $1 a row, with the most a run can cost quoted before it starts. Agents connect to `https://api.specstream.ai/mcp`, set up as shown in the [MCP docs](https://specstream.ai/docs/mcp?utm_source=alternatives&utm_campaign=search-api-github-repositories).

## Other search API repositories on GitHub, one by one

### SpecStream

The live web data engine. Its Search API answers the calls of the Tavily, Exa, Brave, Serper, SerpApi and Firecrawl clients at their own paths for $1 per 1,000 searches, and scores 97.9 F-score on all 1,000 SimpleQA Verified questions. The Extract API reads pages at $0.80 per 1,000, and Deep Search returns structured rows at 5¢, 15¢ or $1 a row.

### Firecrawl MCP server

`firecrawl/firecrawl-mcp-server` carries the `search-api` topic and runs with `npx -y firecrawl-mcp` and a Firecrawl key. Its README says a search costs 2 credits, and Firecrawl's Hobby plan adds 1,000 credits per $5: $10 per 1,000 searches. SpecStream answers Firecrawl's search and scrape calls at `https://api.specstream.ai/firecrawl` at $1 per 1,000 searches.

### Serper

Serper sells Google results in packs: 50k credits at $1.00 per 1,000, with 2,500 free queries to start. Clients on GitHub post to `https://google.serper.dev`. SpecStream answers the same call at `https://api.specstream.ai/serper` with the key in `X-API-KEY`, at $1 per 1,000 searches with no pack to buy.

### search2ai

`fatwang2/search2ai` is a self-hosted search gateway for AI agents. It needs Node.js 22.18 or later and at least one search provider you configure, and it tries the next provider when one is rate limited. It also serves endpoints for existing Exa and Tavily clients. SpecStream answers those same clients with nothing to host, at $1 per 1,000 searches.

### Searcharvester

`vakovalskii/searcharvester` starts with one `docker compose up` and serves a Tavily-compatible `/search` through SearXNG, with 100+ engines and no API keys for search, on a server you run. SpecStream answers Tavily's `/search` at `https://api.specstream.ai/tavily` for $1 per 1,000 searches, with nothing to host.

## How to switch a search API client from GitHub to SpecStream

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

2. Keep the SDK you installed and set its base address. In `serpapi-python` that is one line:

```
import serpapi

client = serpapi.Client(api_key=SPECSTREAM_KEY)  # was the SerpApi key
client.BASE_DOMAIN = "https://api.specstream.ai/serpapi"  # was https://serpapi.com

results = client.search({"engine": "google", "q": "coffee"})
for result in results["organic_results"]:
    print(result["position"], result["title"], result["link"])
```

3. Code that calls an API with no SDK changes its address the same way. Brave's web search:

```
# Before
curl "https://api.search.brave.com/res/v1/web/search?q=coffee&count=10" -H "X-Subscription-Token: $BRAVE_API_KEY"

# After
curl "https://api.specstream.ai/res/v1/web/search?q=coffee&count=10" -H "X-Subscription-Token: $SPECSTREAM_API_KEY"
```

4. Or call the Search API directly. With `speed=fast` a search of up to 10 results is $0.001:

```
curl "https://api.specstream.ai/v1/web-search?q=coffee&speed=fast" -H "Authorization: Bearer $SPECSTREAM_API_KEY"
```

5. Give the key a spending limit. Every call is in the request log at `GET https://api.specstream.ai/v1/account/requests`, with its price. `GET https://api.specstream.ai/v1/search-dialects` lists every API SpecStream answers, with its base address, and needs no key.

## Frequently asked questions

### Which search API repositories on GitHub are official?

Four that their vendors publish: `tavily-ai/tavily-python`, `exa-labs/exa-py`, `brave/brave-search-mcp-server` and `serpapi/serpapi-python`. Each is a free client for a paid API, at $8, $7, $5 and $25 per 1,000 searches. SpecStream answers the calls of all four at $1 per 1,000.

### How much does a search API from GitHub cost?

The repository costs $0 and the API it calls is billed: Tavily $0.008 a credit, Exa $7 per 1,000 requests on `auto`, Brave $5 per 1,000 requests, SerpApi $25 a month for 1,000 searches. SpecStream is $1 per 1,000 searches of up to 10 results on every drop-in address.

### Is there a free search API on GitHub?

The free tiers are 1,000 credits a month on Tavily, $10 in credits on Exa, $5 of credits a month on Brave and 250 searches a month on SerpApi. SpecStream gives new accounts $10 of credit with no card, which covers 10,000 searches.

### How do I search GitHub repositories with an API?

Call `GET https://api.github.com/search/repositories?q=<query>`. Add `topic:search-api` to `q` for one topic, and `sort=stars` for the most starred first. GitHub returns up to 1,000 results for each search and allows 10 requests a minute without a token, 30 with one.

### Can I keep the SDK I installed from GitHub?

Yes. Set `api_base_url` in `tavily-python`, `base_url` in `exa-py` or `BASE_DOMAIN` in `serpapi-python` to SpecStream's address for that API, and use a SpecStream key. Each search is then $0.001 for up to 10 results, and the reply keeps that API's fields.

### Does SpecStream have an MCP server?

Yes, one remote address: `https://api.specstream.ai/mcp`. It carries `search_web` for one fact and `read_pages` for the text of known pages, with nothing to install. A search is $5 per 1,000, or $1 per 1,000 with `speed=fast`.

## Sources

SpecStream wrote this page. Each figure about another project comes from that project's own README, docs or pricing page.

- [GitHub topic: search-api](https://github.com/topics/search-api), read Nov 12, 2026
- [GitHub REST API: search](https://docs.github.com/en/rest/search/search), read Nov 12, 2026
- [tavily-python README](https://github.com/tavily-ai/tavily-python), read Nov 12, 2026
- [Tavily API credits](https://docs.tavily.com/documentation/api-credits.md), read Nov 12, 2026
- [exa-py README](https://github.com/exa-labs/exa-py), read Nov 12, 2026
- [Exa pricing](https://exa.ai/docs/admin/pricing.md), read Nov 12, 2026
- [Brave Search MCP server README](https://github.com/brave/brave-search-mcp-server), read Nov 12, 2026
- [Brave Search API pricing](https://brave.com/search/api/), read Nov 12, 2026
- [serpapi-python README](https://github.com/serpapi/serpapi-python), read Nov 12, 2026
- [SerpApi pricing](https://serpapi.com/pricing.md), read Nov 12, 2026
- [Firecrawl MCP server README](https://github.com/firecrawl/firecrawl-mcp-server), read Nov 12, 2026
- [Firecrawl pricing](https://www.firecrawl.dev/pricing), read Nov 12, 2026
- [Serper](https://serper.dev/), read Nov 12, 2026
- [search2ai README](https://github.com/fatwang2/search2ai), read Nov 12, 2026
- [Searcharvester README](https://github.com/vakovalskii/searcharvester), read Nov 12, 2026
- [SpecStream benchmarks](https://specstream.ai/benchmarks), read Nov 12, 2026
- [SpecStream pricing](https://specstream.ai/pricing), read Nov 12, 2026
- [SpecStream for agents](https://specstream.ai/agents.md), read Nov 12, 2026
