# News API - Article Search, Headlines, Sentiment, NewsCatcher (`nabeelbaghoor/news-search-api-headlines-sentiment`) Actor

Search news articles from 140,000+ sources by keyword, entity, theme, sentiment, language and country, or pull latest headlines, breaking news, articles by author or URL, news sources and article counts from the NewsCatcher News API into a dataset. Bring your own API key.

- **URL**: https://apify.com/nabeelbaghoor/news-search-api-headlines-sentiment.md
- **Developed by:** [Nabeel Hassan](https://apify.com/nabeelbaghoor) (community)
- **Categories:** News, Developer tools, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 news article returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## News API - Article Search, Headlines, Sentiment, NewsCatcher

Search and export news articles from 140,000+ publishers worldwide, with NLP theme, sentiment and named entities, straight into an Apify dataset using your own NewsCatcher News API key.

This actor wraps the NewsCatcher News API v3. It turns a keyword or Boolean query, an author, a list of article URLs or a set of filters into clean, deduplicated rows you can download as JSON, CSV or Excel, schedule, or feed into other actors and AI agents.

### What it does

- **News article search**: keywords, exact phrases and Boolean queries (AND, OR, NOT, wildcards) across titles, content, AI summaries or English translations.
- **Latest headlines**: the newest articles in a time window such as the last 24 hours or 7 days, by language, country, publisher or theme.
- **Breaking news**: stories with a sudden spike in coverage, each with its top articles and article count.
- **Articles by author**: everything a journalist published, matched on the exact byline.
- **Articles by URL or ID**: look up full article records for links you already have.
- **News sources**: the publisher catalogue with country, rank, domain type, news type, robots.txt compliance and 7 day volume.
- **Article counts over time**: how many articles matched a query per hour, day or month, for media monitoring and trend charts.
- **NLP filters**: theme (Business, Finance, Tech, Politics and 12 more), title and content sentiment from -1 to 1, organizations, people, locations and other entities mentioned.
- **Publisher filters**: languages, publisher countries, domains, curated top sources per country, source rank, opinion pieces, home page headlines, word count, full text only, duplicates and robots.txt compliance.
- **Pay only for results**: empty searches are recorded as a free row that says why, never charged.

### Input

| Field | Used by | What it does |
| --- | --- | --- |
| `mode` | all | `search`, `latestHeadlines`, `breakingNews`, `authors`, `articlesByLink`, `sources` or `articleCounts` |
| `queries` | search, counts | One query per line, read separately. Boolean syntax supported |
| `searchIn` | search, counts | Title and content (default), title, content, summary or translated fields |
| `authorNames` | authors | Exact bylines, one per line |
| `articleLinks`, `articleIds` | URL or ID | Articles to look up, sent 25 to a request |
| `from`, `to` | search, authors, URL or ID, counts | Dates such as 2026-01-31, date-times, or relative values such as 30d or 3 days ago |
| `when` | latest headlines | Time window such as 24h, 7d or 30d |
| `languages`, `countries`, `sourceDomains`, `predefinedSources` | most modes | Language codes, publisher countries, domains, or values such as top 50 US |
| `sortBy` | article modes | Relevance, newest first, or highest ranked sources first |
| `themes`, `organizations`, `people`, `locations`, sentiment ranges | NLP modes | Filters on the provider's NLP enrichment |
| `includeNlpData` | article modes | Adds theme, summary, sentiment and entities (on by default) |
| `topArticlesPerEvent` | breaking news | 1 to 100 top articles per event |
| `aggregationBy` | counts | Per hour, day or month |
| `maxResults` | all | Row ceiling for the run, across all queries |
| `apiKey` | all | Your News API key (secret). Or set the `DATA_API_KEY` environment secret |

Inputs a mode does not use are left off the request and named in the log, so a wrong filter never silently empties your results.

### Example output

```json
{
    "mode": "search",
    "recordType": "article",
    "identifier": "\"artificial intelligence\" AND regulation",
    "found": true,
    "id": "93b554adf9bf7feb5fc70be8209f8fc9",
    "title": "EU lawmakers agree on next steps for AI rules",
    "url": "https://www.example-news.com/tech/eu-ai-rules",
    "date": "2026-10-06 14:32:00",
    "source": "example-news.com",
    "author": "Jane Doe",
    "language": "en",
    "country": "BE",
    "value": 1840,
    "theme": "Tech, Politics",
    "summary": "European lawmakers reached a provisional deal on ...",
    "titleSentiment": 0.12,
    "contentSentiment": -0.05,
    "description": "Negotiators agreed on ...",
    "content": "Full article text where the publisher makes it public ...",
    "word_count": 812,
    "is_opinion": false,
    "robots_compliant": true,
    "nlp": { "theme": "Tech, Politics", "ner_ORG": [{ "entity_name": "European Commission", "count": 3 }] },
    "note": null
}
```

Every field the provider returns is kept. `value` is the publisher rank for articles, the article count for breaking news events and time frames, and the rank for sources.

### FAQ

#### What is the NewsCatcher News API?

The NewsCatcher News API is a commercial news data API that indexes articles from more than 140,000 news sources in over 100 countries and enriches them with NLP: theme classification, sentiment, named entity recognition, summaries, deduplication and clustering. This actor calls its v3 endpoints `/api/search`, `/api/latest_headlines`, `/api/breaking_news`, `/api/authors`, `/api/search_by_link`, `/api/sources` and `/api/aggregation_count`.

#### Do I need my own API key?

Yes. This actor is bring your own key: you need an active News API subscription from NewsCatcher (plans are sold through their sales team, with NLP, IPTC Tags and Embeddings tiers). Your key is stored as an Apify secret, sent only in the `x-api-token` header, and removed from every log line. Without a key the run stops immediately with a clear message and no charge.

#### How do I search news by keyword or Boolean query?

Choose Article search and enter one query per line, for example `"electric vehicles" AND (Tesla OR BYD) NOT recall`. Use double quotes for exact phrases, `*` for wildcards, and `+` or `-` to require or exclude a word. Separate words are joined with AND automatically.

#### How many articles can I get?

Pages of up to 1,000 articles are read until your `maxResults` ceiling. The News API returns at most 10,000 results for one query, so for larger backfills run several queries over shorter date windows. How far back you can search depends on your plan's historical days.

#### Can I filter by sentiment, company or person?

Yes, on NLP plans. Set title or content sentiment ranges from -1 to 1, pick themes, or list organizations, people, locations or other entities the article must mention. NLP enrichment covers articles indexed from July 2023 onward.

#### What do I pay?

The actor charges per returned record: 0.01 USD per news article, 0.015 USD per breaking news event with its top articles, 0.005 USD per news source and 0.005 USD per article count time frame, with Apify platform usage included. Empty results are free. NewsCatcher bills your API subscription separately; each page is one API call against your plan's monthly call quota.

#### What happens if my key is wrong or my plan does not cover a request?

A rejected key (401), a request outside your plan such as a date range older than your historical days (403), or a used up call quota ends the run cleanly with the provider's own explanation as the status message. Rate limits (429, too many concurrent calls) are retried automatically.

### Keyword map

news API, news search API, news articles API, latest headlines API, breaking news API, news sentiment analysis, media monitoring, news data export, NewsCatcher API, news scraper alternative, news by author, news source list, article volume over time, named entity news search.

### Terms and data use

You need your own News API subscription, and your use of the data is governed by your agreement with NewsCatcher. Their terms grant a non-transferable licence for the subscriber's own use, describe the service as for internal use, forbid making it available to third parties or building competing services, and leave clearing publisher copyright for article content to the subscriber. Article text belongs to the original publishers: check your licence before republishing content, and consider the robots.txt compliant filter. This actor is an independent tool and is not made or endorsed by NewsCatcher.

# Actor input Schema

## `mode` (type: `string`):

Article search reads articles matching keywords or a Boolean query. Latest headlines reads the newest articles in a time window. Breaking news reads stories with sudden coverage, each with its top articles. Articles by author reads one byline at a time. Articles by URL or ID looks up known articles. News sources lists the indexed publishers. Article counts returns how many articles matched per hour, day or month.

## `queries` (type: `array`):

Article search and article counts. One query per line, each read separately. Supports AND, OR, NOT, + and -, wildcards such as technolog\*, and exact phrases in double quotes. Separate words are joined with AND automatically. The characters \[ ] / \ : ^ are not allowed.

## `searchIn` (type: `string`):

Article search and article counts. Which article fields the query is matched against. The translated fields search the English translation of non-English articles.

## `authorNames` (type: `array`):

Articles by author. Author bylines, one per line, each matched exactly and read separately.

## `articleLinks` (type: `array`):

Articles by URL or ID. Full article URLs, one per line. Sent 25 to a request.

## `articleIds` (type: `array`):

Articles by URL or ID. Article IDs from the id field of earlier results, one per line. Sent 25 to a request.

## `from` (type: `string`):

Article search, articles by author, articles by URL or ID and article counts. Earliest publication date, in UTC: a date such as 2026-01-31, a date and time such as 2026-01-31T09:00:00, or a relative value such as 30d, 24h or 3 days ago. The provider defaults to 7 days ago (1 month ago for URL lookups). How far back you can go depends on your plan.

## `to` (type: `string`):

Same modes as From. Latest publication date, in the same formats. Defaults to now.

## `when` (type: `string`):

Latest headlines. How far back to read, as hours or days such as 1h, 24h, 7d or 30d.

## `languages` (type: `array`):

Two letter language codes such as en, de or es, one per line. The provider uses cn for Chinese (China) and tw for Chinese (Taiwan). Not used by breaking news or URL lookups.

## `excludeLanguages` (type: `array`):

Two letter language codes to leave out.

## `countries` (type: `array`):

Two letter country codes such as US, GB or DE, one per line. Matches where the publisher is based, not where the story happened; use Locations for that.

## `excludeCountries` (type: `array`):

Two letter country codes to leave out.

## `sourceDomains` (type: `array`):

Only these publishers, as domains such as reuters.com or finance.yahoo.com, one per line. In the news sources mode, looks these domains up in the catalogue.

## `excludeSourceDomains` (type: `array`):

Publishers to leave out, as domains.

## `predefinedSources` (type: `array`):

The provider's curated top publishers per country, written as top, a number and a country code, such as top 50 US or top 20 GB, one per line.

## `sourceName` (type: `array`):

Article search and news sources. Words to find in publisher names.

## `excludeAuthors` (type: `array`):

Author names to leave out.

## `sortBy` (type: `string`):

Most relevant first, newest first, or from the highest ranked publishers first.

## `includeUnrankedSources` (type: `boolean`):

By default only publishers ranked in the top 1 million websites are searched. Tick to include the long tail too.

## `fromRank` (type: `integer`):

Only publishers with a rank at or above this number (1 is the most popular). Not available for latest headlines.

## `toRank` (type: `integer`):

Only publishers with a rank at or below this number, such as 1000 for the top thousand sites.

## `headlines` (type: `string`):

Only articles that appeared on the publisher's home page, only those that did not, or both.

## `opinion` (type: `string`):

Only opinion pieces, news only, or both.

## `fullTextOnly` (type: `boolean`):

Leave out articles whose full text is not publicly available, such as paywalled stories where only a preview is indexed.

## `wordCountMin` (type: `integer`):

Leave out articles shorter than this.

## `wordCountMax` (type: `integer`):

Leave out articles longer than this.

## `newsDomainType` (type: `string`):

Article search and news sources. Only original publishers, aggregators, press release sites, republishers or others.

## `newsTypes` (type: `array`):

Article search and news sources. Only publishers of these kinds.

## `newsDomainsOnly` (type: `boolean`):

Article search and news sources. Leave out sites the provider does not classify as news domains.

## `themes` (type: `array`):

Only articles the provider's NLP classifies under these themes.

## `excludeThemes` (type: `array`):

Leave out articles under these themes.

## `organizations` (type: `array`):

Article search, latest headlines, breaking news and counts. Only articles whose named entity recognition found these organizations.

## `people` (type: `array`):

Only articles mentioning these people, as found by named entity recognition.

## `locations` (type: `array`):

Only articles mentioning these places.

## `otherEntities` (type: `array`):

Only articles mentioning these products, events, nationalities or other named entities.

## `titleSentimentMin` (type: `number`):

From -1 (most negative) to 1 (most positive).

## `titleSentimentMax` (type: `number`):

From -1 to 1. For negative news only, set this to 0.

## `contentSentimentMin` (type: `number`):

Sentiment of the article body, from -1 to 1.

## `contentSentimentMax` (type: `number`):

Sentiment of the article body, from -1 to 1.

## `iptcTags` (type: `array`):

IPTC Tags plan or higher. Only articles tagged with these IPTC media topic IDs.

## `iabTags` (type: `array`):

IPTC Tags plan or higher. Article search, latest headlines and articles by author. Only articles in these IAB content categories.

## `includeNlpData` (type: `boolean`):

Add each article's theme, AI summary, title and content sentiment and named entities, where the provider has them.

## `includeTranslation` (type: `boolean`):

Add English translations of the title and content of non-English articles.

## `excludeDuplicates` (type: `boolean`):

Article search. Leave out duplicate and near identical articles, such as syndicated wire copy.

## `robotsCompliantOnly` (type: `boolean`):

Only articles whose publisher's robots.txt allows crawling. Useful when you plan to reuse the content.

## `topArticlesPerEvent` (type: `integer`):

Breaking news. How many top articles each event carries.

## `aggregationBy` (type: `string`):

Article counts. Count per hour, day or month.

## `includeSourceDetails` (type: `boolean`):

News sources. Add each source's country, rank, domain type, news type, robots.txt compliance and 7 day article volume.

## `maxResults` (type: `integer`):

The most rows this run returns and charges for, across all queries. Pages are read up to 1000 at a time, and the provider serves at most 10,000 results for one query; split the dates to read more.

## `requestsPerMinute` (type: `integer`):

Pacing. Your plan limits concurrent calls, and the actor waits and retries when the provider answers 429.

## `apiKey` (type: `string`):

Your own NewsCatcher News API key from your subscription. Stored as a secret and sent only in the x-api-token header; it is never logged. You can instead set the DATA_API_KEY environment secret.

## Actor input object example

```json
{
  "mode": "search",
  "queries": [
    "\"artificial intelligence\" AND regulation"
  ],
  "searchIn": "title_content",
  "when": "7d",
  "sortBy": "relevancy",
  "headlines": "any",
  "opinion": "any",
  "includeNlpData": true,
  "topArticlesPerEvent": 3,
  "aggregationBy": "day",
  "includeSourceDetails": true,
  "maxResults": 100,
  "requestsPerMinute": 60
}
```

# Actor output Schema

## `records` (type: `string`):

One row per article, breaking news event, news source or time frame count.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "\"artificial intelligence\" AND regulation"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("nabeelbaghoor/news-search-api-headlines-sentiment").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "queries": ["\"artificial intelligence\" AND regulation"] }

# Run the Actor and wait for it to finish
run = client.actor("nabeelbaghoor/news-search-api-headlines-sentiment").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "\\"artificial intelligence\\" AND regulation"
  ]
}' |
apify call nabeelbaghoor/news-search-api-headlines-sentiment --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nabeelbaghoor/news-search-api-headlines-sentiment"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/TRDOchpeQlq9ELO2E/builds/05ohdIbWlv8Mvv27P/openapi.json
