# News Intelligence Scraper — AI Agent Real-Time News API (`logiover/news-intelligence-scraper`) Actor

Multi-source real-time news aggregator for AI agents: Google News, Bing News and DuckDuckGo News merged, deduplicated, source-ranked and sentiment-scored. One topic or company to clean structured news feed. No API key, no browser.

- **URL**: https://apify.com/logiover/news-intelligence-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** News, Developer tools, AI
- **Features:** Limited permissions
- **Stats:** 5 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Intelligence Scraper — Real-Time Multi-Source News API for AI Agents (No API Key)

![Apify Actor](https://img.shields.io/badge/Apify-Actor-00A67E?logo=apify\&logoColor=white) ![No API key](https://img.shields.io/badge/No%20API%20key-required-2ea44f) ![Pay per result](https://img.shields.io/badge/Pricing-Pay%20per%20result-1C7ED6) ![News & AI Intel](https://img.shields.io/badge/Category-News%20%26%20AI%20Intel-8B5CF6) ![Export](https://img.shields.io/badge/Export-JSON%20%7C%20CSV%20%7C%20Excel-F59E0B)

Drop in a **topic, keyword or company name** and get back a clean, **deduplicated, sentiment-scored** news feed merged from **Google News, Bing News and DuckDuckGo News** in a single Apify run. Every article arrives as a flat record with **headline, URL, snippet, source outlet, source domain, publish date, sentiment score & label, and a duplicate count** — the real-time **grounding layer for AI agents**, brand-monitoring bots and RAG pipelines that must cite *current* sources instead of stale training data. **Fast, no browser, no API key, no per-source scrapers to maintain.**

> ### 🏆 Why this news scraper?
>
> **15 fields per article** · **up to 2,000 deduplicated items per query, many queries per run** · 3 news sources merged & cross-deduplicated in one call · lexicon sentiment (`-1..+1`) with no ML deps · direct HTTP + RSS (no browser, no key) · export to JSON / CSV / Excel. The multi-source **news API alternative** for monitoring, market intelligence and agentic grounding.

***

### ✨ What this Actor does / Key features

- 🌐 **Three sources, one query** — Google News, Bing News and DuckDuckGo News RSS feeds are fanned out per query and merged. Pick any subset.
- 🔀 **Cross-source deduplication** — exact key dedup (`source-domain` + normalized title) **plus** fuzzy token-Jaccard title similarity (>0.72) collapses syndicated/wire copies across outlets into one row.
- 📈 **Sentiment scoring** — an AFINN-style lexicon (~250 weighted terms + negation handling) tags every headline+snippet with a normalized `-1..+1` `sentimentScore` and a `positive`/`negative`/`neutral` label. Fast, no ML dependencies.
- 🏷️ **Full source attribution** — each item carries the outlet `source`, the `sourceDomain`, the list of feeds (`sourceFeeds`) that surfaced it, and a `duplicateCount` showing how many raw copies were merged (a syndication signal).
- 📅 **Time filtering** — `daysBack` keeps only items published within a rolling window; results are sorted newest-first.
- 🌍 **Localization** — Google News `hl`/`gl` params for language + country targeting (`en-US`, `tr-TR`, `de-DE`, `fr-FR`, …).
- 🏢 **Company mode** — pass a company name or domain to track brand news specifically.
- 📚 **Bulk mode** — feed dozens of topics and get one merged feed per topic in a single run, each tagged with its originating `query`.
- 🤖 **AI-agent-friendly schema** — predictable flat fields, ISO dates, nullable values, per-item attribution — drop straight into a prompt or a vector store.
- ⚡ **No keys, no browser** — pure HTTP + RSS parsing on a small Node 20 container. Cheap, fast, resilient. Empty results (no matches) are free.

### 🚀 Quick start (3 steps)

1. **Configure** — pick a `mode` (`topic`, `company` or `bulk`), type your `query` (or `queries` for bulk), and optionally set `sources`, `daysBack` and `sentiment`.
2. **Run** — click **Start**. The Actor fetches every source in parallel, merges, deduplicates, scores sentiment and streams articles into your dataset.
3. **Get your data** — open the **Output** tab and export to **JSON, CSV, Excel or XML**, or pull it via the Apify API.

### 📥 Input

The only required field is `mode`. Use `query` for `topic`/`company` modes and `queries` for `bulk` mode.

#### Example — aggregate news for one topic

```json
{
  "mode": "topic",
  "query": "openai",
  "sources": ["googleNews", "bingNews", "duckduckgoNews"],
  "maxPerSource": 50,
  "maxResults": 100,
  "daysBack": 7,
  "sentiment": true
}
```

#### Example — track a company's news (brand monitoring)

```json
{
  "mode": "company",
  "query": "stripe.com",
  "daysBack": 30,
  "maxResults": 200
}
```

#### Example — bulk watchlist, many topics in one run

```json
{
  "mode": "bulk",
  "queries": ["openai", "anthropic", "mistral ai", "electric vehicles", "AI regulation"],
  "daysBack": 7,
  "maxResults": 40
}
```

| Field | Type | Description |
|-------|------|-------------|
| `mode` | string | `topic` (one topic/keyword), `company` (company news by name or domain), or `bulk` (many topics). **Required.** |
| `query` | string | Free-text topic/keyword/company for `topic` & `company` modes. Quoted phrases are respected. |
| `queries` | array | Array of topics/keywords for `bulk` mode. |
| `sources` | array | Which feeds to aggregate: `googleNews`, `bingNews`, `duckduckgoNews`. More sources = more coverage + dedup benefit. |
| `maxPerSource` | integer | Cap pulled from each source per query (1–200). Default 50. |
| `maxResults` | integer | Final cap on deduplicated items saved per query (1–2000). Default 200. |
| `daysBack` | integer | Keep only items published within N days (0–365). `0` = no time filter. Default 30. |
| `language` | string | Google News `hl` (BCP-47), e.g. `en-US`, `tr-TR`, `de-DE`. |
| `country` | string | Google News `gl` (ISO 3166-1 alpha-2), e.g. `US`, `GB`, `DE`. |
| `dedup` | boolean | Merge near-duplicate articles across sources (URL + title similarity). Recommended. |
| `sentiment` | boolean | Run lexicon sentiment on each title+snippet. Cheap, no ML deps. |
| `useApifyProxy` | boolean | Route through the Apify datacenter proxy to avoid per-IP rate limits on news RSS. Recommended. |

> **Tip:** Using all three sources makes the result strictly better up to your `maxResults`, because the dedup step folds overlap away and the `duplicateCount` field tells you how widely each story was syndicated. Set `daysBack: 7` for dashboards, `30` for trend reports.

### 📤 Output

One row per deduplicated article — **15 fields**, exportable to JSON, CSV, Excel or XML. Here is a trimmed sample record:

```json
{
  "query": "openai",
  "title": "OpenAI announces new reasoning model",
  "url": "https://techcrunch.com/2026/07/01/openai-reasoning-model",
  "snippet": "The company said the new model improves on prior reasoning benchmarks while cutting latency… (first ~500 chars of the RSS description)",
  "source": "TechCrunch",
  "sourceDomain": "techcrunch.com",
  "sourceFeeds": ["googleNews", "bingNews"],
  "publishedAt": "Tue, 01 Jul 2026 14:30:00 GMT",
  "publishedDate": "2026-07-01",
  "language": "en-US",
  "sentimentScore": 0.42,
  "sentimentLabel": "positive",
  "imageUrl": "https://techcrunch.com/…/thumb.jpg",
  "duplicateCount": 3,
  "scrapedAt": "2026-07-02T12:00:00.000Z"
}
```

Use the **Overview** view to scan all items newest-first with sentiment and source, or the **By query** view to pivot on the originating topic.

<details>
<summary><b>📋 Full field reference (click to expand)</b></summary>

| Field | Description |
|-------|-------------|
| `query` | The topic/keyword/company this item was found for |
| `title` | Article headline |
| `url` | Link to the full article |
| `snippet` | Article summary (from the RSS `<description>`, HTML-stripped, first ~500 chars) |
| `source` | Outlet name (e.g. `TechCrunch`) |
| `sourceDomain` | Publisher domain (e.g. `techcrunch.com`) |
| `sourceFeeds` | Which feeds surfaced this item (`googleNews` / `bingNews` / `duckduckgoNews`) |
| `publishedAt` | Raw published timestamp string as provided by the feed |
| `publishedDate` | Normalized publish date (`YYYY-MM-DD`); may be null if the feed omits a date |
| `language` | Language/locale used for the query (e.g. `en-US`) |
| `sentimentScore` | Normalized sentiment, `-1..+1` |
| `sentimentLabel` | `positive` / `negative` / `neutral` |
| `imageUrl` | Article thumbnail URL, when the feed provides one |
| `duplicateCount` | How many raw copies (across sources/outlets) merged into this row |
| `scrapedAt` | Scrape timestamp (ISO 8601) |

</details>

### 🤖 AI Agents, MCP & RAG Integration

News is one of the highest-value grounding tasks for agentic systems: it's **time-sensitive** (yesterday's answer is wrong today), **fragmented** (no single source has everything), and **noisy** (the same story is republished dozens of times). An agent that browses one publisher gets a partial view; an agent that hits a single news API gets rate-limited or charged per call. This Actor solves all three at once — a single call returns a clean, deduplicated, sentiment-tagged table of articles ready for an LLM to read, summarize or cite.

