# Bloomberg News Scraper (`khadinakbar/bloomberg-news-scraper`) Actor

Scrape Bloomberg news headlines, summaries, authors, tickers and images from Bloomberg's public section feeds. HTTP-only, MCP-ready.

- **URL**: https://apify.com/khadinakbar/bloomberg-news-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** News, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 article scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Bloomberg News Scraper

Pull the latest **Bloomberg news** as clean, structured records — headlines, summaries, authors, stock tickers, images, and publish times — across 13 Bloomberg sections. HTTP-only, fast, and built for AI agents (MCP-ready).

### What it does

This actor reads Bloomberg's **public section feeds** and returns one structured record per article. It is a **headline & summary news monitor**, ideal for tracking what Bloomberg is publishing in near-real-time and keying that coverage to stock tickers.

For every article you get:

| Field | Description |
|---|---|
| `title` | Article headline |
| `summary` | Bloomberg's article summary / dek |
| `url` | Canonical Bloomberg article URL |
| `authors` | List of author names |
| `publishedAt` | Publish time (ISO 8601, UTC) |
| `section` | Source section (e.g. `markets`, `crypto`) |
| `tickers` | Stock-symbol tags, e.g. `["NMS:IREN"]` (not every article has them) |
| `imageUrl` | Lead image URL |
| `imageCaption` | Image caption, when present |
| `guid` | Stable unique article id (the URL) |
| `scrapedAt` | When this run captured the item (ISO 8601) |

Each run also writes a machine-readable `OUTPUT` record to the default key-value store with the selected sections, filters, feed counts, dataset item count, charged article count, estimated event cost, and final status message.

### When to use it

- **Finance / markets monitoring** — watch Bloomberg coverage for specific tickers (`AAPL`, `TSLA`, `IREN`).
- **News agents & LLM pipelines** — a clean JSON feed of Bloomberg headlines to summarize, classify, or alert on.
- **Topic tracking** — filter the feeds by keyword (`AI`, `Fed`, `oil`) across sections.
- **Dashboards & newsletters** — a recurring source of fresh Bloomberg headlines with images.

#### When NOT to use it

- **Full article body text** is **not** included. Bloomberg article pages are paywalled and bot-protected; this actor returns the headline, summary, and metadata that Bloomberg publishes in its own feeds — not the full copyrighted article body.
- It is not a search of Bloomberg's entire archive. It returns the latest articles currently in the section feeds (roughly the most recent 25–100 items per section).

### Sections available

`markets`, `technology`, `politics`, `business`, `economics`, `wealth`, `green`, `crypto`, `pursuits`, `industries`, `citylab`, `equality`, `businessweek`

### Input

