# Google News

`POST https://api.serpkite.com/v1/news` · Credits: 1 per page

News articles with source, publish date, snippet and thumbnail.

Google News results for a query: headline, source, publish date, snippet and thumbnail. Combine with `time` to watch a topic over the last hour, day or week.

## Request body

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| `q` **required** | string |  | The search query. Required. Up to 2,048 characters. |
| `country` | string | `us` | Country to search from, as a two-letter ISO code (us, gb, de, in…). |
| `language` | string | `en` | Interface language, as a language code (en, de, fr, pt-BR…). |
| `location` | string |  | Canonical location for local results, e.g. "Austin, Texas, United States". Overrides country for geo. |
| `uule` | string |  | Google-encoded location string. Use instead of location if you already have it. |
| `num` | integer | `10` | Results per call. 10 per page; 100 fetches the top 100 as a depth bundle for 7 credits instead of 10. One of: `10`, `20`, `30`, `50`, `100`. |
| `page` | integer | `1` | Results page, 1–10. Each page is billed separately. |
| `time` | string |  | Restrict to recent results. Shorthand for tbs=qdr:*. One of: `hour`, `day`, `week`, `month`, `year`. |
| `tbs` | string |  | Raw Google tbs filter, e.g. qdr:w or cdr:1,cd_min:… |
| `format` | string | `json` | Response format. markdown is LLM-ready prose; compact is JSON with only the fields agents need. One of: `json`, `compact`, `markdown`. |
| `fields` | string |  | Comma-separated projection, e.g. results.title,results.link,knowledge_graph. Cuts tokens. |
| `max_age` | integer |  | Accept a cached result up to this many seconds old. Cache hits cost 50% of the credits. |
| `engine` | string or array | `google` | Which search providers may answer. google is Google only (SerpKite still fails over across its own proxy pools); auto falls back to other providers when Google is blocked or times out; consensus (search only) asks several independent indexes in parallel, merges the results by URL, ranks them by agreement and lists each result's sources, at the sum of one page per provider that returned results; a provider name or a list (e.g. google,brave) restricts the request to those. meta.engine names the provider that answered. One of: `google`, `auto`, `consensus`, `brave`, `bing`, `yahoo`, `duckduckgo`, `mojeek`, `wikipedia`. |

## Example request

cURL:

```bash
curl https://api.serpkite.com/v1/news \
  -H "Authorization: Bearer $SERPKITE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q":"AI agents funding","country":"us","time":"week"}'
```

TypeScript:

```ts
import { SerpKite } from "serpkite";

const sk = new SerpKite(); // reads SERPKITE_API_KEY
const res = await sk.news({ q: "AI agents funding", country: "us", time: "week" });
console.log(res.results[0].title, res.meta.credits_used);
```

Python:

```python
from serpkite import SerpKite

sk = SerpKite()  # reads SERPKITE_API_KEY
res = sk.news("AI agents funding", country="us", time="week")
print(res.results[0].title, res.meta.credits_used)
```

## Response fields

| Field | Type | Description |
| --- | --- | --- |
| `request` | object | The normalised request, with defaults filled in: `endpoint`, `engine`, `q`, `country`, `language`, `location`, `num`, `page`, `device`, `autocorrect`… |
| `results[]` | array | `position`, `title`, `link`, `domain`, `snippet`, `date`, `source`, `image_url`. |
| `meta` | object | `request_id`, `credits_used`, `cached`, `cached_at`, `engine` (the provider that answered), `route` (provider attempts, see [Search providers](https://serpkite.com/docs/providers)), `latency_ms`, `parse_quality` (`ok`, `partial`, `empty`), `resolved_urls`. |

## Example response

```json
{
  "request": {
    "endpoint": "news",
    "engine": "google",
    "q": "AI agents funding",
    "country": "us",
    "language": "en",
    "time": "week"
  },
  "results": [
    {
      "position": 1,
      "title": "Agent startups raised a record amount this quarter",
      "link": "https://news.example.com/2026/09/agent-startups-funding",
      "domain": "news.example.com",
      "snippet": "Investors poured money into companies building autonomous software agents…",
      "date": "3 hours ago",
      "source": "Example News",
      "image_url": "https://news.example.com/img/agents.jpg"
    }
  ],
  "meta": {
    "request_id": "req_01J8ZK4M6Q2V7",
    "credits_used": 1,
    "cached": false,
    "engine": "google",
    "latency_ms": 1034,
    "parse_quality": "ok",
    "resolved_urls": true
  }
}
```

## Errors

| Status | Code | Meaning |
| --- | --- | --- |
| 400 | `invalid_request` | A parameter is missing or invalid. |
| 401 | `unauthorized` | The API key is missing, invalid or revoked. |
| 402 | `insufficient_credits` | Your balance is too low. Buy a pack or wait for the monthly free grant. |
| 429 | `rate_limited` | Too many requests per second for your plan. Retry after the Retry-After header. |
| 503 | `upstream_error` | Google could not be fetched or parsed. Not billed; retry after Retry-After. |

All errors: https://serpkite.com/docs/errors

## Notes

- Dates are shown as Google displays them (e.g. "3 hours ago").

## Related

- [Localization](https://serpkite.com/docs/localization)
- [Batch requests](https://serpkite.com/docs/batch)