# News Pulse — Trending & Breaking News API (Brazil, US, LatAm) (`moiseh/news-pulse-rising-stories`) Actor

Trending news API: stories rising right now across 45+ outlets in Portuguese, English and Spanish (Brazil, US, LatAm), clustered with outlet counts, breaking / rising / fading trend and topic heat. A clustered alternative to Google News scrapers. Metadata only.

- **URL**: https://apify.com/moiseh/news-pulse-rising-stories.md
- **Developed by:** [Moisés Heberle](https://apify.com/moiseh) (community)
- **Categories:** News, AI, Marketing
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## News Pulse — Trending & Breaking News API (Brazil, US, LatAm)

**English** · [Português (Brasil)](#português-brasil)

Know which stories are **rising across news outlets right now** — not just a list of
headlines. News Pulse reads 45+ outlets' own feeds in **Portuguese (Brazil), English
and Spanish**, plus GDELT and Wikipedia's most-read list, every 15 minutes, groups the
headlines of the same story and tells you how many distinct outlets carry it, how
many joined in the last 3 hours and whether it is **breaking, rising, steady or
fading**.

#### What people use it for

- **Newsrooms, YouTubers and content creators**: what to cover next — the story that
  five outlets picked up in the last hour, before it is everywhere.
- **Media and brand monitoring**: a story about your sector, company or country the
  moment several outlets carry it (`topic`, or a scheduled run with a webhook).
- **AI agents and LLM apps**: a fresh, deduplicated "what is happening now" feed in
  JSON, one item per story instead of hundreds of near-identical headlines.
- **Market and risk signals**: breaking stories by country and language, with how fast
  outlets are joining.

#### Why this Actor

- **Clustering, not scraping.** News scrapers give you thousands of headlines; this
  gives you the 20 stories that matter, each with its outlets.
- **Rising detection.** A story is *breaking* when first seen in the last 3 h by 2+
  outlets and *rising* when many outlets just started carrying it.
- **Brazil and Latin America covered**: g1, Folha, UOL, O Globo, Estadão, CNN Brasil,
  Agência Brasil, Infobae, Clarín, El País… alongside The Guardian, NPR, Al Jazeera,
  DW, France 24 and more.
- **Wikipedia attention**: a story named by one of yesterday's most-read articles
  scores higher.
- **Topic heat**: give a subject ("El Niño", "Krakow shooting") and get a 0–100 heat
  score from outlets in the last 24 h and its Wikipedia pageview spike.
- **Webhook** at the end of the run, and a schedule in Apify = alerts every N minutes.
- Similar services charge US$200–1,749 a month.

#### Input

| Field | Meaning |
|---|---|
| `lang` | `pt`, `en`, `es`, comma-separated (empty = all) |
| `country` | where the outlets are based: `BR`, `US`, `GB`, `ES`, `AR`, `MX`… |
| `since` | `90m`, `6h`, `2d` or an ISO time (≤ 72 h; default 24h) |
| `min_outlets` | only stories carried by at least this many outlets (default 3) |
| `trend` | `breaking`, `rising`, `steady` or `fading` |
| `maxStories` | how many stories (each one is a charged result; default 20) |
| `topic` | fill it to switch to **topic-heat** mode (one result) |
| `webhookUrl` | an https URL that receives the results as JSON when the run ends |

#### Output (one dataset item per story)

```json
{
  "id": "ba44d70f9c549cac",
  "headline": "Trump offers White House press secretary role to Dana White",
  "trend": "steady",
  "rising_score": 15.28,
  "outlets_count": 11,
  "new_outlets_recent": 3,
  "articles_count": 12,
  "languages": ["en"],
  "countries": ["US", "GB", "FR", "IN", "DE", "QA"],
  "first_seen": "2026-11-07T21:10:00+00:00",
  "last_seen": "2026-11-08T04:27:00+00:00",
  "keywords": ["white", "trump", "press", "secretary", "dana"],
  "wikipedia": null,
  "articles": [
    { "title": "Trump offers UFC chief Dana White press secretary job", "outlet": "DW",
      "domain": "dw.com", "url": "https://www.dw.com/…", "published_at": "2026-11-08T01:02:00+00:00",
      "lang": "en", "country": "DE" }
  ]
}
```

Only metadata (title, outlet, link, time, language) — never article text. Links go to
the publishers.

#### Pricing (pay per event)

- **story** — one story pushed to the dataset.
- **topic-heat** — one topic measured.

You never pay more than the maximum cost per run you set: the Actor stops pushing
when it is reached.

#### How it works and data sources

The Actor is a thin client of the hosted **News Pulse API**, which collects the
sources every 15 minutes: outlets' own RSS feeds, the GDELT DOC 2.0 API (open data)
and the Wikimedia REST API (pageviews CC0). It does not use Google News. The same API
is also on RapidAPI.

***

### Português (Brasil)

Descubra quais notícias estão **subindo agora em vários veículos** — não só uma lista
de manchetes. O News Pulse lê os feeds próprios de mais de 45 veículos em
**português, inglês e espanhol**, além do GDELT e da lista dos artigos mais lidos da
Wikipédia, a cada 15 minutos; agrupa as manchetes da mesma história e diz quantos
veículos diferentes a publicam, quantos entraram nas últimas 3 horas e se ela está
**surgindo (breaking), subindo (rising), estável ou esfriando**.

#### Para que serve

- **Redações, YouTubers e criadores de conteúdo**: o que cobrir agora — a história que
  cinco veículos pegaram na última hora, antes de estar em todo lugar.
- **Monitoramento de mídia e marca**: uma notícia sobre o seu setor, empresa ou país
  assim que vários veículos a publicam (`topic`, ou uma execução agendada com webhook).
- **Agentes de IA e apps com LLM**: um feed em JSON, sem repetições, de "o que está
  acontecendo agora" — um item por história, não centenas de manchetes iguais.
- **Sinais de mercado e risco**: histórias surgindo por país e idioma, e a velocidade
  com que os veículos entram.

#### Por que este Actor

- **Agrupa, não só raspa**: em vez de milhares de manchetes, as 20 histórias que
  importam, cada uma com seus veículos.
- **Detecta o que está subindo**: *breaking* quando apareceu nas últimas 3 h em 2+
  veículos; *rising* quando muitos veículos acabaram de entrar.
- **Brasil e América Latina**: g1, Folha, UOL, O Globo, Estadão, CNN Brasil, Agência
  Brasil, Metrópoles, Poder360, Infobae, Clarín, El País… e também The Guardian, NPR,
  Al Jazeera, DW, France 24.
- **Atenção na Wikipédia**: uma história citada por um dos artigos mais lidos de
  ontem ganha pontos.
- **Temperatura de um assunto** (`topic`): de 0 a 100, pelos veículos nas últimas 24 h
  e o pico de visualizações na Wikipédia.
- **Webhook** ao fim da execução; com um agendamento na Apify, vira um alerta a cada N
  minutos.

#### Entrada

`lang` (`pt`, `en`, `es`), `country` (país dos veículos: `BR`, `US`…), `since` (`6h`,
`2d`…, até 72 h), `min_outlets` (mínimo de veículos, padrão 3), `trend`, `maxStories`
(cada história é um resultado cobrado), `topic` (modo temperatura) e `webhookUrl`.

#### Saída

Um item por história: manchete, tendência, pontuação, número de veículos, veículos
novos nas últimas 3 h, idiomas, países, primeira e última aparição, palavras-chave,
artigo da Wikipédia (quando houver) e um artigo por veículo (título, veículo, link,
hora). Só metadados — nunca o texto das matérias.

#### Preço (por evento)

**story** por história entregue; **topic-heat** por assunto medido. Nunca passa do
custo máximo por execução que você definir.

#### Fontes

Feeds RSS dos próprios veículos, a API DOC 2.0 do GDELT (dados abertos) e a API REST
da Wikimedia (visualizações CC0). Não usa o Google News. A mesma API está no RapidAPI.

# Actor input Schema

## `lang` (type: `string`):

Comma-separated: pt, en, es. Empty = all.

## `country` (type: `string`):

ISO 3166-1 alpha-2 codes where the outlets are based, comma-separated (BR, US, GB, ES, AR, MX…). Empty = all.

## `since` (type: `string`):

"90m", "6h", "2d" or an ISO 8601 time. At most 72 hours.

## `min_outlets` (type: `integer`):

Only stories carried by at least this many distinct outlets.

## `trend` (type: `string`):

Only stories with this trend.

## `maxStories` (type: `integer`):

Each story is one charged result.

## `topic` (type: `string`):

A subject such as "Krakow shooting" or "El Niño": returns one heat score (0–100) from outlets in the last 24 h and the Wikipedia pageview spike, instead of the stories.

## `webhookUrl` (type: `string`):

Optional https:// URL that receives the results as one JSON POST when the run ends.

## Actor input object example

```json
{
  "lang": "pt,en",
  "since": "24h",
  "min_outlets": 3,
  "maxStories": 20
}
```

# Actor output Schema

## `stories` (type: `string`):

Rising stories: headline, trend, score, outlets, languages, first and last seen, keywords — or one topic-heat item when a topic was given.

## `storiesJson` (type: `string`):

Every field of each item, including the outlets and their headlines.

# 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 = {
    "lang": "pt,en"
};

// Run the Actor and wait for it to finish
const run = await client.actor("moiseh/news-pulse-rising-stories").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 = { "lang": "pt,en" }

# Run the Actor and wait for it to finish
run = client.actor("moiseh/news-pulse-rising-stories").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "lang": "pt,en"
}' |
apify call moiseh/news-pulse-rising-stories --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,moiseh/news-pulse-rising-stories"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/hIQyJStbFNLKoKnCC/builds/GNbtGd44ejCdn3QTa/openapi.json
