# News API

> newsapi.org | Data APIs; 1 record: free tier, limits, identity cost and evidence.

HTML https://fshy.ajam.dev/p/newsapi/ | JSON https://fshy.ajam.dev/api/v1/entity/newsapi.json | how to read a record: https://fshy.ajam.dev/llms-full.txt

## News API

- `data-apis/newsapi` | qualifies-with-caveat | evidence documented | binding request-rate | category news search API | tier Developer
- needs card no, phone no, ID no, institution no | verified 2026-11-03T00:28:04.421Z (live) | stale on 2026-12-04
- url https://newsapi.org/pricing
- free tier: Developer plan, $0: 100 requests a day with no extra requests available; articles appear after a 24 hour delay and search reaches articles up to a month old. | unit: requests | metered on: request-count | read on: 2026-11-02 | source: [1] | note: A request returns up to 100 articles (pageSize maximum 100), each with content truncated to 200 characters; full article content is not offered on any plan. Browser CORS works only from localhost on this plan. The next plan up is Business at $449 a month for 250,000 requests.
- per-object cap: 100 articles a request; article content truncated to 200 characters
- retention: search reaches articles up to a month old, and new articles appear after a 24 hour delay | source: [1]
- egress: not applicable | metered: no | source: [1]
- identity: email | detail: The register form asks for a first name, an email that is verified (disposable addresses are blocked), a password, an individual or business choice, a reCAPTCHA check and acceptance of the terms; no card and no phone. One API key per holder at a time.
- interface: rest
- limits:
  - request-rate (binding): 100 requests a day on the Developer plan; no extra requests on it [1]
  - per-object-cap: 100 articles a request; content truncated to 200 characters [2]
  - request-rate (binding): the rateLimited message sizes the Developer allowance as 100 requests over a 24 hour period, with 50 requests available every 12 hours [3]
  - per-object-cap: a Developer key reaches only the first 100 results of a query, however large totalResults is: a request for results past the 100th answers maximumResultsReached with HTTP 426 [4]
