SERP API 4 min read

SERP and Reader APIs: AI News Curation Workflow

Build an AI news curation workflow with SERP discovery, Reader URL to Markdown extraction, deduplication, and an evidence-aware summarization step today.

(Updated: ) 761 words

An AI news aggregator works best as a two-stage pipeline: use a SERP API to discover candidate URLs, then use a Reader API to extract the few pages worth sending to an LLM. Deduplication, source tracking, and a clear evidence boundary matter as much as the model prompt.

The workflow at a glance

  1. Turn a user’s topics into a small set of search queries.
  2. Discover candidate results with the SERP API.
  3. Normalize URLs and remove duplicates.
  4. Select pages using recency, source, and relevance rules.
  5. Extract selected pages as Markdown with the Reader API.
  6. Summarize with citations that point back to the source URLs.

For deeper Reader implementation details, see SearchCans Reader API for RAG content parsing.

Stage 1: Discover candidate stories

The current SearchCans endpoint is POST https://www.searchcans.com/api/v1/search. A query uses t: "google" and s for the search text. Country, language, page, and optional result features can be added when the application needs them.

import requests

response = requests.post(
    "https://www.searchcans.com/api/v1/search",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "t": "google",
        "s": "AI agent infrastructure updates",
        "country": "us",
        "language": "en",
        "p": 1,
        "d": 30000,
    },
    timeout=35,
)
response.raise_for_status()
organic = response.json()["data"]["organic"]

Do not send every result to the next stage. Keep the result URL, title, snippet, query, position, and retrieval timestamp. That metadata lets the curation layer explain why a story was selected.

Stage 2: Deduplicate before extraction

Normalize obvious URL differences such as tracking parameters, fragments, and trailing slashes where your policy permits. Keep a canonical URL field and a source URL field so the final summary can preserve the original link. Also deduplicate by article title and publication timestamp when several sites syndicate the same report.

A useful selection record looks like this:

Field Purpose
canonical_url Stable page identity
discovered_by Query or feed that found it
title Human review and display
source_domain Source diversity and trust rules
published_at Recency filtering
selection_reason Audit trail for the curator

Stage 3: Read selected pages as Markdown

The Reader API endpoint is POST https://www.searchcans.com/api/v1/url. Use t: "url" and the page URL in s. Standard mode is the right starting point for ordinary pages. Use mode: 1 when the page needs headless browser rendering, and escalate the proxy tier only when the target blocks the standard path.

reader = requests.post(
    "https://www.searchcans.com/api/v1/url",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "t": "url",
        "s": "https://example.com/article",
        "mode": 0,
        "w": 1000,
        "d": 30000,
        "proxy": 0,
    },
    timeout=35,
)
reader.raise_for_status()
article = reader.json()["data"]
markdown = article["markdown"]

Reader standard mode costs 2 credits. The current pricing and Reader documentation should be checked before changing a production budget. Treat extracted Markdown as source material, not as proof that every claim is correct.

Stage 4: Summarize with an evidence boundary

The LLM prompt should require a short summary, the source title, the source URL, the publication date when available, and a list of claims that need verification. It should not fill gaps with invented dates or numbers. If two sources disagree, preserve the disagreement or send the item to review instead of blending the claims into one confident sentence.

For a daily briefing, store the source URL next to every sentence or bullet that depends on it. This is more useful than adding a generic references section after the model has already lost track of provenance.

Cost and throughput controls

Keep discovery and extraction in separate queues. SearchCans Parallel Lanes represent simultaneous in-flight requests. The current plan pages list 2 lanes for Standard, 5 for Starter, 37 for Pro, and 113 for Ultimate. Set worker limits below the available capacity, cache stable extraction results in your own application where allowed, and do not extract the same URL for every subscriber.

Frequently Asked Questions

Q: Why not send raw SERP results directly to the LLM?

A: SERP results are useful for discovery but usually do not contain enough page context. Reader turns selected URLs into cleaner Markdown so the model receives the article content together with source metadata.

Q: Should every discovered URL go through Reader?

A: No. Filter, deduplicate, and rank first. Extraction is a separate cost and latency step.

Q: How do I handle JavaScript-heavy news pages?

A: Retry the selected URL with Reader mode: 1, then consider a proxy tier only if the standard network path fails. Record which mode and tier produced the evidence.

Conclusion

The SERP and Reader combination is valuable because each API has a focused job. Search discovers candidates, Reader prepares selected pages, and the curation layer preserves source identity. That division produces briefings that are easier to scale, audit, and trust.

Tags:

SERP API Reader API AI News Content Curation RAG
SearchCans Team

SearchCans Team

SERP API & Reader API Experts

The SearchCans engineering team builds high-performance search APIs serving developers worldwide. We share practical tutorials, best practices, and insights on SERP data, web scraping, RAG pipelines, and AI integration.

Ready to build with SearchCans?

Test SERP API and Reader API with 100 free credits. No credit card required.