BuzzRadr Public HOT API API
Anonymous read-only public trend API for BuzzRadr. No API key, no signup. Responses are CDN-cached for 1-5 minutes depending on the endpoint; abusive traffic may receive 429 with a retry-after header.
Anonymous read-only public trend API for BuzzRadr. No API key, no signup. Responses are CDN-cached for 1-5 minutes depending on the endpoint; abusive traffic may receive 429 with a retry-after header.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/buzzradr-com:buzzradr-public-hot-api-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.1.0
info:
title: BuzzRadr Public HOT API
version: 0.2.1
description: >-
Anonymous read-only public trend API for BuzzRadr. No API key, no signup.
Responses are CDN-cached for 1-5 minutes depending on the endpoint;
abusive traffic may receive 429 with a retry-after header.
servers:
- url: https://buzzradr.com
security: []
paths:
/api/public/hot/trends:
get:
operationId: listPublicTrendTopics
summary: List public trend topics
parameters:
- $ref: "#/components/parameters/Vertical"
- name: platforms
in: query
description: >-
Comma-separated platform names, case-insensitive. A topic is kept
when it matches any listed platform.
schema:
type: string
- name: keywords
in: query
description: >-
Comma-separated keywords, case-insensitive substring match against
the topic title, topic keywords, and item titles. A topic is kept
when it matches any keyword.
schema:
type: string
- name: sort
in: query
schema:
type: string
enum: [hot, time]
default: hot
- name: limit
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 50
- name: locale
in: query
description: >-
English summaries by default; "zh" opts into Chinese summaries
when available.
schema:
type: string
enum: [en, zh]
default: en
responses:
"200":
description: Public topic list
content:
application/json:
schema:
type: object
required: [code, message, data]
properties:
code:
type: integer
message:
type: string
data:
type: object
required: [topics, meta]
properties:
topics:
type: array
items:
$ref: "#/components/schemas/PublicTopic"
meta:
type: object
required: [vertical, fetchedAt, topicCount, itemCount]
properties:
vertical:
type: string
fetchedAt:
type: string
format: date-time
topicCount:
type: integer
itemCount:
type: integer
"429":
$ref: "#/components/responses/RateLimited"
/api/public/hot/trends/{topicId}:
get:
operationId: getPublicTrendTopic
summary: Get a public trend topic
parameters:
- name: topicId
in: path
required: true
schema:
type: string
- $ref: "#/components/parameters/Vertical"
responses:
"200":
description: Public topic detail
content:
application/json:
schema:
type: object
required: [code, message, data]
properties:
code:
type: integer
message:
type: string
data:
$ref: "#/components/schemas/PublicTopic"
"404":
description: Topic not found
content:
application/json:
schema:
$ref: "#/components/schemas/ApiError"
"429":
$ref: "#/components/responses/RateLimited"
/api/public/hot/daily:
get:
operationId: getPublicDailyDigest
summary: Get public daily trend digest
parameters:
- $ref: "#/components/parameters/Vertical"
responses:
"200":
description: Daily digest
content:
application/json:
schema:
type: object
required: [code, message, data]
properties:
code:
type: integer
message:
type: string
data:
type: object
required: [vertical, generatedAt, title, topics]
properties:
vertical:
type: string
generatedAt:
type: string
format: date-time
title:
type: string
emptyReason:
type: string
enum: [no_verified_topics]
description: Present when the verified-public rollout is enabled and no topic meets the evidence gate.
topics:
type: array
items:
$ref: "#/components/schemas/PublicTopic"
"429":
$ref: "#/components/responses/RateLimited"
/api/public/hot/sources:
get:
operationId: listPublicSourceHealth
summary: List public source health
parameters:
- $ref: "#/components/parameters/Vertical"
responses:
"200":
description: Public source health
content:
application/json:
schema:
type: object
required: [code, message, data]
properties:
code:
type: integer
message:
type: string
data:
type: object
required: [vertical, sources]
properties:
vertical:
type: string
sources:
type: array
items:
$ref: "#/components/schemas/PublicSource"
"429":
$ref: "#/components/responses/RateLimited"
/api/public/hot/rss:
get:
operationId: getPublicRssFeed
summary: Public RSS feed
parameters:
- $ref: "#/components/parameters/Vertical"
responses:
"200":
description: RSS 2.0 XML feed (top 30 topics)
content:
application/rss+xml:
schema:
type: string
"429":
$ref: "#/components/responses/RateLimited"
components:
parameters:
Vertical:
name: vertical
in: query
description: Unknown values fall back to "ai".
schema:
type: string
enum: [ai, jobs, world-cup-2026, finance, real-estate]
default: ai
responses:
RateLimited:
description: Too many requests — minimum request interval exceeded.
headers:
retry-after:
description: Seconds to wait before retrying.
schema:
type: string
content:
application/json:
schema:
type: object
required: [error, message]
properties:
error:
type: string
const: too_many_requests
message:
type: string
schemas:
ApiError:
type: object
required: [code, message]
properties:
code:
type: integer
message:
type: string
PublicTopic:
type: object
required:
- topicId
- vertical
- title
- keywords
- platforms
- score
- firstSeenAt
- lastSeenAt
- itemCount
- trustedSourceCount
- relatedItemCount
- topItems
properties:
topicId:
type: string
vertical:
type: string
title:
type: string
summary:
type: string
summarySource:
type: string
aiWhy:
type: string
description: >-
Locale-selected "why this matters" judgement produced by the AI
enrichment pass. Absent when none was generated; there is no
placeholder or fallback value.
sourceClass:
type: string
enum: [official, media, dev_community, research, commentary, other]
reason:
type: string
description: Signal-grounded one-liner on why the topic is trending.
reasonSource:
type: string
reasonConfidence:
type: string
keywords:
type: array
items:
type: string
platforms:
type: array
items:
type: string
score:
type: number
description: Composite ranking score combining source, coverage, engagement and freshness signals; not 24-hour discussion heat.
firstSeenAt:
type: string
format: date-time
lastSeenAt:
type: string
format: date-time
itemCount:
type: integer
trustedSourceCount:
type: integer
description: Compatibility field; under verified-public v2 this equals independentSourceCount.
independentSourceCount:
type: integer
description: Distinct public content publishers supporting this topic.
signalPublisherCount:
type: integer
description: Folded count of heat-signal publishers; identities are not exposed.
verificationEvidence:
type: object
required: [anchorType, anchorCount]
properties:
anchorType:
type: string
enum: [authoritative, independent_corroboration]
anchorCount:
type: integer
firstVerifiedAt:
type: string
format: date-time
relatedItemCount:
type: integer
topItems:
type: array
maxItems: 3
items:
$ref: "#/components/schemas/PublicItem"
PublicItem:
type: object
required: [itemId, title, platform, sourceType, firstSeenAt, lastSeenAt]
properties:
itemId:
type: string
title:
type: string
url:
type: string
author:
type: string
authorAvatar:
type: string
excerpt:
type: string
content:
type: string
contentSource:
type: string
translation:
type: string
imageUrl:
type: string
imageUrls:
type: array
items:
type: string
platform:
type: string
sourceType:
type: string
sourceClass:
type: string
enum: [official, media, dev_community, research, commentary, other]
description: Classification of this item's source, independent of its collection method or verification status. May be absent in historical snapshots.
engagement:
type: object
description: Raw engagement metrics; keys vary by platform.
additionalProperties: true
publishedAt:
type: string
format: date-time
firstSeenAt:
type: string
format: date-time
lastSeenAt:
type: string
format: date-time
sourceId:
type: string
description: Absent for archived snapshots, which never persisted it.
PublicSource:
type: object
required: [sourceId, sourceType, status]
properties:
sourceId:
type: string
vertical:
type: string
sourceType:
type: string
platform:
type: string
status:
type: string
lastFetchedAt:
type: string
format: date-time
acceptedItemCount:
type: integer
filteredItemCount:
type: integer
message:
type: string