<!-- twin of https://specstream.ai/migrate/newsapi -->
# NewsAPI.org compatible: change the address, keep the JSON

Compared on Nov 10, 2026. The page: https://specstream.ai/migrate/newsapi

NewsAPI.org's Business plan costs $449 a month, and its free Developer plan cannot be used in production. SpecStream answers the same `GET /v2/everything` and `/v2/top-headlines` in NewsAPI's JSON, at $0.005 a call with no plan.

The switch is one line: `https://api.specstream.ai` in place of `https://newsapi.org`, and a SpecStream key in `X-Api-Key`, `apiKey` or `Authorization`. The paths, the parameters and your parser stay.

SpecStream scores 97.9 F-score on all 1,000 SimpleQA Verified questions. A new account gets $10 of credit, no card, which covers 2,000 news searches.

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

## NewsAPI.org to SpecStream, parameter by parameter and field by field

| | SpecStream | NewsAPI.org |
|---|---|---|
| Address | `GET https://api.specstream.ai/v2/everything` and `/v2/top-headlines` | `GET https://newsapi.org/v2/everything` and `/v2/top-headlines` |
| The key | A SpecStream key in `X-Api-Key`, in `apiKey=`, or in `Authorization` with or without `Bearer` | The `apiKey` parameter, the `X-Api-Key` header, or the `Authorization` header, where Bearer is optional |
| `pageSize` | Up to 100, with `page` for the next page | Default 100, maximum 100 on `/v2/everything` |
| Freshness | `from` and `to` set the window on every account, and `sortBy=publishedAt` puts the newest first | Developer plan: articles have a 24 hour delay and go back a month |
| Each article | `source.name`, `title`, `description`, `url` and `publishedAt`. `source.id`, `author`, `urlToImage` and `content` come back as null | `content` is truncated to 200 chars |
| Errors | NewsAPI's `{"status": "error", "code", "message"}`: `401` with no key. A busy call gets `429` `rateLimited` with `Retry-After` and is not charged | `401`, `400`, `429` and `500`, each with a `code` and a `message` |
| Price | $0.005 a search of up to 10 results, $5 per 1,000, with no plan. $449 pays for 89,800 searches | Business $449 a month for 250,000 requests, then $0.0018 per extra request. Advanced $1,749 a month |
| Free to start | $10 of credit, no card, usable in production | Developer plan: 100 requests per day, for development and testing only |

## The NewsAPI.org reference, on SpecStream

### The call, before and after

```
# Before
curl -G https://newsapi.org/v2/everything \
  -H "X-Api-Key: $NEWSAPI_KEY" \
  -d pageSize=10 --data-urlencode "q=Nvidia earnings"

# After
curl -G https://api.specstream.ai/v2/everything \
  -H "X-Api-Key: $SPECSTREAM_API_KEY" \
  -d pageSize=10 --data-urlencode "q=Nvidia earnings"
```

The Python client `newsapi-python` 0.2.7 keeps its addresses in its `const` module, so the change is one line before you build `NewsApiClient`: `for name in ("TOP_HEADLINES_URL", "EVERYTHING_URL"): setattr(newsapi.const, name, getattr(newsapi.const, name).replace("https://newsapi.org", "https://api.specstream.ai"))`. `get_everything` and `get_top_headlines` then run as before.

### What the route reads, and what it refuses

Read and applied on `/v2/everything`: `q`, `qInTitle`, `domains`, `excludeDomains`, `from`, `to`, `language`, `sortBy=publishedAt`, `pageSize` and `page`. On `/v2/top-headlines`: `country`, `category`, `q`, `pageSize` and `page`.

Refused: a call with no key gets `401` in NewsAPI's error form. Every parameter was measured on production on Nov 10, 2026, and the full [pass table](https://specstream.ai/specstream/dialects/newsapi.md) lists each one and its result.

### Every field that comes back

The reply has `status` "ok", `totalResults` and `articles[]`. Each article carries `source` with the publisher's `name`, `title`, `description`, `url` and `publishedAt` in UTC.

`source.id`, `author`, `urlToImage` and `content` are present and null, as NewsAPI prints them when a source gives none, so a parser that reads them does not break. `/v2/sources`, NewsAPI's index of publishers, is not served. One field is added, `specstream`, with the call's `price_usd`.

### One price a call, no plan

On NewsAPI.org production use starts at $449 a month. On SpecStream every call of up to 10 articles costs $0.005, each started block of 10 more adds $0.006, and there is no plan to renew. A busy call gets `429` with `Retry-After` and charges nothing. Credit you buy never expires.

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

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

Every drop-in route runs the fast search. Measured on production on November 9, 2026, its median was 0.82 s at 1 search a second and 1.07 s at 20 a second, the 95th percentile stayed between 1.09 and 1.73 s, and it answered 718 of 720. There is no limit per key and no daily limit.

