# Multi News Scraper - Google, Bing & Yahoo News API (`groupoject/multi-news-scraper`) Actor

Scrape Google News, Bing News, and Yahoo News by keyword for brand monitoring, competitor tracking, market research, headlines, sources, dates, snippets, and article URLs. No API key required.

- **URL**: https://apify.com/groupoject/multi-news-scraper.md
- **Developed by:** [Group Oject](https://apify.com/groupoject) (community)
- **Categories:** News, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Multi News Scraper - Google, Bing & Yahoo News API

Scrape Google News, Bing News, and Yahoo News from one Actor. Search one or many queries and get a unified dataset of headlines, publishers, publish dates, snippets, news links, source engine, and article URLs when available.

Use it for brand monitoring, competitor tracking, PR alerts, market research, crisis monitoring, and AI/news pipelines.

### What it does

- Searches Google News, Bing News, Yahoo News, or any combination
- Accepts multiple queries or pasted query lists
- Returns one normalized row per article
- Adds `searchEngine` so you can compare coverage across sources
- Deduplicates across sources when possible
- Saves `SUMMARY`, `HEADLINES_BY_SOURCE`, and `ERRORS` key-value outputs

No API key, login, or browser required.

### Popular use cases

- **Brand alerts** - monitor your brand, executives, products, and competitors.
- **Multi-source news monitoring** - compare Google, Bing, and Yahoo coverage.
- **Competitor launch tracking** - watch funding, partnerships, acquisitions, and product launches.
- **Crisis monitoring** - track lawsuits, outages, breaches, recalls, and controversies.
- **Market research** - follow AI, crypto, healthcare, real estate, climate, or finance topics.
- **LLM news pipelines** - feed structured current news into dashboards and AI workflows.

### Example input

```json
{
  "queries": ["openai", "climate tech", "interest rates"],
  "searchEngines": ["google", "bing", "yahoo"],
  "geo": "US",
  "language": "en",
  "maxItemsPerQuery": 25,
  "dedupe": true
}
````

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `queries` | string\[] | - | Search terms |
| `queriesText` | string | - | Queries as text, one per line or comma-separated |
| `searchEngines` | string\[] | `[google, bing, yahoo]` | News sources to scrape |
| `geo` | string | `"US"` | Country/market code for Google and Bing |
| `language` | string | `"en"` | Language code for Google and Bing |
| `maxItemsPerQuery` | integer | `50` | Cap per query per source |
| `maxQueries` | integer | `100` | Max search queries |
| `dedupe` | boolean | `true` | Remove duplicate articles across sources |
| `requestDelayMs` | integer | `500` | Delay between feed requests |
| `maxConcurrency` | integer | `3` | Parallel feed requests |
| `proxyConfiguration` | object | - | Optional proxy settings for high volume |

At least one of `queries` or `queriesText` is required.

### Output

```json
{
  "searchEngine": "yahoo",
  "query": "openai",
  "queryType": "search",
  "title": "OpenAI ships new model and tools",
  "newsUrl": "https://news.yahoo.com/...",
  "googleNewsUrl": null,
  "bingNewsUrl": null,
  "yahooNewsUrl": "https://news.yahoo.com/...",
  "articleUrl": "https://news.yahoo.com/...",
  "source": "Yahoo News",
  "publishedAt": "2026-06-18T14:30:00.000Z",
  "snippet": "OpenAI ships new model...",
  "guid": "ABC123",
  "position": 1,
  "geo": "US",
  "language": "en",
  "fetchedAt": "2026-06-18T15:00:00.000Z"
}
```

Google News rows keep the Google News RSS redirect link as `googleNewsUrl`. Bing rows include decoded publisher URLs as `articleUrl` when Bing provides them. Yahoo rows generally include direct Yahoo article URLs.

### Related tools

- [Google News Scraper](https://apify.com/groupoject/google-news-scraper)
- [Bing News Scraper](https://apify.com/groupoject/bing-news-scraper)
- [Google & Bing News Monitor](https://apify.com/groupoject/google-bing-news-monitor)
- [Google AI Overview Tracker](https://apify.com/groupoject/google-ai-overview-tracker)

# Actor input Schema

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

Search terms to pull news articles for across Google News, Bing News, and Yahoo News.

## `queriesText` (type: `string`):

Paste one query per line or comma-separated.

## `searchEngines` (type: `array`):

News sources to scrape.

## `geo` (type: `string`):

Country/market code, e.g. US, GB, CA, FR, DE. Used by Google and Bing.

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

Language code, e.g. en, fr, es, de. Used by Google and Bing.

## `maxItemsPerQuery` (type: `integer`):

Cap on articles kept per query per news source.

## `maxQueries` (type: `integer`):

Maximum number of search queries to process.

## `dedupe` (type: `boolean`):

Remove duplicate articles across all sources.

## `requestDelayMs` (type: `integer`):

Delay between feed requests.

## `maxConcurrency` (type: `integer`):

Parallel feed requests. Keep modest; add a proxy for high volume.

## `proxyConfiguration` (type: `object`):

Optional. Use Apify Proxy for large/repeated runs to avoid rate limits.

## `debugMode` (type: `boolean`):

Verbose logging.

## Actor input object example

```json
{
  "queries": [
    "openai",
    "climate tech",
    "interest rates"
  ],
  "searchEngines": [
    "google",
    "bing",
    "yahoo"
  ],
  "geo": "US",
  "language": "en",
  "maxItemsPerQuery": 50,
  "maxQueries": 100,
  "dedupe": true,
  "requestDelayMs": 500,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "debugMode": false
}
```

# Actor output Schema

## `articles` (type: `string`):

One row per article: source, title, publisher, publish date, snippet, news link, and article URL when available.

## `headlinesBySource` (type: `string`):

Article titles grouped by publisher.

## `summary` (type: `string`):

Totals, top publishers, top queries, and articles by news source.

## `errors` (type: `string`):

Feeds that failed to fetch.

# 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": [
        "openai",
        "climate tech",
        "interest rates"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("groupoject/multi-news-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 = {
    "queries": [
        "openai",
        "climate tech",
        "interest rates",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("groupoject/multi-news-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "openai",
    "climate tech",
    "interest rates"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call groupoject/multi-news-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=groupoject/multi-news-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Multi News Scraper - Google, Bing & Yahoo News API",
        "description": "Scrape Google News, Bing News, and Yahoo News by keyword for brand monitoring, competitor tracking, market research, headlines, sources, dates, snippets, and article URLs. No API key required.",
        "version": "1.0",
        "x-build-id": "0ZKYjdPZQ6Zazywdk"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/groupoject~multi-news-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-groupoject-multi-news-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/groupoject~multi-news-scraper/runs": {
            "post": {
                "operationId": "runs-sync-groupoject-multi-news-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/groupoject~multi-news-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-groupoject-multi-news-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "queries": {
                        "title": "Search queries",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Search terms to pull news articles for across Google News, Bing News, and Yahoo News.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "queriesText": {
                        "title": "Search queries as text",
                        "type": "string",
                        "description": "Paste one query per line or comma-separated."
                    },
                    "searchEngines": {
                        "title": "News sources",
                        "type": "array",
                        "description": "News sources to scrape.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "google",
                                "bing",
                                "yahoo"
                            ],
                            "enumTitles": [
                                "Google News",
                                "Bing News",
                                "Yahoo News"
                            ]
                        },
                        "default": [
                            "google",
                            "bing",
                            "yahoo"
                        ]
                    },
                    "geo": {
                        "title": "Country / market",
                        "type": "string",
                        "description": "Country/market code, e.g. US, GB, CA, FR, DE. Used by Google and Bing.",
                        "default": "US"
                    },
                    "language": {
                        "title": "Language",
                        "type": "string",
                        "description": "Language code, e.g. en, fr, es, de. Used by Google and Bing.",
                        "default": "en"
                    },
                    "maxItemsPerQuery": {
                        "title": "Max articles per query/source",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Cap on articles kept per query per news source.",
                        "default": 50
                    },
                    "maxQueries": {
                        "title": "Max search queries",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of search queries to process.",
                        "default": 100
                    },
                    "dedupe": {
                        "title": "Deduplicate articles",
                        "type": "boolean",
                        "description": "Remove duplicate articles across all sources.",
                        "default": true
                    },
                    "requestDelayMs": {
                        "title": "Request delay (ms)",
                        "minimum": 0,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Delay between feed requests.",
                        "default": 500
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Parallel feed requests. Keep modest; add a proxy for high volume.",
                        "default": 3
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional. Use Apify Proxy for large/repeated runs to avoid rate limits."
                    },
                    "debugMode": {
                        "title": "Debug mode",
                        "type": "boolean",
                        "description": "Verbose logging.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