```json
{
  "sections": ["markets", "technology"],
  "searchKeywords": ["AI", "Fed"],
  "tickers": ["AAPL", "NVDA"],
  "sinceHours": 24,
  "maxItems": 100
}
````

| Input | Type | Default | Notes |
|---|---|---|---|
| `sections` | array | `["markets"]` | One or more sections to pull. |
| `searchKeywords` | array | `[]` | Keep only articles whose headline/summary contains a keyword (case-insensitive). |
| `tickers` | array | `[]` | Keep only articles tagged with one of these stock symbols. |
| `sinceHours` | integer | `0` | Only articles newer than N hours. `0` = no time filter. |
| `maxItems` | integer | `100` | Hard cap on articles scraped & billed. |
| `proxyConfiguration` | object | off | Optional. Feeds work without a proxy; only enable on transient blocks. |

### Output sample

```json
{
  "title": "AI Cloud Provider IREN Gets Logo on Golden State Warriors Jerseys",
  "summary": "The latest sign of the AI data center boom going mainstream...",
  "url": "https://www.bloomberg.com/news/articles/2026-06-25/ai-neocloud-iren-...",
  "authors": ["Dina Bass"],
  "publishedAt": "2026-06-25T13:00:00.000Z",
  "section": "technology",
  "tickers": ["NMS:IREN"],
  "imageUrl": "https://assets.bwbx.io/images/users/.../1200x-1.jpg",
  "imageCaption": "An IREN badge will adorn Warriors game jerseys.",
  "guid": "https://www.bloomberg.com/news/articles/2026-06-25/ai-neocloud-iren-...",
  "scrapedAt": "2026-06-25T19:19:05.527Z"
}
```

### Pricing

Pay-per-event:

- **Actor start:** $0.00005 per run
- **Article scraped:** $0.003 per article returned

A typical 100-article run costs about **$0.30**. You are only charged for articles actually returned — empty/filtered runs cost effectively nothing.

### Use with AI agents (MCP)

This actor is MCP-ready. Point any MCP client at the Apify MCP server and the tool returns structured Bloomberg news for a query. Narrow input (sections + filters) in, clean JSON out, predictable per-article cost.

### Run via API

```bash
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~bloomberg-news-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"sections":["markets","crypto"],"tickers":["BTC"],"maxItems":50}'
```

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('khadinakbar/bloomberg-news-scraper').call({
  sections: ['technology'],
  searchKeywords: ['AI'],
  maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### FAQ

**Does it return the full article text?** No. Bloomberg article bodies are paywalled and bot-protected. This actor returns the headline, summary, author, tickers, image, and publish time that Bloomberg publishes in its public feeds.

**Do I need a proxy?** No. The feeds respond fine without one. A proxy option exists only as a fallback for transient network issues.

**Why are some articles missing tickers or images?** Not every Bloomberg article carries stock-symbol tags or a lead image. Those fields are populated when present and `null`/empty otherwise.

**How fresh is the data?** Feeds reflect Bloomberg's latest published articles, typically updated continuously through the day.

### Legal

This actor collects only publicly available data from Bloomberg's own public RSS/section feeds. It does not bypass paywalls and does not return full paywalled article bodies. Headlines, summaries, and article metadata remain the property of Bloomberg L.P. You are responsible for ensuring your use of the data complies with Bloomberg's Terms of Service and applicable law, including copyright. Use the output for monitoring, research, and indexing — not for republishing Bloomberg's content as your own.

# Actor input Schema

## `sections` (type: `array`):

Bloomberg news sections to pull. Each maps to a public Bloomberg RSS feed (e.g. 'markets', 'technology', 'crypto'). Select one or more. Defaults to 'markets'. This is NOT a free-text search of all Bloomberg — it returns the latest articles published in the chosen sections.

## `searchKeywords` (type: `array`):

Optional case-insensitive keywords to keep only articles whose headline or summary contains at least one of them (e.g. \['AI','Fed','oil']). Leave empty to return all articles in the selected sections. This filters the section feeds; it does not search Bloomberg's full archive.

## `tickers` (type: `array`):

Optional stock tickers to keep only articles tagged with at least one of them (e.g. \['AAPL','IREN','TSLA']). Matches Bloomberg's stock-symbol tags, ignoring the exchange prefix. Leave empty to disable ticker filtering. NOT every article carries tickers.

## `sinceHours` (type: `integer`):

Optional recency window. If set to e.g. 24, only articles published within the last 24 hours are returned. Use 0 (default) to return everything currently in the feeds (feeds hold roughly the latest 25-100 items per section).

## `maxItems` (type: `integer`):

Hard cap on the number of articles scraped and billed across all selected sections. Each article counts as one billable result. Defaults to 100. Set lower for cheap test runs.

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

Optional Apify proxy. Bloomberg's RSS feeds work fine WITHOUT a proxy, so leave this off unless you hit a transient network block. If enabled, datacenter proxy is sufficient.

## Actor input object example

```json
{
  "sections": [
    "markets",
    "technology"
  ],
  "searchKeywords": [],
  "tickers": [],
  "sinceHours": 0,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Dataset items containing Bloomberg article headlines, summaries, authors, sections, stock tickers, image metadata, publish times, source URLs, and scrape timestamps.

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

Machine-readable run summary with selected sections, filters, feed counts, dataset item count, charged article count, estimated event cost, and status message.

# 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 = {
    "sections": [
        "markets",
        "technology"
    ],
    "searchKeywords": [],
    "tickers": [],
    "sinceHours": 0,
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/bloomberg-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 = {
    "sections": [
        "markets",
        "technology",
    ],
    "searchKeywords": [],
    "tickers": [],
    "sinceHours": 0,
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/bloomberg-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 '{
  "sections": [
    "markets",
    "technology"
  ],
  "searchKeywords": [],
  "tickers": [],
  "sinceHours": 0,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call khadinakbar/bloomberg-news-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bloomberg News Scraper",
        "description": "Scrape Bloomberg news headlines, summaries, authors, tickers and images from Bloomberg's public section feeds. HTTP-only, MCP-ready.",
        "version": "0.1",
        "x-build-id": "FF34wceK68JQI3NwA"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~bloomberg-news-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-bloomberg-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/khadinakbar~bloomberg-news-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-bloomberg-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/khadinakbar~bloomberg-news-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-bloomberg-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": {
                    "sections": {
                        "title": "Bloomberg sections",
                        "type": "array",
                        "description": "Bloomberg news sections to pull. Each maps to a public Bloomberg RSS feed (e.g. 'markets', 'technology', 'crypto'). Select one or more. Defaults to 'markets'. This is NOT a free-text search of all Bloomberg — it returns the latest articles published in the chosen sections.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "markets",
                                "technology",
                                "politics",
                                "business",
                                "economics",
                                "wealth",
                                "green",
                                "crypto",
                                "pursuits",
                                "industries",
                                "citylab",
                                "equality",
                                "businessweek"
                            ],
                            "enumTitles": [
                                "Markets",
                                "Technology",
                                "Politics",
                                "Business",
                                "Economics",
                                "Wealth",
                                "Green",
                                "Crypto",
                                "Pursuits",
                                "Industries",
                                "CityLab",
                                "Equality",
                                "Businessweek"
                            ]
                        },
                        "default": [
                            "markets"
                        ]
                    },
                    "searchKeywords": {
                        "title": "Keyword filter",
                        "type": "array",
                        "description": "Optional case-insensitive keywords to keep only articles whose headline or summary contains at least one of them (e.g. ['AI','Fed','oil']). Leave empty to return all articles in the selected sections. This filters the section feeds; it does not search Bloomberg's full archive.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "tickers": {
                        "title": "Ticker filter",
                        "type": "array",
                        "description": "Optional stock tickers to keep only articles tagged with at least one of them (e.g. ['AAPL','IREN','TSLA']). Matches Bloomberg's stock-symbol tags, ignoring the exchange prefix. Leave empty to disable ticker filtering. NOT every article carries tickers.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "sinceHours": {
                        "title": "Only articles newer than (hours)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional recency window. If set to e.g. 24, only articles published within the last 24 hours are returned. Use 0 (default) to return everything currently in the feeds (feeds hold roughly the latest 25-100 items per section).",
                        "default": 0
                    },
                    "maxItems": {
                        "title": "Max articles",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Hard cap on the number of articles scraped and billed across all selected sections. Each article counts as one billable result. Defaults to 100. Set lower for cheap test runs.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy (optional)",
                        "type": "object",
                        "description": "Optional Apify proxy. Bloomberg's RSS feeds work fine WITHOUT a proxy, so leave this off unless you hit a transient network block. If enabled, datacenter proxy is sufficient.",
                        "default": {
                            "useApifyProxy": 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
