---
title: "Get trending topics from curated sources"
method: GET
path: "/api/v1/radar"
tags: ["Composition"]
---

# Get trending topics from curated sources

`GET /api/v1/radar`

Get trending topics from curated sources.

## Query parameters

- `after` string
- `category` 'general' | 'tech' | 'dev' | 'science' | 'culture' | 'politics' | 'business' | 'entertainment'
- `hours` integer
- `limit` integer
- `region` string
- `source` 'github' | 'google_trends' | 'hacker_news' | 'polymarket' | 'reddit' | 'trustmrr' | 'wikipedia'

## Response `200`

Radar items

- object
  - `hasMore` boolean, required
  - `items` RadarItem[], required
    - `id` string, required — Radar item identifier.
    - `sourceId` string, required — Source-specific identifier used for deduplication.
    - `title` string, required
    - `url` string
    - `score` number, required
    - `category` 'general' | 'tech' | 'dev' | 'science' | 'culture' | 'politics' | 'business' | 'entertainment', required
    - `source` 'github' | 'google_trends' | 'hacker_news' | 'polymarket' | 'reddit' | 'trustmrr' | 'wikipedia', required
    - `region` string, required
    - `language` string, required — BCP-47 language code. und means the source did not identify a language.
    - `metadata` object, required — Source fields vary: - reddit: { author, authorId?, subreddit, subredditId?, subredditSubscribers?, sourceFormat, score?, upvoteRatio?, estimatedUpvotes?, estimatedDownvotes?, numberComments?, numberCrossposts?, selftext?, contentUrl?, domain?, postHint?, linkFlairText?, distinguished?, totalAwardsReceived?, viewCount?, editedAt?, galleryImageUrls?, redditVideo?, archived?, contestMode?, isCrosspostable?, isMeta?, isNsfw?, isOriginalContent?, isRobotIndexable?, isSelf?, isSpoiler?, isVideo?, locked?, stickied? }. - github: { starsToday } - hacker_news: { points, numberComments } - google_trends: { approxTraffic } - polymarket: { volume24hr } - wikipedia: { views } - trustmrr: { mrr, growthPercent, last30Days, total, customers, activeSubscriptions, onSale, xHandle?, category?, askingPrice?, country?, foundedDate?, googleSearchImpressionsLast30Days?, growthMrrPercent?, multiple?, paymentProvider?, profitMarginLast30Days?, rank?, revenuePerVisitor?, targetAudience?, visitorsLast30Days? } Reddit score is public net. Vote estimates use its fuzzed ratio. Comments are omitted. Startup xHandle omits @. rank is its growth rank.
      - `author` string
      - `contentUrl` string, uri
      - `estimatedDownvotes` integer
      - `estimatedUpvotes` integer
      - `numberComments` integer
      - `score` integer
      - `selftext` string
      - `sourceFormat` 'html' | 'json' | 'rss' — Current items use html. json and rss are retained for legacy rows.
      - `subreddit` string
      - `upvoteRatio` number
    - `publishedAt` string, date-time, required
    - `createdAt` string, date-time, required
    - `description` string
    - `imageUrl` string — Source image. Startup growth items return the logo here.
  - `nextCursor` string — Opaque cursor for the next page (present only when hasMore is true).

## Other responses

- `400` — Invalid input
- `401` — Unauthenticated
- `429` — Xquik tier rate limit exceeded. The response includes a `Retry-After` header with the number of seconds to wait before retrying.
- `default` — Unexpected error.

---

[API](https://skmtc.net/xquik-dev/apis/xquik-api-2.md) · [All operations](https://skmtc.net/xquik-dev/apis/xquik-api-2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/xquik-dev/xquik-api-2/revisions/da40606c043a/schema)