- limits note: The errors page gives the window behind the 429 rateLimited answer only as a window of time and lists no code for a paging cap; the sized window and the paging cap in limits come from the API's own messages as third-party reports quote them. Unverified: behind a sign-up: whether the allowance refills on a rolling or a fixed clock, whether a smaller pageSize reaches results up to the cap, and whether /v2/everything applies the same cap as /v2/top-headlines.
- binding note: 100 requests a day is met before anything else; the window behind the 429 rateLimited answer is not stated.
- interface detail: REST over HTTPS; the key goes in the apiKey parameter, the X-Api-Key header or the Authorization header
- endpoint: https://newsapi.org/v2/everything
- tooling: any HTTP client
- composes with: A headline and article-metadata search: each result carries the article URL, and the full page is fetched separately by a crawler.
- reliability: Too many requests in an unstated window answer HTTP 429 rateLimited, an exhausted key answers apiKeyExhausted, and the Developer plan has no uptime SLA.
- notes: Bulk path: none. The free plan returns metadata and 200-character snippets, 24 hours late, over a one-month window.
- evidence note: Quota, delay, history window and register fields are read from first-party pages; a call with no key answered HTTP 401 apiKeyMissing, so the free key was not exercised. A call with a free key would move this to measured.
- evidence:
  - [1] 2026-10-30: the Developer plan allows 100 requests a day | capture: sha256:b19550bbdbe6434c7e56a1658185c62bdb3315d3945b04fc9946277cfe628370 | quote: 100 requests per day
  - [1] 2026-10-30: the 100 requests reset daily | capture: sha256:5a03a07d95317837824df773ac958e87d18e2b34acce4594331713507c1bc80a | quote: You get 100 API requests every day.
  - [1] 2026-10-30: no extra requests can be bought on the Developer plan | capture: sha256:b19550bbdbe6434c7e56a1658185c62bdb3315d3945b04fc9946277cfe628370 | quote: No extra requests available
  - [1] 2026-10-30: Developer plan articles are delayed 24 hours | capture: sha256:b19550bbdbe6434c7e56a1658185c62bdb3315d3945b04fc9946277cfe628370 | quote: Articles have a 24 hour delay
  - [1] 2026-10-30: Developer plan search reaches articles up to a month old | capture: sha256:b19550bbdbe6434c7e56a1658185c62bdb3315d3945b04fc9946277cfe628370 | quote: Search articles up to a month old
  - [1] 2026-10-30: browser CORS works only from localhost on the Developer plan | capture: sha256:5a03a07d95317837824df773ac958e87d18e2b34acce4594331713507c1bc80a | quote: Requests can be made via the browser only while testing from localhost.
  - [1] 2026-10-30: full article content is not offered on any plan | capture: sha256:b19550bbdbe6434c7e56a1658185c62bdb3315d3945b04fc9946277cfe628370 | quote: No, unfortunately we cannot provide the full content with our search results.
  - [1] 2026-10-30: the cheapest paid plan is Business at $449 a month | capture: sha256:b19550bbdbe6434c7e56a1658185c62bdb3315d3945b04fc9946277cfe628370 | quote: | Business $449 per month, billed monthly | Advanced $1749 per month, billed monthly |
  - [1] 2026-10-30: Business includes 250,000 requests a month | capture: sha256:b19550bbdbe6434c7e56a1658185c62bdb3315d3945b04fc9946277cfe628370 | quote: | 250,000 requests per month included | 2,000,000 requests per month included |
  - [1] 2026-10-30: the Developer plan has no uptime SLA | capture: sha256:b19550bbdbe6434c7e56a1658185c62bdb3315d3945b04fc9946277cfe628370 | quote: No uptime SLA
  - [2] 2026-10-30: pageSize is at most 100 articles a request | capture: sha256:06b42d3018b38263f82f973082581122a2f0c37d5a8002583f80bbd3e17fbe30 | quote: Default: `100`. Maximum: `100`.
  - [2] 2026-10-30: article content is truncated to 200 characters | capture: sha256:06b42d3018b38263f82f973082581122a2f0c37d5a8002583f80bbd3e17fbe30 | quote: The unformatted content of the article, where available. This is truncated to 200 chars.
  - [5] 2026-10-30: a rate limit answers 429 within a window the docs do not size | capture: sha256:471cd9be6cb07e1ef4b62a13cdd5cb284dd2ac2d2ae6fa0f7316ec85c7aabe70 | quote: `429 - Too Many Requests`. You made too many requests within a window of time and have been rate limited. Back off for a while.
  - [5] 2026-10-30: an exhausted key answers apiKeyExhausted | capture: sha256:471cd9be6cb07e1ef4b62a13cdd5cb284dd2ac2d2ae6fa0f7316ec85c7aabe70 | quote: `apiKeyExhausted` - Your API key has no more requests available.
  - [6] 2026-10-30: the key can go in the X-Api-Key header | capture: sha256:1bb43600a603534a962091799a8b267e48de4ad292b962308b09b28d2ebcaeec | quote: Via the `X-Api-Key` HTTP header.
  - [7] 2026-10-30: registration verifies the email and blocks disposable addresses | capture: sha256:73f4613445031a9ff80c7e40e7e012badc3d7a5afa85c5e92b2ef58488b3c829 | quote: Email addresses will be verified, please enter a real one. Disposable addresses have been blocked.
  - [7] 2026-10-30: the register form fields are first name, email, password, individual or business, and terms; no card or phone field | capture: sha256:f2dc95b1ab7bf42bc5b9d7e7a17cc39aa682b08000f7859951d835101bb58fad | quote: id="FirstName" name="FirstName" placeholder="First name"
  - [8] 2026-10-30: one API key per holder at a time | capture: sha256:7f08e30fee4f556daa85c1ee69203f06de52d3ea5014c2eb31d3d4a939e67df3 | quote: register more than one API key at any one time, unless authorised;
  - [8] 2026-10-30:  | capture: sha256:7f08e30fee4f556daa85c1ee69203f06de52d3ea5014c2eb31d3d4a939e67df3
  - [8] 2026-10-30: building a competing news database from the data is barred | capture: sha256:7f08e30fee4f556daa85c1ee69203f06de52d3ea5014c2eb31d3d4a939e67df3 | quote: attempt to build a competing news database.
  - probe:https://newsapi.org/v2/everything 2026-10-30: a call with no key answers HTTP 401 apiKeyMissing | capture: sha256:16cd9be44ab0ff46c8587b868558c5e454481f3b04c453005ef81b54ab89221f | quote: "code":"apiKeyMissing"
  - [9] 2026-10-30: a third-party list gives the same 100 a day and 24 hour delay | capture: sha256:f000e28d0929218a67c025e133a6202e490674f47d6b6d1edbefbf397d684866 | quote: News API - Search news on the web with code, and get JSON results. Developers get 100 queries free each day. Articles have a 24 hour delay.
  - [3] 2026-11-02: a rateLimited answer logged on 2026-03-01 for a developer account reads 100 requests over a 24 hour period, 50 requests available every 12 hours | capture: sha256:4725e29389861af43b633084fbd5cf0b175a5ba9e27d180ec94cc3f399dd0fb0 | quote: Developer accounts are limited to 100 requests over a 24 hour period (50 requests available every 12 hours).
  - [4] 2026-11-02: a Developer key's request for results 90 to 180 answered code maximumResultsReached with HTTP status 426 in a connector test log of 2022-10-25 | capture: sha256:d34b3bd3eb03962dfd4fde74baa66f27dafb0d5f880492adb9ffb4a12edb830d | quote: Developer accounts are limited to a max of 100 results. You are trying to request results 90 to 180. Please upgrade to a paid plan if you need more results.\"}", "status": "426"
  - [5] 2026-11-02: the errors page gives the 429 window only as a window of time, with no size | capture: sha256:471cd9be6cb07e1ef4b62a13cdd5cb284dd2ac2d2ae6fa0f7316ec85c7aabe70 | quote: You made too many requests within a window of time and have been rate limited.
  - [7] 2026-11-02: the register form carries a Google reCAPTCHA widget (div class g-recaptcha) | capture: sha256:5891c3f1cc3827f786dba7fdd5f44f7ed1e9305566020f6411a650dd7db23f3a | quote: <div class="g-recaptcha"
  - [1] 2026-11-02: the Developer plan lists a 24 hour article delay, a month of search history, 100 requests per day, no extra requests and no uptime SLA | capture: sha256:b19550bbdbe6434c7e56a1658185c62bdb3315d3945b04fc9946277cfe628370 | quote: Articles have a 24 hour delay Search articles up to a month old CORS enabled for localhost help 100 requests per day help No extra requests available help No uptime SLA
  - [10] 2026-11-02: the same rateLimited message was posted for a developer key on 2021-04-02 | capture: sha256:190f62501cf6c461bde5d47b471cfbb484596dd5a6c3a1a8a400fc8cc877043e | quote: Developer accounts are limited to 100 requests over a 24 hour period (50 requests available every 12 hours).
  - [11] 2026-11-02: a /v2/top-headlines request with pageSize 100 and page 2 answered maximumResultsReached for results 100 to 200 (comment of 2020-02-20) | capture: sha256:1278a3b855aa711e38cbe3ffeb6cf31745d1e4c6991e63e94d71e822bcfa406f | quote: Developer accounts are limited to a max of 100 results. You are trying to request results 100 to 200.
  - [12] 2026-11-02: a request with pageSize 100 and page 100 answered maximumResultsReached for results 9900 to 10000 (answer of 2019-01-10) | capture: sha256:42ae083aede02c3169e1f027febfec7816c57b5f24d7dcc8f9787c07408b5487 | quote: Developer accounts are limited to a max of 100 results deep. You are trying to request results 9900 to 10000.
  - [13] 2026-11-02: a connector change of 2026-10-07 handles maximumResultsReached as the plan's pagination cap on both its /v2/everything and /v2/top-headlines streams | capture: sha256:5d902a7e988ca64a6c7e8c59fa6acd9637eb09c6f8204669fb2074ebd7db5b28 | quote: Both streams: the IGNORE filter now matches on predicate: response.get('code') == 'maximumResultsReached' (the pagination/plan cap) only.
  - [13] 2026-11-02: a free-plan key's /v2/everything?q=bitcoin query returned 200 with thousands of results (2026-10-07) | capture: sha256:5d902a7e988ca64a6c7e8c59fa6acd9637eb09c6f8204669fb2074ebd7db5b28 | quote: (optional field; without it /v2/everything?q=bitcoin returns 200 with thousands of results)
  - [2] 2026-11-02: pageSize is at most 100 articles a request | capture: sha256:8fae9cc01d5e38dbed94b0c6b1bd48fecee05680717bf902d16ce35632ed597c | quote: The number of results to return per page. Default: `100`. Maximum: `100`.
  - [2] 2026-11-02: article content is truncated to 200 characters | capture: sha256:8fae9cc01d5e38dbed94b0c6b1bd48fecee05680717bf902d16ce35632ed597c | quote: The unformatted content of the article, where available. This is truncated to 200 chars.
  - [5] 2026-11-02: an exhausted key answers apiKeyExhausted | capture: sha256:471cd9be6cb07e1ef4b62a13cdd5cb284dd2ac2d2ae6fa0f7316ec85c7aabe70 | quote: `apiKeyExhausted` - Your API key has no more requests available.
  - [6] 2026-11-02: the key goes in the apiKey parameter, the X-Api-Key header or the Authorization header | capture: sha256:1bb43600a603534a962091799a8b267e48de4ad292b962308b09b28d2ebcaeec | quote: You can attach your API key to a request in one of three ways: - Via the `apiKey` querystring parameter. - Via the `X-Api-Key` HTTP header. - Via the `Authorization` HTTP header.
  - [7] 2026-11-02: registration verifies the email and blocks disposable addresses | capture: sha256:5891c3f1cc3827f786dba7fdd5f44f7ed1e9305566020f6411a650dd7db23f3a | quote: Email addresses will be verified, please enter a real one. Disposable addresses have been blocked.
  - [7] 2026-11-02: the register form fields are first name, email, password, individual or business, a reCAPTCHA and the terms; no card or phone field | capture: sha256:5891c3f1cc3827f786dba7fdd5f44f7ed1e9305566020f6411a650dd7db23f3a | quote: id="FirstName" name="FirstName" placeholder="First name"
- sources:
  - [1] https://newsapi.org/pricing
  - [2] https://newsapi.org/docs/endpoints/everything
  - [3] https://github.com/jaredlockhart/penny/issues/538
  - [4] https://github.com/airbytehq/airbyte/pull/18301
  - [5] https://newsapi.org/docs/errors
  - [6] https://newsapi.org/docs/authentication
  - [7] https://newsapi.org/register
  - [8] https://newsapi.org/terms
  - [9] https://free-for.dev/
  - [10] https://github.com/mediacloud/backend/issues/502
  - [11] https://github.com/News-API-gh/News-API-python/issues/6
  - [12] https://stackoverflow.com/questions/52570711/newsapi-returning-totalresults-20-even-after-specifying-pagesize-100
  - [13] https://github.com/airbytehq/airbyte/pull/88217
