Claude
Skills
Sign in
โ† Back

google-news

Included with Lifetime
$97 forever

Google News is a free news aggregator by Google that surfaces headlines from thousands of publishers worldwide. Use this skill to fetch top stories, topic feeds, location-specific news, and keyword searches via the public Google News RSS feeds. No API key or authentication is required.

Backend & APIs

What this skill does


# Google News RSS API

[Google News](https://news.google.com) is a free news aggregator that collects headlines from thousands of publishers around the world. Google exposes its feeds via public RSS 2.0 endpoints that require **no authentication or API key**.

---

## Base URL

```
https://news.google.com/rss
```

All feed URLs are built by appending paths and query parameters to this base.

---

## Query Parameters

Every feed URL accepts the following **query parameters** to control region and language:

| Parameter | Required | Description | Example |
|-----------|----------|-------------|---------|
| `hl` | Yes | Interface language / locale code | `en-US`, `fr`, `de`, `ja`, `pt-BR`, `es-419` |
| `gl` | Yes | Country / geographic location (ISO 3166-1 alpha-2) | `US`, `GB`, `IN`, `DE`, `JP`, `BR` |
| `ceid` | Yes | Compound locale key in the form `{gl}:{language}` | `US:en`, `GB:en`, `DE:de`, `JP:ja`, `BR:pt-419` |

> **Important:** All three parameters should be consistent. Mismatched values may return unexpected or empty results.

---

## Supported Locations (Validated)

The following locations have been tested and confirmed to return valid RSS feeds (HTTP 200):

| Location | `hl` | `gl` | `ceid` | Example URL |
|----------|------|------|--------|-------------|
| ๐Ÿ‡บ๐Ÿ‡ธ United States | `en-US` | `US` | `US:en` | `https://news.google.com/rss?hl=en-US&gl=US&ceid=US:en` |
| ๐Ÿ‡ฌ๐Ÿ‡ง United Kingdom | `en-GB` | `GB` | `GB:en` | `https://news.google.com/rss?hl=en-GB&gl=GB&ceid=GB:en` |
| ๐Ÿ‡ฎ๐Ÿ‡ณ India | `en-IN` | `IN` | `IN:en` | `https://news.google.com/rss?hl=en-IN&gl=IN&ceid=IN:en` |
| ๐Ÿ‡ฆ๐Ÿ‡บ Australia | `en-AU` | `AU` | `AU:en` | `https://news.google.com/rss?hl=en-AU&gl=AU&ceid=AU:en` |
| ๐Ÿ‡จ๐Ÿ‡ฆ Canada | `en-CA` | `CA` | `CA:en` | `https://news.google.com/rss?hl=en-CA&gl=CA&ceid=CA:en` |
| ๐Ÿ‡ฉ๐Ÿ‡ช Germany | `de` | `DE` | `DE:de` | `https://news.google.com/rss?hl=de&gl=DE&ceid=DE:de` |
| ๐Ÿ‡ซ๐Ÿ‡ท France | `fr` | `FR` | `FR:fr` | `https://news.google.com/rss?hl=fr&gl=FR&ceid=FR:fr` |
| ๐Ÿ‡ฏ๐Ÿ‡ต Japan | `ja` | `JP` | `JP:ja` | `https://news.google.com/rss?hl=ja&gl=JP&ceid=JP:ja` |
| ๐Ÿ‡ง๐Ÿ‡ท Brazil | `pt-BR` | `BR` | `BR:pt-419` | `https://news.google.com/rss?hl=pt-BR&gl=BR&ceid=BR:pt-419` |
| ๐Ÿ‡ฒ๐Ÿ‡ฝ Mexico | `es-419` | `MX` | `MX:es-419` | `https://news.google.com/rss?hl=es-419&gl=MX&ceid=MX:es-419` |
| ๐Ÿ‡ฎ๐Ÿ‡ฑ Israel | `en-IL` | `IL` | `IL:en` | `https://news.google.com/rss?hl=en-IL&gl=IL&ceid=IL:en` |

---

## Feed Types

### 1. Top Stories (Headlines)

Returns the current top stories for a given location.

**URL pattern:**
```
https://news.google.com/rss?hl={hl}&gl={gl}&ceid={gl}:{lang}
```

**Example โ€” US top stories:**
```
https://news.google.com/rss?hl=en-US&gl=US&ceid=US:en
```

---

### 2. Topic Feeds

Returns articles for a specific news topic / section.

**URL pattern:**
```
https://news.google.com/rss/topics/{TOPIC_ID}?hl={hl}&gl={gl}&ceid={gl}:{lang}
```

**Known Topic IDs (English, US):**

| Topic | Topic ID |
|-------|----------|
| World | `CAAqJggKIiBDQkFTRWdvSUwyMHZNRGx1YlY4U0FtVnVHZ0pWVXlnQVAB` |
| Nation / U.S. | `CAAqIggKIhxDQkFTRHdvSkwyMHZNRGxqTjNjU0FtVnVLQUFQAQ` |
| Business | `CAAqJggKIiBDQkFTRWdvSUwyMHZNRGx6TVdZU0FtVnVHZ0pWVXlnQVAB` |
| Technology | `CAAqJggKIiBDQkFTRWdvSUwyMHZNRGRqTVhZU0FtVnVHZ0pWVXlnQVAB` |
| Entertainment | `CAAqJggKIiBDQkFTRWdvSUwyMHZNREpxYW5RU0FtVnVHZ0pWVXlnQVAB` |
| Sports | `CAAqJggKIiBDQkFTRWdvSUwyMHZNRFp1ZEdvU0FtVnVHZ0pWVXlnQVAB` |
| Science | `CAAqJggKIiBDQkFTRWdvSUwyMHZNRFp0Y1RjU0FtVnVHZ0pWVXlnQVAB` |
| Health | `CAAqIQgKIhtDQkFTRGdvSUwyMHZNR3QwTlRFU0FtVnVLQUFQAQ` |

**Example โ€” Technology news (US):**
```
https://news.google.com/rss/topics/CAAqJggKIiBDQkFTRWdvSUwyMHZNRGRqTVhZU0FtVnVHZ0pWVXlnQVAB?hl=en-US&gl=US&ceid=US:en
```

> **Note:** Topic IDs are base64-encoded protocol buffer strings. They can differ by language/region. The IDs above are for `en-US`. To find topic IDs for other locales, inspect the RSS link on the Google News website for that locale.

---

### 3. Keyword / Search Feeds

Returns articles matching a search query.

**URL pattern:**
```
https://news.google.com/rss/search?q={query}&hl={hl}&gl={gl}&ceid={gl}:{lang}
```

**Query modifiers:**

| Modifier | Description | Example |
|----------|-------------|---------|
| `+` or space | AND (default) | `q=artificial+intelligence` |
| `OR` | OR operator | `q=Tesla+OR+SpaceX` |
| `-` | Exclude term | `q=Apple+-fruit` |
| `"..."` | Exact phrase (URL-encode the quotes) | `q=%22climate+change%22` |
| `when:7d` | Time filter โ€” last N days/hours | `q=Bitcoin+when:7d` |
| `when:1h` | Time filter โ€” last 1 hour | `q=breaking+news+when:1h` |
| `after:YYYY-MM-DD` | Articles after a date | `q=Olympics+after:2024-07-01` |
| `before:YYYY-MM-DD` | Articles before a date | `q=Olympics+before:2024-08-15` |
| `site:` | Restrict to a domain | `q=AI+site:reuters.com` |

**Example โ€” search for "artificial intelligence" in the last 7 days:**
```
https://news.google.com/rss/search?q=artificial+intelligence+when:7d&hl=en-US&gl=US&ceid=US:en
```

---

## RSS Response Format

All feeds return **RSS 2.0 XML**. Here is the general structure:

```xml
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
  <channel>
    <generator>NFE/5.0</generator>
    <title>Top stories - Google News</title>
    <link>https://news.google.com/?hl=en-US&amp;gl=US&amp;ceid=US:en</link>
    <language>en-US</language>
    <webMaster>[email protected]</webMaster>
    <copyright>...</copyright>
    <lastBuildDate>Wed, 18 Feb 2026 20:50:00 GMT</lastBuildDate>
    <item>
      <title>Article headline - Publisher Name</title>
      <link>https://news.google.com/rss/articles/...</link>
      <guid isPermaLink="true">https://news.google.com/rss/articles/...</guid>
      <pubDate>Wed, 18 Feb 2026 19:05:07 GMT</pubDate>
      <description>
        <!-- HTML ordered list of related articles -->
        <ol>
          <li><a href="...">Article Title</a>&nbsp;&nbsp;<font color="#6f6f6f">Publisher</font></li>
          ...
        </ol>
      </description>
      <source url="https://publisher-domain.com">Publisher Name</source>
    </item>
    <!-- more <item> elements -->
  </channel>
</rss>
```

### Key Fields per `<item>`

| Field | Description |
|-------|-------------|
| `<title>` | Headline text followed by ` - Publisher Name` |
| `<link>` | Google News redirect URL. Visiting it in a browser redirects to the actual article. |
| `<guid>` | Unique identifier (same as `<link>`) |
| `<pubDate>` | Publication date in RFC 2822 format |
| `<description>` | HTML snippet containing an ordered list (`<ol>`) of related/clustered articles with links and publisher names |
| `<source url="...">` | Publisher name and homepage URL |

---

## Common Patterns

### Fetch Top Headlines (curl + grep)

```bash
curl -s "https://news.google.com/rss?hl=en-US&gl=US&ceid=US:en" \
  | grep -oP '<title>\K[^<]+'
```

### Fetch Top Headlines (Python)

```python
import feedparser

feed = feedparser.parse(
    "https://news.google.com/rss?hl=en-US&gl=US&ceid=US:en"
)

for entry in feed.entries:
    print(f"{entry.published} โ€” {entry.title}")
    print(f"  Link: {entry.link}")
    print()
```

### Fetch Topic Feed (curl + xmllint)

```bash
TOPIC="CAAqJggKIiBDQkFTRWdvSUwyMHZNRGRqTVhZU0FtVnVHZ0pWVXlnQVAB"
curl -s "https://news.google.com/rss/topics/${TOPIC}?hl=en-US&gl=US&ceid=US:en" \
  | xmllint --xpath '//item/title/text()' -
```

### Search for Articles (Python)

```python
import feedparser
import urllib.parse

query = urllib.parse.quote("artificial intelligence when:7d")
url = f"https://news.google.com/rss/search?q={query}&hl=en-US&gl=US&ceid=US:en"

feed = feedparser.parse(url)
for entry in feed.entries[:10]:
    print(f"โ€ข {entry.title}")
```

### Fetch News for a Specific Location (Node.js)

```javascript
const https = require("https");
const { parseStringPromise } = require("xml2js");

const url =
  "https://news.google.com/rss?hl=en-GB&gl=GB&ceid=GB:en";

https.get(url, (res) => {
  let data = 
Files: 2
Size: 20.2 KB
Complexity: 31/100
Category: Backend & APIs

Related in Backend & APIs