# Bloomberg News Scraper - Search by Keyword, Category & Region (`xtracto/bloomberg-news-search`) Actor

Extract Bloomberg articles using keyword search or category browsing with deep pagination, regional filters, and high-speed API-based scraping. no browser and no login required

- **URL**: https://apify.com/xtracto/bloomberg-news-search.md
- **Developed by:** [Xtractoo](https://apify.com/xtracto) (community)
- **Categories:** Lead generation, News, Other
- **Stats:** 3 total users, 1 monthly users, 85.7% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 results

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

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 Search

Discover and collect Bloomberg news articles seamlessly by **category**, **edition**, and **keyword**. This high-performance actor is designed to provide you with the most reliable and up-to-date business news directly from Bloomberg.

### 🚀 Key Advantages / Why Use This Actor?

- **Zero Proxy Costs**: You do not need expensive residential proxies, headless browsers, or complicated login mechanisms.
- **Deep Native Pagination**: Retrieve thousands of articles by specifying higher pagination limits. The actor natively navigates Bloomberg's backend API to fetch exhaustive search results.
- **Lightning Fast Compilation**: Experience scraping execution that takes just seconds, not minutes. Ideal for large-scale and high-frequency data pipelines.
- **Unrestricted Regional Tracking**: Whether you are monitoring the U.S. markets or the Asian economy, this actor supports 9 global editions.
- **Versatile Input**: Supports everything from direct keyword inquiries to category-wide timeline monitoring.

### 💡 Use Cases

1. **Market Sentiment Analysis**: Search specific company tickers (e.g., "Nvidia" or "TSLM") and pull high volumes of recent news data to feed into your sentiment analysis models.
2. **Competitive & Industry Intelligence**: Monitor specific industry categories (like *Technology* or *Markets*) every hour to track key macro-economic policy announcements or competitor launches.
3. **Financial Research & Archiving**: Programmatically build a robust archive of global financial events, sorting precisely by published dates and categories.
4. **Automated Trading Feeds**: Pipe the ultra-fast JSON output directly into your trading algorithms or news aggregator to generate live signals based on Bloomberg's top headlines.

---

### 📥 Input Params

| Parameter | Type | Default | Description |
|---|---|---|---|
| `categories` | Dropdown List | `[]` | Select one or more Bloomberg categories to scrape (e.g., markets, technology, crypto). Leave empty if you solely want keyword searches. |
| `edition` | Dropdown | `"global"` | Regional edition context (US, UK, Asia, Japan, etc.). |
| `keywords` | Array of strings | `[]` | Exact keywords to query. If no categories are selected, it queries the Bloomberg Search API directly! |
| `maxPages` | Integer | `3` | Maximum number of pages to navigate. Set higher limits (e.g., 20) to fetch hundreds of older articles from pagination. |

---

### 📤 Output

The actor parses data universally, guaranteeing that no matter whether you scan by *Categories* or *Keywords*, you will always receive the same, structured JSON format dynamically mapped for your database:

```json
{
  "title": "Trump Encourages Companies Not to Seek Tariff Refunds",
  "url": "https://www.bloomberg.com/news/articles/2026-04-21/trump-encourages-companies-not-to-seek-tariff-refunds",
  "description": "President Donald Trump said he’d remember companies that decline to seek refunds on duties paid after the Supreme Court struck down a large swath of his tariffs.",
  "published": "2026-04-21T14:55:22.000Z",
  "author": "Laura Curtis and Hadriana Lowenkron",
  "category": "politics",
  "image_url": "https://assets.bwbx.io/images/users/.../v1/-1x-1.jpg",
  "resourceId": "TDUHSNT9NJLU00",
  "readings": [
    {
      "voice": "Matthew",
      "duration_ms": 116736,
      "url": "https://assets.bwbx.io/s3/readings/...mp3"
    }
  ],
  "rawKnnScore": 0.006628017,
  "seriesTitle": "Evening Briefing Europe",
  "source": "bloomberg_search"
}
````

#### JSON Field Dictionary

| Field | Type | Description / Usage |
|---|---|---|
| `title` | String | The normalized headline of the article. |
| `url` | String | The absolute link directly to the Bloomberg article content. |
| `description` | String | The extracted summary or sub-headline outlining the news item. |
| `published` | String | The timestamp of publication (formatted as ISO 8601 UTC). |
| `author` | String | The cleaned byline name(s) of the journalist(s) who wrote the article. |
| `category` | String | The primary eyebrow, section tag, or category tracked by Bloomberg. |
| `image_url` | String | The standardized absolute URL pointing to the featured thumbnail or cover image. |
| `resourceId` | String / Null | *(Search Mode Only)* The internal Bloomberg backend unique ID. Always returns `null` during Category iterations or if unavailable in search. |
| `readings` | Array / Null | *(Search Mode Only)* Contains audio text-to-speech file metadata. Always returns `null` during Category iterations or if unavailable in search. |
| `rawKnnScore` | Float / Null | *(Search Mode Only)* Bloomberg's relevancy weight for the queried keyword. Use this for sorting. Always returns `null` during Category iterations or if unavailable in search. |
| `seriesTitle` | String / Null | *(Search Mode Only)* Indicates if the article belongs to a recurring column/broadcast series. Always returns `null` during Category iterations or if unavailable in search. |
| `source` | String | The scraping source metadata (e.g., `bloomberg_search` or `bloomberg:markets`). |

> **Note on Category mode:** To maintain schema consistency across databases, if an article does not possess data for the four Search-exclusive fields (or if you are running a generic `Categories` scrape instead of a `Keywords` scrape), the actor safely defaults their values to `null`.
>
> **Why are these fields null during Category scrapes?**\
> When you iterate over *Categories*, the actor extracts formatted news timelines directly from Bloomberg's Next.js frontend rendering state. Because frontend UI components only require display metrics, internal proprietary data (such as algorithm weights like `rawKnnScore` or internal CMS tracking hashes like `resourceId` and `seriesTitle`) are stripped out. You will exclusively find these metrics surfaced when directly querying Bloomberg's internal database via a *Keyword* Search configuration.

### 🌍 Available Categories & Editions

**Categories:** `markets`, `technology`, `politics`, `economics`, `industries`, `wealth`, `pursuits`, `opinion`, `businessweek`, `green`, `crypto`, `citylab`

**Editions:** `global`, `us`, `uk`, `canada`, `latin-america`, `europe`, `asia`, `middle-east`, `africa`, `japan`

### 🔗 Pair With

Combine this actor with downstream workflow processors:

- **Bloomberg Article Scraper** — Route the output `url` from this actor into the Article Scraper to download the full, multi-page article texts and body contents.

# Actor input Schema

## `categories` (type: `array`):

Categories to scrape. Leave empty to scrape all 12 categories.

## `edition` (type: `string`):

Bloomberg regional edition.

## `keywords` (type: `array`):

Optional keywords. If categories are set, filters results. If no categories, uses Bloomberg Search API per keyword.

## `maxPages` (type: `integer`):

Max pages per category (1 = initial page only 10 articles, 2 = +10 more via API, etc).

## Actor input object example

```json
{
  "categories": [
    "markets",
    "technology"
  ],
  "edition": "global",
  "keywords": [],
  "maxPages": 3
}
```

# 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 = {
    "categories": [
        "markets",
        "technology"
    ],
    "keywords": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("xtracto/bloomberg-news-search").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 = {
    "categories": [
        "markets",
        "technology",
    ],
    "keywords": [],
}

# Run the Actor and wait for it to finish
run = client.actor("xtracto/bloomberg-news-search").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 '{
  "categories": [
    "markets",
    "technology"
  ],
  "keywords": []
}' |
apify call xtracto/bloomberg-news-search --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bloomberg News Scraper - Search by Keyword, Category & Region",
        "description": "Extract Bloomberg articles using keyword search or category browsing with deep pagination, regional filters, and high-speed API-based scraping. no browser and no login required",
        "version": "0.1",
        "x-build-id": "wwBkE6TXyRB0Tau91"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/xtracto~bloomberg-news-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-xtracto-bloomberg-news-search",
                "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/xtracto~bloomberg-news-search/runs": {
            "post": {
                "operationId": "runs-sync-xtracto-bloomberg-news-search",
                "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/xtracto~bloomberg-news-search/run-sync": {
            "post": {
                "operationId": "run-sync-xtracto-bloomberg-news-search",
                "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": {
                    "categories": {
                        "title": "Bloomberg Categories",
                        "type": "array",
                        "description": "Categories to scrape. Leave empty to scrape all 12 categories.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "markets",
                                "technology",
                                "politics",
                                "economics",
                                "industries",
                                "wealth",
                                "pursuits",
                                "opinion",
                                "businessweek",
                                "green",
                                "crypto",
                                "citylab"
                            ]
                        },
                        "default": []
                    },
                    "edition": {
                        "title": "Bloomberg Edition",
                        "enum": [
                            "global",
                            "us",
                            "uk",
                            "canada",
                            "latin-america",
                            "europe",
                            "asia",
                            "middle-east",
                            "africa",
                            "japan"
                        ],
                        "type": "string",
                        "description": "Bloomberg regional edition.",
                        "default": "global"
                    },
                    "keywords": {
                        "title": "Keyword Filter",
                        "type": "array",
                        "description": "Optional keywords. If categories are set, filters results. If no categories, uses Bloomberg Search API per keyword.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "maxPages": {
                        "title": "Max Pages",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Max pages per category (1 = initial page only 10 articles, 2 = +10 more via API, etc).",
                        "default": 3
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
