← All surfaces
surfaces: ["google_news"]

The Google News SERP API — rendered, structured, kept as evidence.

News results move fast and vanish faster. We render real Google News results in a browser on our own fleet and return them as the canonical Envelope — each story a roled source with url and title, in page order, with a screenshot and proof-of-page retained durably. What the news tab showed on a given day, in a given country, stays provable.

Credit cost
3 credits / successful capture
Fidelity
fidelity: consumer_ui
Regions
9 countries
POST /v1/search
curl -sS -X POST "https://api.aisearchapi.dev/v1/search" \
  -H "Authorization: Bearer $AISEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "openai antitrust",
    "surfaces": ["google_news"],
    "regions": [{ "country": "US" }, { "country": "GB" }, { "country": "JP" }],
    "method": "auto"
  }'
# → 202 { "jobId": "…", "children": ["….google_news.…"] }
# then poll GET /v1/jobs/:childId — or add ?mode=sync for an inline Envelope

What a Google News capture returns.

One canonical Envelope — the same four sections every surface returns — with the fields Google News actually populates. Field names below are the contract, not a summary.

evidence.sources[]

The news stories as rendered — url, title, role — in page order. The core payload for coverage monitoring.

provenance.region

News is the most geo-divergent surface Google runs. Requested-vs-effective region per capture makes cross-market coverage comparisons honest.

job.artifacts

Screenshot + proof-of-page HTML — a durable, dated record of the news page itself, retrievable long after the stories rotate out.

provenance.surfacePresent

A query with no news results completes truthfully as surface_absent rather than erroring — absence of coverage is itself a signal.

answer.text · answer.markdown

Normalized text from any answer-bearing module on the page; empty when there is none — never fabricated.

Envelope excerpt — google_news
{
  "job": {
    "id": "job_5f91d2ab.google_news.own-fleet.GB",
    "surface": "google_news",
    "method": "own-fleet",
    "status": "completed",
    "warnings": [],
    "artifacts": {
      "screenshotKey": "shots/2026/06/30/job_5f91d2ab.png",
      "proofHtmlKey": "proof/2026/06/30/job_5f91d2ab.html",
      "rawKey": "raw/2026/06/30/job_5f91d2ab.json"
    }
  },
  "provenance": {
    "acquisition": "own-fleet",
    "fidelity": "consumer_ui",
    "surfacePresent": true,
    "region": { "requested": "GB", "effective": "GB" }
  },
  "answer": { "text": "", "markdown": "", "blocks": [] },
  "evidence": {
    "sources": [
      { "id": 0, "url": "https://…", "title": "…", "role": "retrieved",
        "cited": false },
      { "id": 1, "url": "https://…", "title": "…", "role": "retrieved",
        "cited": false }
    ],
    "fanOut": { "provenance": "none", "queries": [] }
  }
}

The lanes, stated honestly.

Google News results captured live via own-fleet browser render. The managed-vendor lane is phase-2; there is no official API.

Phase-2 lanes are roadmap, not product — pinning one returns an honest 422 today. The full picture is on the capability matrix.

own-fleet · auto
Supported
managed-vendor
Phase 2
official-api
No path
cost: 3 credits (charged on success only)free tier: 500 credits — pricing
regions:USGBDEFRCAAUINJPBR+ optional city & language

Google News capture, asked precisely.

What does a google_news capture return?

The news results as rendered in a real browser session in your requested country — each story a source with url, title and role, in page order — plus the screenshot and proof-of-page HTML of the page itself, retained durably in R2.

Can I compare news coverage across countries?

That is the primary workflow: one request with multiple regions (nine v1 countries) fans out into one child Envelope per market, each stamped with requested-vs-effective geo. Diff the source lists to see which stories each market is shown.

How current are the results?

Each capture is a live browser render at the moment the job runs — provenance.capturedAt records the exact UTC timestamp, and the artifacts freeze the page as it stood. For a rolling record, schedule recurring captures and diff the Envelopes.

What does a capture cost?

Per-surface credit costs are published on the pricing page; google_news follows the same rules as every surface — charged only on success, every field included, 500 free credits to start.

Is there an official Google News API?

No — Google retired its News API years ago, and no official replacement exposes the rendered news SERP. Rendering the real page is the only honest way to observe it; the capability matrix marks official-api as "no path" accordingly.

Capture Google News in one request.

500 free credits, charged only on success — and the same Envelope for every other surface when you add them.