# Bing News Scraper - Brand & Competitor Monitoring (`groupoject/bing-news-scraper`) Actor

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

- **URL**: https://apify.com/groupoject/bing-news-scraper.md
- **Developed by:** [Group Oject](https://apify.com/groupoject) (community)
- **Categories:** News, Automation, AI
- **Stats:** 2 total users, 1 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

## Bing News Scraper - Brand & Competitor Monitoring

**Scrape Bing News in bulk by search query and get clean, structured article data. Fast, reliable, no API key.**

Drop in your search terms and get back matching Bing News articles: title, source, publish date, snippet, and link. Built for brand monitoring, competitor tracking, market research, media alerts, and content pipelines.

> Works out of the box: reads Bing News public RSS feeds. No API key, login, browser, or proxy needed for normal volumes.

---

### What it does

For each search query, the Actor reads Bing News search RSS and extracts structured article data. Output is one row per article, deduplicated across all queries.

Use it as a Bing News API alternative for monitoring brands, competitors, industries, tickers, executives, and topics.

---

### Who it's for

- **PR & comms teams** - monitor brand, executives, crisis topics, and competitor coverage.
- **Market researchers & analysts** - track an industry, ticker, or theme over time.
- **Content & SEO teams** - find current news angles and publisher sources.
- **Journalists** - sweep a beat across many search queries.
- **Builders** - pipe a structured Bing News feed into dashboards, alerts, or AI workflows.

---

### Popular use cases

- **Brand monitoring** - track mentions of your company, products, founders, and executives.
- **Competitor news tracking** - monitor launches, funding, hiring, lawsuits, partnerships, and pricing changes.
- **Industry trend monitoring** - follow themes like AI regulation, climate tech, fintech, or healthcare policy.
- **Stock and market news feeds** - collect recent Bing News results for tickers, companies, and sectors.
- **PR and crisis alerts** - schedule searches around sensitive topics and export fresh coverage.
- **Cross-source monitoring** - pair with Google News Scraper to compare coverage across search engines.

---

### Ready-to-run task ideas

#### Brand News Monitoring

```json
{
  "queriesText": "your brand name\nyour ceo name\nyour main competitor\nyour product line",
  "geo": "US",
  "language": "en",
  "maxItemsPerQuery": 50,
  "dedupe": true,
  "maxConcurrency": 2
}
````

#### Competitor Launch Tracker

```json
{
  "queries": [
    "competitor funding",
    "competitor product launch",
    "competitor partnership",
    "competitor acquisition"
  ],
  "geo": "US",
  "language": "en",
  "maxItemsPerQuery": 50,
  "dedupe": true
}
```

#### AI Industry News Feed

```json
{
  "queries": [
    "artificial intelligence regulation",
    "generative AI startups",
    "AI search engines",
    "large language models"
  ],
  "geo": "US",
  "language": "en",
  "maxItemsPerQuery": 50,
  "dedupe": true
}
```

#### Stock Market News Monitor

```json
{
  "queries": [
    "Nvidia stock news",
    "Tesla stock news",
    "Microsoft earnings",
    "Federal Reserve interest rates"
  ],
  "geo": "US",
  "language": "en",
  "maxItemsPerQuery": 50,
  "dedupe": true
}
```

#### Crisis & PR Alert Feed

```json
{
  "queries": [
    "\"your brand\" lawsuit",
    "\"your brand\" outage",
    "\"your brand\" data breach",
    "\"your brand\" controversy"
  ],
  "geo": "US",
  "language": "en",
  "maxItemsPerQuery": 50,
  "dedupe": true,
  "maxConcurrency": 2
}
```

***

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `queries` | string\[] | - | Search terms |
| `queriesText` | string | - | Queries as text, one per line or comma-separated |
| `geo` | string | `"US"` | Country code used to build Bing market, e.g. `US`, `GB`, `CA`, `FR`, `DE` |
| `language` | string | `"en"` | Language code used to build Bing market, e.g. `en`, `fr`, `es`, `de` |
| `maxItemsPerQuery` | integer | `50` | Cap per query |
| `maxQueries` | integer | `100` | Max search queries |
| `dedupe` | boolean | `true` | Remove duplicate articles across queries |
| `requestDelayMs` | integer | `500` | Delay between feed requests |
| `maxConcurrency` | integer | `3` | Parallel feed requests |
| `proxyConfiguration` | object | - | Optional, for high volume |

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

#### Example input

```json
{
  "queries": ["openai", "climate tech", "interest rates"],
  "geo": "US",
  "language": "en",
  "maxItemsPerQuery": 50
}
```

***

### Output

One dataset row per article:

```json
{
  "query": "openai",
  "queryType": "search",
  "title": "OpenAI ships new model and tools",
  "bingNewsUrl": "https://www.bing.com/news/apiclick.aspx?...",
  "articleUrl": "https://www.theverge.com/openai...",
  "source": "The Verge",
  "publishedAt": "2026-06-09T14:30:00.000Z",
  "snippet": "OpenAI ships new model The Verge",
  "guid": "ABC123",
  "position": 1,
  "geo": "US",
  "language": "en",
  "fetchedAt": "2026-06-18T12:00:00.000Z"
}
```

#### Key-value store outputs

- `HEADLINES_BY_SOURCE` - article titles grouped by publisher
- `SUMMARY` - totals, top sources, top queries by volume
- `ERRORS` - any failed feeds

***

### Notes & limitations

- `bingNewsUrl` is the Bing News result link returned by the RSS feed.
- `articleUrl` is decoded from Bing's result link when Bing includes the publisher URL.
- Bing News RSS favors recent coverage and is not a full historical archive.
- Results are localized by `geo` + `language`, combined into Bing market values such as `en-US`.
- For very high volume or repeated scheduled runs, enable Apify Proxy to reduce rate-limit risk.
- Public RSS data only: no login, paywalled content, or private content.

***

### Related tools

- [Google News Scraper](https://apify.com/groupoject/google-news-scraper) - monitor Google News by keyword.
- [Google AI Overview Tracker](https://apify.com/groupoject/google-ai-overview-tracker) - track brand visibility and citations in AI Overviews.
- [Google Autocomplete Keyword Scraper](https://apify.com/groupoject/google-autocomplete-scraper) - collect keyword suggestions.

***

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

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

Bing News market country 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 (Bing News RSS returns a limited recent feed).

## `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"
  ],
  "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: title, source, publish date, snippet, Bing 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/bing-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/bing-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/bing-news-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bing News Scraper - Brand & Competitor Monitoring",
        "description": "Scrape Bing News by keyword for brand monitoring, competitor tracking, market research, headlines, sources, dates, and snippets. No API key required.",
        "version": "1.0",
        "x-build-id": "kDZ5EdtKdLvn9lS9S"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/groupoject~bing-news-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-groupoject-bing-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~bing-news-scraper/runs": {
            "post": {
                "operationId": "runs-sync-groupoject-bing-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~bing-news-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-groupoject-bing-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 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."
                    },
                    "geo": {
                        "title": "Country (gl)",
                        "type": "string",
                        "description": "Bing News market country 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 (Bing News RSS returns a limited recent feed).",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
