curl --request GET \
--url https://v3-api.newscatcherapi.com/api/latest_headlines \
--header 'x-api-token: <api-key>'import requests
url = "https://v3-api.newscatcherapi.com/api/latest_headlines"
headers = {"x-api-token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-token': '<api-key>'}};
fetch('https://v3-api.newscatcherapi.com/api/latest_headlines', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://v3-api.newscatcherapi.com/api/latest_headlines",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://v3-api.newscatcherapi.com/api/latest_headlines"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://v3-api.newscatcherapi.com/api/latest_headlines")
.header("x-api-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://v3-api.newscatcherapi.com/api/latest_headlines")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "<string>",
"total_hits": 123,
"page": 123,
"total_pages": 123,
"page_size": 123,
"articles": [],
"user_input": {}
}{
"message": "Invalid JSON in request body",
"status_code": 400,
"status": "Bad request"
}{
"message": "The 'x-api-token' parameter has an invalid value. Please provide a valid API key.",
"status_code": 401,
"status": "Unauthorized"
}{
"message": "Your plan request date range cannot be greater than 400 days",
"status_code": 403,
"status": "Forbidden"
}{
"message": "Request timed out after 30 seconds",
"status_code": 408,
"status": "Request timeout"
}{
"message": "Invalid date format",
"status_code": 422,
"status": "Validation error"
}{
"message": "Max API requests concurrency reached",
"status_code": 429,
"status": "Too many requests"
}Internal Server ErrorRetrieve latest headlines
Retrieves the latest headlines for the specified time period. You can filter results by language, country, source, and more.
curl --request GET \
--url https://v3-api.newscatcherapi.com/api/latest_headlines \
--header 'x-api-token: <api-key>'import requests
url = "https://v3-api.newscatcherapi.com/api/latest_headlines"
headers = {"x-api-token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-token': '<api-key>'}};
fetch('https://v3-api.newscatcherapi.com/api/latest_headlines', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://v3-api.newscatcherapi.com/api/latest_headlines",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://v3-api.newscatcherapi.com/api/latest_headlines"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://v3-api.newscatcherapi.com/api/latest_headlines")
.header("x-api-token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://v3-api.newscatcherapi.com/api/latest_headlines")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "<string>",
"total_hits": 123,
"page": 123,
"total_pages": 123,
"page_size": 123,
"articles": [],
"user_input": {}
}{
"message": "Invalid JSON in request body",
"status_code": 400,
"status": "Bad request"
}{
"message": "The 'x-api-token' parameter has an invalid value. Please provide a valid API key.",
"status_code": 401,
"status": "Unauthorized"
}{
"message": "Your plan request date range cannot be greater than 400 days",
"status_code": 403,
"status": "Forbidden"
}{
"message": "Request timed out after 30 seconds",
"status_code": 408,
"status": "Request timeout"
}{
"message": "Invalid date format",
"status_code": 422,
"status": "Validation error"
}{
"message": "Max API requests concurrency reached",
"status_code": 429,
"status": "Too many requests"
}Internal Server ErrorAuthorizations
API Key to authenticate requests.
To access the API, include your API key in the x-api-token header.
To obtain your API key, complete the form or contact us directly.
Query Parameters
If true, the from_ and to_ parameters use article parse dates instead of published dates. Additionally, the parse_date variable is added to the output for each article object.
In the Aggregation count endpoint, the articles are also counted per interval by their parse date.
true
The language(s) of the search. The only accepted format is the two-letter ISO 639-1 code. To select multiple languages, use a comma-separated string.
To learn more, see Enumerated parameters > Language.
"en,es"
The language(s) to exclude from the search. The accepted format is the two-letter ISO 639-1 code. To exclude multiple languages, use a comma-separated string.
To learn more, see Enumerated parameters > Language.
"fr,de"
The countries where the news publisher is located. The accepted format is the two-letter ISO 3166-1 alpha-2 code. To select multiple countries, use a comma-separated string.
To learn more, see Enumerated parameters > Country.
"US,CA"
The publisher location countries to exclude from the search. The accepted format is the two-letter ISO 3166-1 alpha-2 code. To exclude multiple countries, use a comma-separated string.
To learn more, see Enumerated parameters > Country.
"UK,FR"
Predefined top news sources per country.
Format: start with the word top, followed by the number of desired sources, and then the two-letter country code ISO 3166-1 alpha-2.
Multiple countries with the number of top sources can be specified as a comma-separated string.
"top 50 US, top 20 GB"
Filters articles by content completeness.
If false, returns only articles for which full-text content is publicly available. If true, returns all indexed articles, including those where only partial content is publicly available (e.g., headlines, summaries, or preview paragraphs from paywalled sources).
Note: NewsCatcher indexes content that is publicly accessible and available for crawling in accordance with publisher access controls (e.g., robots.txt and similar mechanisms). For paywalled sources, only content that publishers make publicly available (such as headlines, summaries, or preview text) is indexed. NewsCatcher does not bypass paywalls, authentication systems, or other technical access restrictions.
false
The complete URL(s) mentioned in the article. For multiple URLs, use a comma-separated string.
For more details, see Search by URL.
"https://aiindex.stanford.edu/report,https://www.stateof.ai"
The domain(s) mentioned in the article. For multiple domains, use a comma-separated string.
For more details, see Search by URL.
"who.int,nih.gov"
The text content of links mentioned in the article. Searches for links where the anchor text contains the specified terms. For multiple terms, use a comma-separated string.
Note: When this parameter is used, the response includes the all_links_data field with detailed link information.
To learn more, see Search by URL.
"Nvidia,Tesla"
The page number to scroll through the results. Use for pagination, as a single API response can return up to 1,000 articles.
For details, see Retrieve large datasets
x >= 12
Determines whether to group similar articles into clusters. If true, the API returns clustered results.
To learn more, see Clustering news articles.
true
Deprecated from January 1, 2026 onward. For articles published on or after 2026-01-01, this parameter is ignored. Clustering always uses a combined title + content embedding generated by the Qwen3-Embedding-0.6B model, regardless of the value supplied.
For articles published before 2026-01-01, this parameter remains functional and specifies which part of the article to use for clustering:
content: Uses the full article content (default).title: Uses only the article title.summary: Uses the article summary.
To learn more, see Clustering news articles.
content, title, summary "content"
Sets the similarity threshold for grouping articles into clusters. A lower value creates more inclusive clusters, while a higher value requires greater similarity between articles.
For example:
0.6: Results in larger, more diverse clusters.0.7: Balances cluster size and article similarity (default).0.8: Creates smaller, tightly related clusters.
To learn more, see Clustering news articles.
x <= 10.7
If true, includes an NLP object for each article in the response. This object provides results of NLP analysis, including article theme, summary, sentiment, tags, and named entity recognition if available.
Note: NLP data is only available for articles indexed from July 2023 onward. For articles indexed before July 2023, the nlp field is returned as an empty object {}.
To learn more, see NLP Enrichments.
true
If true, filters results to include only articles that have NLP data.
Note: NLP data is only available for articles indexed from July 2023 onward. Applying this filter to a date range that predates July 2023 returns zero results.
To learn more, see NLP Enrichments.
true
Filters articles based on their general topic, as determined by NLP analysis. To select multiple themes, use a comma-separated string.
To learn more, see NLP Enrichments.
Available options: Business, Economics, Entertainment, Finance, Health, Politics, Science, Sports, Tech, Crime, Financial Crime, Lifestyle, Automotive, Travel, Weather, General.
"Finance,Tech"
Inverse of the theme parameter. Excludes articles based on their general topic, as determined by NLP analysis. To exclude multiple themes, use a comma-separated string.
To learn more, see NLP Enrichments.
"Crime,Sports"
Filters articles by content type: the kind of page an article is, as determined by NLP analysis. To select multiple content types, use a comma-separated string. Values are case-insensitive, and an article is returned if it matches any of them.
Available options: news_report, analysis, interview, opinion, press_release, listicle, service, commerce, review, autogen, seo_spam, obituary, ugc, non_article. Shortcuts: news selects news_report, analysis, and interview; all applies no filter.
Note: Articles without a content type label are excluded whenever content_type is set. An unknown value returns a 422 error.
To learn more, see Content types.
"news"
Filters articles that mention specific organization names, as identified by NLP analysis.
- To specify multiple organizations, use
AND,OR,NOToperators, and\"escape literals for exact matches. - To search in translations, combine with the translation options of the
search_inparameter (e.g.,title_content_translated).
To learn more, see Search by entity.
"\"Apple Inc\" OR Microsoft"
Filters articles that mention specific person names, as identified by NLP analysis.
- To specify multiple names, use
AND,OR,NOToperators, and\"escape literals for exact matches. - To search in translations, combine with the translation options of the
search_inparameter (e.g.,title_content_translated).
To learn more, see Search by entity.
"\"Elon Musk\" OR \"Jeff Bezos\""
Filters articles that mention specific location names, as identified by NLP analysis.
- To specify multiple locations, use
AND,OR,NOToperators, and\"escape literals for exact matches. - To search in translations, combine with the translation options of the
search_inparameter (e.g.,title_content_translated).
To learn more, see Search by entity.
"\"San Francisco\" OR \"New York City\""
Filters articles that mention other named entities not falling under person, organization, or location categories. Includes events, nationalities, products, works of art, and more.
- To specify multiple entities, use
AND,OR,NOToperators, and\"escape literals for exact matches. - To search in translations, combine with the translation options of the
search_inparameter (e.g.,title_content_translated).
To learn more, see Search by entity.
"AWS OR \"Microsoft Azure\""
Filters articles based on the minimum sentiment score of their titles.
Range is -1.0 to 1.0, where:
- Negative values indicate negative sentiment.
- Positive values indicate positive sentiment.
- Values close to 0 indicate neutral sentiment.
To learn more, see NLP Enrichments.
-1 <= x <= 1-0.5
Filters articles based on the maximum sentiment score of their titles.
Range is -1.0 to 1.0, where:
- Negative values indicate negative sentiment.
- Positive values indicate positive sentiment.
- Values close to 0 indicate neutral sentiment.
To learn more, see NLP Enrichments.
-1 <= x <= 10.5
Filters articles based on the minimum sentiment score of their content.
Range is -1.0 to 1.0, where:
- Negative values indicate negative sentiment.
- Positive values indicate positive sentiment.
- Values close to 0 indicate neutral sentiment.
To learn more, see NLP Enrichments.
-1 <= x <= 1-0.5
Filters articles based on the maximum sentiment score of their content.
Range is -1.0 to 1.0, where:
- Negative values indicate negative sentiment.
- Positive values indicate positive sentiment.
- Values close to 0 indicate neutral sentiment.
To learn more, see NLP Enrichments.
-1 <= x <= 10.5
Filters articles based on International Press Telecommunications Council (IPTC) media topic tags. To specify multiple IPTC tags, use a comma-separated string of tag IDs.
Note: The iptc_tags parameter is only available in the v3_nlp_iptc_tags subscription plan.
To learn more, see IPTC Media Topic NewsCodes.
"20000199,20000209"
Inverse of the iptc_tags parameter. Excludes articles based on International Press Telecommunications Council (IPTC) media topic tags. To specify multiple IPTC tags to exclude, use a comma-separated string of tag IDs.
Note: The not_iptc_tags parameter is only available in the v3_nlp_iptc_tags subscription plan.
To learn more, see IPTC Media Topic NewsCodes.
"20000205,20000209"
Filters articles based on Interactive Advertising Bureau (IAB) content categories. These tags provide a standardized taxonomy for digital advertising content categorization. To specify multiple IAB categories, use a comma-separated string.
Note: The iab_tags parameter is only available in the v3_nlp_iptc_tags subscription plan.
To learn more, see the IAB Content taxonomy.
"Business,Events"
Inverse of the iab_tags parameter. Excludes articles based on Interactive Advertising Bureau (IAB) content categories. These tags provide a standardized taxonomy for digital advertising content categorization. To specify multiple IAB categories to exclude, use a comma-separated string.
Note: The not_iab_tags parameter is only available in the v3_nlp_iptc_tags subscription plan.
To learn more, see the IAB Content taxonomy.
"Agriculture,Metals"
Filters articles based on provided taxonomy that is tailored to your specific needs and is accessible only with your API key. To specify tags, use the following pattern:
custom_tags.taxonomy=Tag1,Tag2, wheretaxonomyis the taxonomy name andTag1,Tag2is a comma-separated list of tag names.
Example: custom_tags.industry="Manufacturing,Logistics"
To learn more, see the Custom tags.
"Tag1,Tag2"
Response
A successful response containing articles that match the search criteria. When clustering_enabled is true, returns a Clustered Articles Response. Otherwise, returns a Search Response.
- Search Response
- Clustered Articles Response
The response model for the search requests applies to the Search, Latest Headlines, Search by link, and Authors endpoints. Response field behavior:
- Required fields are guaranteed to be present and non-null.
- Optional fields may be
nullorundefinedif the data point is not presented or couldn't be extracted during processing. - To access article properties in the
articlesresponse array, use array index notation. For example,articles[n].title, wherenis the zero-based index of the article object (0, 1, 2, etc.). - The
nlpproperty within the article objectarticles[n].nlpis only available with NLP-enabled subscription plans.
Was this page helpful?

