# Google & Bing News Monitor - Brand Alerts API (`groupoject/google-bing-news-monitor`) Actor

Monitor Google News and Bing News by keyword for brand alerts, competitor tracking, market research, headlines, sources, dates, snippets, and URLs. No API key required.

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

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## Google & Bing News Monitor - Brand Alerts API

**Monitor Google News and Bing News from one Actor.** Search one or many queries and get a unified dataset of headlines, sources, publish dates, snippets, news links, and decoded publisher 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, or both
- Accepts multiple queries or pasted query lists
- Returns one normalized row per article
- Adds `searchEngine` so you can compare coverage across sources
- Deduplicates across Google and Bing 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.
- **Cross-source news monitoring** - compare Google News and Bing News 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"],
  "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]` | News sources to monitor |
| `geo` | string | `"US"` | Country/market code |
| `language` | string | `"en"` | Language code |
| `maxItemsPerQuery` | integer | `50` | Cap per query per search engine |
| `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": "bing",
  "query": "openai",
  "queryType": "search",
  "title": "OpenAI ships new model and tools",
  "newsUrl": "https://www.bing.com/news/apiclick.aspx?...",
  "googleNewsUrl": null,
  "bingNewsUrl": "https://www.bing.com/news/apiclick.aspx?...",
  "articleUrl": "https://www.theverge.com/openai...",
  "source": "The Verge",
  "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"
}
```

`articleUrl` is decoded from Bing News links when Bing includes the publisher URL. Google News rows keep the Google News RSS redirect link as `googleNewsUrl`.

***

### Related tools

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

***

### Changelog

See [CHANGELOG.md](CHANGELOG.md).

# Actor input Schema

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

Search terms to pull Bing News articles for. You can also paste them as text below.

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

Paste one query per line or comma-separated.

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

News sources to monitor.

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

Country/market code, e.g. US, GB, CA, FR, DE.

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

Language code, e.g. en, fr, es, de.

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

Cap on articles kept per query per search engine.

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

Maximum number of search queries to process.

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

Remove duplicate articles (same link) across all queries.

## `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"
  ],
  "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: search engine, title, source, publish date, snippet, news link, and decoded publisher URL when available.

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

Article titles grouped by publisher.

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

Totals, top sources, top queries by volume.

## `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/google-bing-news-monitor").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/google-bing-news-monitor").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/google-bing-news-monitor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google & Bing News Monitor - Brand Alerts API",
        "description": "Monitor Google News and Bing News by keyword for brand alerts, competitor tracking, market research, headlines, sources, dates, snippets, and URLs. No API key required.",
        "version": "1.0",
        "x-build-id": "3yMla0Ae8RDIk5ZBF"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/groupoject~google-bing-news-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-groupoject-google-bing-news-monitor",
                "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~google-bing-news-monitor/runs": {
            "post": {
                "operationId": "runs-sync-groupoject-google-bing-news-monitor",
                "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~google-bing-news-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-groupoject-google-bing-news-monitor",
                "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 Bing News articles for. You can also paste them as text below.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "queriesText": {
                        "title": "Search queries as text",
                        "type": "string",
                        "description": "Paste one query per line or comma-separated."
                    },
                    "searchEngines": {
                        "title": "Search engines",
                        "type": "array",
                        "description": "News sources to monitor.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "google",
                                "bing"
                            ],
                            "enumTitles": [
                                "Google News",
                                "Bing News"
                            ]
                        },
                        "default": [
                            "google",
                            "bing"
                        ]
                    },
                    "geo": {
                        "title": "Country (gl)",
                        "type": "string",
                        "description": "Country/market code, e.g. US, GB, CA, FR, DE.",
                        "default": "US"
                    },
                    "language": {
                        "title": "Language (hl)",
                        "type": "string",
                        "description": "Language code, e.g. en, fr, es, de.",
                        "default": "en"
                    },
                    "maxItemsPerQuery": {
                        "title": "Max articles per query",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Cap on articles kept per query per search engine.",
                        "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 (same link) across all queries.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
