Newest headlines from a deduped, tiered direct-feed pile (official press + wires/majors +
Newest headlines from a deduped, tiered direct-feed pile (official press + wires/majors + trade press + Hacker News + gated GDELT), newest first — filter by category, source, and language
10000 (raw units)
price
3
calls / 30d
3
unique payers
2026-09-17
updated
Provider
x402.professorsausages.com · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x54ebFCF3870439B9db62381848c5DabC05c70d5B",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "10000",
"maxTimeoutSeconds": 60
}
]Output schema
{
"bazaar": {
"category": "news",
"info": {
"input": {
"method": "GET",
"queryParams": {
"category": "Restrict to one topical category.",
"lang": "ISO-639-1 language code.",
"limit": "How many articles to return.",
"source": "Restrict to one ingestion source. gnews is retired (archived articles only)."
},
"type": "http"
},
"output": {
"properties": {
"articles": {
"items": {
"properties": {
"categories": {
"items": {
"type": "string"
},
"type": "array"
},
"cluster": {
"description": "Story-cluster id — articles sharing one are the SAME story from different outlets. The served window already keeps only one article per cluster, so this is provenance, not a filter you must apply. null when the headline was too short to cluster safely.",
"type": [
"string",
"null"
]
},
"country": {
"type": [
"string",
"null"
]
},
"domain": {
"type": "string"
},
"feed": {
"description": "Human feed label, e.g. \"BBC World\", \"Hacker News\", \"GDELT: technology\".",
"type": "string"
},
"id": {
"description": "sha1(normalized url) hex, first 16 chars — the dedupe key.",
"type": "string"
},
"lang": {
"description": "ISO-639-1 language, best-effort.",
"type": [
"string",
"null"
]
},
"published": {
"description": "ISO-8601 publish time (best-effort).",
"type": "string"
},
"seen_at": {
"type": "string"
},
"snippet": {
"description": "Short plain-text description from the feed (≤240 chars); absent when the feed carries none.",
"type": [
"string",
"null"
]
},
"source": {
"enum": [
"gdelt",
"hn",
"rss",
"gnews",
"sitemap"
],
"type": "string"
},
"tier": {
"description": "Reputability tier of the feed: official (Fed/SEC/White House/BLS/ECB press), major (wires + major outlets), trade (quality trade press), social (Hacker News), enrichment (GDELT-discovered, reputation-gated). Absent on records archived before the tiered portfolio.",
"enum": [
"official",
"major",
"trade",
"social",
"enrichment",
null
],
"type": [
"string",
"null"
]
},
"title": {
"type": "string"
},
"tone": {
"description": "GDELT document tone (negative = adverse), attached by URL match from GDELT's 15-minute files — present on any source GDELT also saw; null otherwise.",
"type": [
"number",
"null"
]
},
"url": {
"type": "string"
}
},
"required": [
"id",
"title",
"url",
"domain",
"source",
"feed",
"published",
"categories",
"seen_at"
],
"type": "object"
},
"type": "array"
},
"count": {
"type": "integer"
},
"freshness": {
"properties": {
"as_of": {
"description": "updated_at of the corpus this response was served from.",
"type": "string"
},
"coverage": {
"properties": {
"articles": {
"description": "Articles covering that span.",
"type": "integer"
},
"hours": {
"description": "newest − oldest in hours — the searchable depth, usually far below window_hours.",
"type": "number"
},
"newest_published": {
"description": "Newest publish time held.",
"type": [
"string",
"null"
]
},
"oldest_published": {
"description": "Oldest publish time held; the real floor of any date filter.",
"type": [
"string",
"null"
]
}
},
"required": [
"oldest_published",
"newest_published",
"hours",
"articles"
],
"type": "object"
},
"source_count": {
"description": "Number of sources with ≥1 article in the current pile.",
"type": "integer"
},
"window_hours": {
"description": "Retention POLICY in hours (72). NOT the searchable depth — see coverage.hours.",
"type": "integer"
}
},
"required": [
"as_of",
"window_hours",
"source_count",
"coverage"
],
"type": "object"
},
"updated_at": {
"type": "string"
},
"window_hours": {
"type": "integer"
}
},
"required": [
"updated_at",
"window_hours",
"count",
"articles",
"freshness"
],
"type": "object"
}
},
"routeTemplate": "https://x402.professorsausages.com/news/headlines",
"schema": {
"properties": {
"input": {
"type": "object"
},
"output": {
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
},
"catalog": {
"catalogUrl": "https://x402.professorsausages.com/?ref=402&v=related&from=news",
"message": "You called Multi-Source News. Agents doing news work commonly also use these — same pay-per-call model, each with a FREE real sample record (freeSample link):",
"related": [
{
"call": "/token-safety?ref=xsell&v=related&from=news",
"freeSample": "/token-safety/sample?ref=xsell&v=related&from=news",
"name": "Token Safety Check",
"summary": "On-chain token risk screening for agents"
},
{
"call": "/address-screen?ref=xsell&v=related&from=news",
"freeSample": "/address-screen/sample?ref=xsell&v=related&from=news",
"name": "Address Risk Screen",
"summary": "Crypto address risk screening for agents"
},
{
"call": "/sanctions-screen?ref=xsell&v=related&from=news",
"freeSample": "/sanctions-screen/sample?ref=xsell&v=related&from=news",
"name": "OFAC Sanctions Name Screen",
"summary": "Fuzzy OFAC name screening for agents with compliance duties"
}
],
"strategy": "related"
},
"discount": {
"header": "X-Intent",
"hint": "Send X-Intent: <40+ chars describing what you're building and what data you need> for 50% off this call.",
"off": "50%"
},
"help": {
"docs": "https://x402.professorsausages.com/news",
"example": "https://x402.professorsausages.com/news/headlines",
"openapi": "https://x402.professorsausages.com/news/openapi.json",
"sample": "https://x402.professorsausages.com/news/sample"
},
"sample": {
"hint": "A real cached response from this API (with its capture timestamp), free — judge the data quality before paying.",
"url": "https://x402.professorsausages.com/news/sample"
},
"suggest": {
"hint": "Missing data you'd pay for? POST {want, would_pay_usd} — free. The most-requested datasets get built first.",
"url": "https://x402.professorsausages.com/suggest"
}
}Use it
curl
curl "https://x402.professorsausages.com/news/headlines" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://x402.professorsausages.com/news/headlines");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://x402.professorsausages.com/news/headlines")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/12983.json, and this resource appears in /discovery/resources and /discovery/search.