### You decide what is kept, on each 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}'
```

### News, search, pages and rows on one key

The same key reads the full article behind each `url` with the [Extract API](https://specstream.ai/extract-api?utm_source=alternatives&utm_campaign=migrate-newsapi), up to 20 pages 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=migrate-newsapi) returns every match for a request in plain words as structured rows, at 5¢, 15¢ or $1 a row, with a source URL on every value.

## What else NewsAPI.org users price

### GNews

A news API sold by daily cap: Essential is €49.99 a month for 1,000 requests per day, and the free plan has 100 requests per day. SpecStream has no daily cap and answers the NewsAPI call your code already sends.

### Bing News Search v7

Microsoft retired the Bing Search APIs on August 11, 2025, and its named replacement, Grounding with Bing Search, costs $14 per 1,000 transactions with no raw results for developers. SpecStream answers Bing's `/v7.0/news/search` on the same key, at $0.005 a search.

## How to migrate, step by step

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. Set the address to `https://api.specstream.ai/v2/everything` where your code has `https://newsapi.org/v2/everything`, and send the SpecStream key in `X-Api-Key`. In Python:

```
import requests

URL = "https://api.specstream.ai/v2/everything"  # was https://newsapi.org/v2/everything

reply = requests.get(
    URL,
    headers={"X-Api-Key": SPECSTREAM_KEY},
    params={"q": "Nvidia earnings", "language": "en", "sortBy": "publishedAt", "pageSize": 10},
    timeout=30,
)
reply.raise_for_status()
for article in reply.json()["articles"]:
    print(article["publishedAt"], article["source"]["name"], article["title"], article["url"])
```

3. In JavaScript:

```
const url = new URL("https://api.specstream.ai/v2/top-headlines");
url.search = new URLSearchParams({ country: "de", category: "business", pageSize: "10" });
const reply = await fetch(url, { headers: { "X-Api-Key": process.env.SPECSTREAM_KEY } });
const data = await reply.json();
for (const article of data.articles) console.log(article.publishedAt, article.title, article.url);
```

4. Page with `page` as before, and read `429` as a call to send again after `Retry-After`. It is not charged.

## Frequently asked questions

### Is there a NewsAPI.org compatible API?

Yes. SpecStream answers `GET /v2/everything` and `/v2/top-headlines` at `https://api.specstream.ai` in NewsAPI's JSON, as measured on production on Nov 10, 2026. A call of up to 10 articles costs $0.005.

### How do I migrate from NewsAPI.org?

Change one address: `https://newsapi.org` becomes `https://api.specstream.ai`, and a SpecStream key goes where the NewsAPI key went. `q`, `qInTitle`, `domains`, `excludeDomains`, `from`, `to`, `language`, `pageSize`, `page`, `country` and `category` keep their meaning.

### How much does NewsAPI.org cost?

$449 a month for Business with 250,000 requests and $0.0018 per extra request, and $1,749 a month for Advanced. The free Developer plan has 100 requests per day and cannot be used in production. SpecStream costs $5 per 1,000 calls with no plan.

### Can I use the NewsAPI free plan in production?

No. NewsAPI.org says its Developer plan cannot be used in a staging or production environment. A SpecStream account starts with $10 of credit, no card, and every call made with it can run in production.

### Does newsapi-python work with SpecStream?

Yes. `newsapi-python` 0.2.7 works once its two addresses in `newsapi.const` point to `https://api.specstream.ai`, as tested on production on Nov 10, 2026. `get_everything` and `get_top_headlines` run unchanged.

### Which NewsAPI fields does SpecStream not fill?

Four article fields come back as null: `source.id`, `author`, `urlToImage` and `content`. Each article keeps `source.name`, `title`, `description`, `url` and `publishedAt`.

## Sources

SpecStream wrote this page. Each NewsAPI.org figure comes from its own pages, and each other provider's figure from that company's own page. The route's behavior comes from its code and the pass table measured on production.

- [NewsAPI.org pricing](https://newsapi.org/pricing), read Nov 10, 2026
- [NewsAPI.org authentication](https://newsapi.org/docs/authentication), read Nov 10, 2026
- [NewsAPI.org everything endpoint](https://newsapi.org/docs/endpoints/everything), read Nov 10, 2026
- [NewsAPI.org errors](https://newsapi.org/docs/errors), read Nov 10, 2026
- [SpecStream NewsAPI.org pass table](https://specstream.ai/specstream/dialects/newsapi.md), read Nov 10, 2026
- [GNews pricing](https://gnews.io/pricing), read Nov 10, 2026
- [Microsoft: Bing Search APIs retiring on August 11, 2025](https://learn.microsoft.com/en-us/lifecycle/announcements/bing-search-api-retirement), read Nov 10, 2026
- [Grounding with Bing pricing](https://www.microsoft.com/en-us/bing/apis), read Nov 10, 2026
- [SpecStream benchmarks](https://specstream.ai/benchmarks), read Nov 10, 2026
- [SpecStream for agents](https://specstream.ai/agents.md), read Nov 10, 2026