Connect this Actor directly to **Apify AI**, **Claude Desktop**, **Cursor**, **VS Code**, **Windsurf**, **LangChain**, or **LlamaIndex** via the official **Apify MCP Server** — no custom wrapper code needed:

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=logiover/news-intelligence-scraper"
    }
  }
}
```

- **Schema-typed inputs & outputs:** Clean JSON records with explicit `.actor/input_schema.json` and `.actor/output_schema.json` definitions so LLM agents infer parameters and parse fields accurately without HTML noise.
- **Bounded & predictable runs:** Built-in volume caps and pay-per-result budget guards prevent runaway agent tool loops.
- **RAG & automation ready:** Stream run datasets straight into vector stores, n8n, Make, Zapier, or webhook pipelines.

### 💡 Use cases

- **Brand & reputation monitoring** — watch a company name across three feeds, deduplicate syndications, and surface the sentiment trend over 30 days.
- **Market intelligence** — query a basket of industry keywords weekly and build a sentiment-weighted news index.
- **Event grounding** — answer *"why did X move?"* by pulling this week's deduped news for the company, sorted by sentiment, and summarizing the negative cluster.
- **Competitor tracking** — monitor competitor names and surface only genuinely new items — dedup kills the wire echo chamber.
- **RAG freshness** — embed the latest N items per topic into a vector store so answers cite current events, not stale training data.
- **Crisis detection** — run hourly on a watchlist and alert when the negative-sentiment item count crosses a threshold.

### 👥 Who uses it

AI-agent and RAG builders needing a real-time grounding layer · comms & PR teams running brand-monitoring dashboards · market-intelligence and equity-research analysts · GTM/competitive-intelligence teams tracking rivals · data teams building news datasets and sentiment indices.

### 💰 Pricing

This Actor runs on a simple **pay-per-result** model — one charge per saved (deduplicated) news item, with no separate Apify platform fees to calculate. Runs that yield zero items (no matches) are free. Try it on the **free tier** first, then scale up. See the **Pricing** tab on this page for the current rate.

### ❓ Frequently Asked Questions

**Is it legal to scrape news this way?**
This Actor reads **publicly available RSS feeds** from Google News, Bing News and DuckDuckGo News. It does not authenticate, bypass access controls, or scrape behind paywalls. News content is owned by the respective publishers; respect their Terms of Service and use the data for monitoring, research and AI-agent grounding.

**Do these news services have a public API? Is this an API alternative?**
There is no single unified, free public news API that merges Google, Bing and DuckDuckGo and deduplicates across them. This Actor works as that **multi-source news API alternative**: it reads each provider's public RSS, merges and cross-deduplicates the results, scores sentiment, and hands you one clean structured feed — no per-source API keys or client code to maintain.

**Do I need an API key or a login?**
No. There is **no news account, login or API key** required — only an Apify account.

**Can I get news without an API key or login?**
Yes. The Actor pulls public RSS feeds over direct HTTP, so no keys or accounts are needed on the news side.

**How much data can I get?**
Up to **2,000 deduplicated items per query**, with many queries per run in bulk mode. RSS feeds return recent items (typically the last few days to weeks depending on the source and query volume); `daysBack` filters within that window.

**How do I export the news data to CSV or JSON?**
Run the Actor, then export the resulting dataset as **CSV, JSON, Excel or XML** from the Apify console, or pull it via the Apify API.

#### Why three sources instead of just Google News?

Single-source news is biased and incomplete — different aggregators surface different outlets and rankings. Merging three and deduplicating gives broader coverage plus a `duplicateCount` signal (how widely a story was syndicated) that's itself useful.

#### How does deduplication work?

Two stages: (1) exact key dedup on `source-domain + normalized-title-prefix` catches the same article republished; (2) fuzzy token-Jaccard title similarity (>0.72) catches wire/syndicated stories phrased slightly differently across outlets. `duplicateCount` records how many raw copies merged.

#### Is the sentiment accurate?

It's a fast lexicon model (~250 weighted terms + negation), not a transformer. It's great for *trends and ranking* (e.g. "show me the most negative items") and less reliable on sarcasm or domain jargon. For production-grade sentiment, post-process the items with an LLM. The lexicon is English-centric, so treat labels as approximate for non-English queries (or disable `sentiment`).

#### Why do some items have no `publishedDate`?

Some feeds omit `<pubDate>`. Those items are kept (they may still be relevant) but sorted last; the raw `publishedAt` string is preserved when available.

#### Can I get the full article text?

This Actor returns title + snippet (the RSS `<description>`). For full article bodies, pass the `url` field into a content extractor like the [Website Text & Markdown Crawler](https://apify.com/logiover/website-text-markdown-crawler).

#### Can AI agents call this directly?

Yes — this is the primary design target. Expose it through an MCP server or Apify tool integration; the agent passes a topic and gets a clean JSON news feed back, no browsing or HTML parsing on the agent side.

### 🔗 More AI-intelligence & research scrapers by logiover

Building an agentic or competitive-intelligence pipeline? Pair this Actor with the rest of the AI-research suite:

| Actor | What it does |
|---|---|
| [Google News Scraper](https://apify.com/logiover/google-news-scraper) | Single-source Google News, deep |
| [CVE Security Advisory Monitor](https://apify.com/logiover/cve-security-advisory-monitor) | Fresh CVEs & security advisories |
| [arXiv Paper Scraper](https://apify.com/logiover/arxiv-paper-scraper) | Research paper metadata, abstracts & authors |
| [GitHub Activity Stream](https://apify.com/logiover/github-activity-stream) | Real-time commits, releases & events |

👉 Browse all **[logiover scrapers on Apify Store](https://apify.com/logiover)** — 180+ actors across real estate, jobs, crypto, social media & B2B data.

### ⏰ Scheduling & integration

News changes hourly. Schedule this Actor on Apify to run every few hours over your watchlist and diff datasets to detect new items. Export results to JSON, CSV or Excel, sync to Google Sheets, or push to your database, BI tools and webhooks through the Apify API. Connect it to **Make, n8n or Zapier** to build automated monitoring and alerting pipelines — or wrap it in an **MCP server** so AI agents can pull a fresh, deduplicated news feed straight into their context.

### 💬 Support, Issues & Reviews

- **Bug reports & target-site changes:** Hit an unexpected empty result or selector change? [Open a ticket in the Issues tab](https://apify.com/logiover/news-intelligence-scraper/issues) with your **Run ID** or sample input — we actively monitor issues and ship fixes fast.
- **Feature & field requests:** Need an additional data attribute or filter? [Request it in the Issues tab](https://apify.com/logiover/news-intelligence-scraper/issues).
- **Enjoying this Actor?** If it saved you engineering time, please consider leaving an honest [review on Apify Store](https://apify.com/logiover/news-intelligence-scraper/reviews) or bookmarking [logiover/news-intelligence-scraper](https://apify.com/logiover/news-intelligence-scraper) — organic developer feedback helps others discover reliable tools and keeps maintenance prioritized.

### ⚖️ Legal

This Actor reads publicly available RSS feeds only. It does not authenticate, bypass access controls, or scrape behind paywalls. News content is owned by the respective publishers; respect their Terms of Service. Use for monitoring, research and AI-agent grounding on data that is already public, and comply with any applicable local laws.

***

This Actor is an independent tool. It is not affiliated with, endorsed by, or sponsored by News Intelligence; News Intelligence and all other trademarks mentioned here are the property of their respective owners.

### 📝 Changelog

#### 2026-11-11

- Added reliable terminal run status telemetry and structured Apify AI / MCP Server (`mcp.apify.com`) tool configuration.
- Added direct Issues & Reviews support links and refreshed live maintenance verification.

#### 2026-11-01

- Monthly health check (2026-11-01): a live run on the current build completed successfully and returned data. Input options, output fields and pricing are unchanged.
- README refreshed: 8 links to retired Actors removed; independence disclaimer added.

#### 2026-10-15

- A run that reaches its maximum cost per run now stops cleanly with its results saved and a status message, instead of ending as aborted.
- A proxy group your account cannot use no longer stops the run at start-up; it falls back to the default Apify Proxy.
- Runs with a short timeout (API and AI-agent calls) now finish inside it with what they collected, instead of being cut off.
- Memory is managed within the run's own limit, which removes a rare out-of-memory crash on large pages.
- The prefilled example for `maxResults` is now 200 (was 60).
- The default used when the field is left out for `maxResults` is now 2,000 (was 200).

#### 2026-09-23

- Fleet-wide quality audit. Verified end to end against live data and re-checked the input schema, the output columns and the run configuration.
- Output verified on a live run: 15 columns returned, 93.3% of cells populated.
- Run reliability reviewed: 100.0% of public runs succeeded in the last 30 days.
- Input schema, output schema and pricing configuration reviewed.
- Noted that 1 column(s) came back empty in this sample (`imageUrl`); these are under review.

#### 2026-09-01

- Fleet-wide health check. Verified against this Actor's real run history: 30-day success rate, output row counts, per-field fill rates, and peak memory against the configured memory limit.
- Reviewed for the failure patterns that have cost this fleet runs — unguarded proxy setup, retry loops that can outlast the run's own time budget, and full-page HTML parsing that can exhaust a small container.
- No change to input, output fields or scraping logic.

#### 2026-08-11

- Maintenance release: refreshed the build and dependencies.
- Re-verified live execution, non-empty structured output and dataset field/type integrity.
- Reviewed reliability (retries, pagination) and output quality as part of a full-fleet QA pass.

#### 2026-08-01

- Completed the August 2026 full health check: verified empty/programmatic default, Console UI default, and two source-informed alternative inputs on Apify.
- Confirmed successful live execution, non-empty structured output, dataset-field/type integrity, and logical sample quality within the 5-minute quality window.

#### 2026-07-06

- ✨ README overhaul: keyword-rich hero + badges, full 15-field output reference with a realistic sample, ready-to-run example scenarios, high-intent FAQ (legality, API alternative, no-key, CSV/JSON export, data volume), and cross-links to the wider AI-research scraper suite.

#### 2026-07-02 — v1.0

- Initial release.
- 3 modes: `topic`, `company`, `bulk`.
- 3 sources: Google News, Bing News, DuckDuckGo News (any subset).
- Two-stage dedup (exact key + fuzzy title Jaccard).
- Lexicon sentiment (`-1..+1`, positive/negative/neutral).
- Time filtering (`daysBack`), localization (`hl`/`gl`).
- Apify datacenter proxy default.
- Pay-per-result (`result` event per saved item).

***

\*Maintained: last verified 2026-11-11 — checked end-to-end against live run history (reliability, output fields and types, and time/memory budgets).

# Changelog

This Actor's version history is a separate document: https://apify.com/logiover/news-intelligence-scraper/changelog.md

# Actor input Schema

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

How to run.

• **topic** — aggregate news for one or many topics/keywords (highest volume)
• **company** — news about a specific company (by name or domain)
• **bulk** — batch many topics into one run, each producing a merged feed

## `query` (type: `string`):

Free-text query for **topic** or **company** mode, e.g. `openai`, `"electric vehicles"`, `AI regulation`. Quoted phrases are respected. Leave empty to get recent top-headline news on a default topic.

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

Array of topics/keywords for **bulk** mode.

## `sources` (type: `array`):

Which RSS feeds to aggregate. More sources = more coverage + dedup benefit. Empty = Google News + Bing News.

## `maxPerSource` (type: `integer`):

Cap pulled from each source per query. Higher = more coverage before dedup.

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

Final cap on deduplicated items saved per query.

## `daysBack` (type: `integer`):

Only keep items published within this many days. 0 = no time filter.

## `language` (type: `string`):

BCP-47 language for Google News, e.g. `en-US`, `tr-TR`, `de-DE`, `fr-FR`.

## `country` (type: `string`):

ISO 3166-1 alpha-2 country for Google News, e.g. `US`, `GB`, `DE`.

## `dedup` (type: `boolean`):

Merge near-duplicate articles across sources (URL + title similarity). Recommended.

## `sentiment` (type: `boolean`):

Run a lightweight lexicon sentiment score (-1..+1) on each title+snippet. Cheap, no ML deps.

## `useApifyProxy` (type: `boolean`):

Route through Apify datacenter proxy. Recommended to avoid per-IP rate limits on news RSS.

## Actor input object example

```json
{
  "mode": "topic",
  "query": "openai",
  "queries": [
    "openai",
    "anthropic"
  ],
  "sources": [
    "googleNews",
    "bingNews"
  ],
  "maxPerSource": 30,
  "maxResults": 200,
  "daysBack": 7,
  "language": "en-US",
  "country": "US",
  "dedup": true,
  "sentiment": true,
  "useApifyProxy": true
}
```

# Actor output Schema

## `results` (type: `string`):

Full dataset of merged, deduplicated, sentiment-scored news items.

# 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 = {
    "mode": "topic",
    "query": "openai",
    "queries": [
        "openai",
        "anthropic"
    ],
    "sources": [
        "googleNews",
        "bingNews"
    ],
    "maxPerSource": 30,
    "maxResults": 200,
    "daysBack": 7,
    "language": "en-US",
    "country": "US",
    "dedup": true,
    "sentiment": true,
    "useApifyProxy": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/news-intelligence-scraper").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 = {
    "mode": "topic",
    "query": "openai",
    "queries": [
        "openai",
        "anthropic",
    ],
    "sources": [
        "googleNews",
        "bingNews",
    ],
    "maxPerSource": 30,
    "maxResults": 200,
    "daysBack": 7,
    "language": "en-US",
    "country": "US",
    "dedup": True,
    "sentiment": True,
    "useApifyProxy": True,
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/news-intelligence-scraper").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 '{
  "mode": "topic",
  "query": "openai",
  "queries": [
    "openai",
    "anthropic"
  ],
  "sources": [
    "googleNews",
    "bingNews"
  ],
  "maxPerSource": 30,
  "maxResults": 200,
  "daysBack": 7,
  "language": "en-US",
  "country": "US",
  "dedup": true,
  "sentiment": true,
  "useApifyProxy": true
}' |
apify call logiover/news-intelligence-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,logiover/news-intelligence-scraper"
        }
    }
}
```

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/1JvAvjKMCtuwGOGpb/builds/1MIPLbFaf5pcD1Y4M/openapi.json
