> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/google-news/search>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/google-news/search.mdx>

---

# Google News Search API

Search one edition with Google News operators and a time window, then follow the cursor into older results.

`GET /v1/google-news/search?query=…` returns one window of results with `query`, `title`, `edition`, `articles` and `page`. Send `language` and `country` to pick the edition. `when` takes a recent window such as `1h`, `7d` or `1y`; `after` and `before` take real `YYYY-MM-DD` dates and cannot be combined with `when`.

The `query` string accepts the operators the edition understands: quotes for a phrase, `site:`, `intitle:`, `source:`, `OR` and `-term`. The response echoes the effective expression in `query`, including the time window (for example `openai when:1h`), and `title` contains the same expression. Each article carries `id`, `title`, `publishedAt`, `source`, `googleUrl` and `datePrecision`, so you can store the results without another call.

The first request returns the ranked Google News results, about 100 articles. When `page.hasMore` is true, send `page.nextCursor` as `cursor` while keeping the same `query` and edition. Without a date range the first cursor covers today's Pacific day, then each later cursor one older day, up to 100 items per window. With an `after` and `before` range, the first cursor covers the last day of that range, then earlier days down to `after`. A busier window is cut short and `page.windowFull` is true, so you can tell a complete window from a truncated one. A first request with `after`, `before` or `when` already has a date bound, and it says so too. The walk stops after seven empty days or at your `after`/`when` floor. `page.nextBefore` is the next window's exclusive `before:` date. A query with no matches returns `articles: []`, not an error.

## Request

- **Endpoint:** `GET /v1/google-news/search`
- **Credits:** 1 credit
Failed requests are free
- **Input:** by query
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/google-news/search/get)
- **Platform page:** [/platforms/google-news](https://www.socialfetch.dev/platforms/google-news)

## FAQ

### How do I pick the edition?

Send a supported `language` and `country` pair, for example `en-US` and `US`, `en-GB` and `GB`, `de` and `DE`, or `ja` and `JP`. The resolved pair comes back in `data.edition`.

### Which search operators work?

Quotes, `site:`, `intitle:`, `source:`, `OR` and `-term` are passed through in `query`. Use the dedicated `when`, `after` and `before` parameters for time rather than writing those operators yourself.

### How do I get older results?

Read `page.hasMore` and `page.nextCursor`. Send the cursor back as `cursor` with the same `query` and edition; it covers today's Pacific day first when you gave no date range, or the last day of your `after` and `before` range, then older days, with both date bounds set for you, up to 100 items. `page.windowFull` is true when that window had more articles than the 100 returned. Do not send `when`, `after` or `before` with a cursor.

### What does an empty result look like?

`data.articles` is an empty array and `data.query` still shows the effective search. That is a completed search with no matches, not a miss or a failure.

### How many credits does a search cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth. Each paginated page is a separate billed request.
