Hyperaware Trends API

Trend data operations

GitHub OpenAPI

Operations 1

POST /api Query trend data #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/hyperaware-live:hyperaware-live-trends-api"
All apis
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.

Get an API 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 Specification

hyperaware-live-trends-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: hello@hyperaware.live
    name: Hyperaware API Support
    url: https://hyperaware.live
  description: 'One POST endpoint for trend data: historical time series, point-to-point growth windows, and live trending feeds across Google, Google Images, Google News, Google Shopping, YouTube, Wikipedia, TikTok, Amazon, Pinterest, npm, PyPI, Steam, Google Play, App Store, GitHub, Google Trends, IMDb, Open Library, Polymarket, Reddit, Web, Spotify, Substack, X, Instagram, Bluesky, Hacker News. Scores use a 0-100 index with absolute volume where available. Pick the operation with the `mode` field in the JSON body. The same operations are also available as MCP tools at `https://api.hyperaware.live/mcp`. Free API key (100 requests/month): https://hyperaware.live/account'
  summary: Live trend data across search, social, commerce, news, and developer platforms
  termsOfService: https://hyperaware.live/terms
  title: Hyperaware Trends API
  version: 1.0.0
  x-logo:
    altText: Hyperaware API
    url: https://hyperaware.live/brand/hyperaware.live/logo.png
  x-mcp-server: https://api.hyperaware.live/mcp
servers:
- description: Production
  url: https://api.hyperaware.live
security:
- bearerAuth: []
tags:
- description: Trend data operations
  name: Trends
paths:
  /api:
    post:
      description: 'Run one tool, picked by the `mode` field: `get_time_series` (full history for one topic, 1 request per source (data type) in the call; ''all'' = every keyword source); `get_growth` (how fast something is rising, 1 request per source (data type) in the call, every window included; ''all'' = every keyword source); `get_top_trends` (what''s moving right now, 1 request per 10 rows per board: limit 100 (the default) = 10 requests per board); `get_context` (what people are saying, 1 request per source (data type) in the call; ''all'' = every context source); `get_reviews` (what customers say, 1 request per source (data type) in the call; ''all'' = every review source).'
      operationId: queryTrends
      requestBody:
        content:
          application/json:
            examples:
              get_context:
                summary: Get Context
                value:
                  keyword: nvidia
                  mode: get_context
                  source: News
              get_growth:
                summary: Get Growth
                value:
                  keyword: electric vehicles
                  mode: get_growth
                  percent_growth:
                  - 3M
                  - 12M
                  source: Google Search
              get_reviews:
                summary: Get Reviews
                value:
                  keyword: notion
                  mode: get_reviews
                  source: App Store
              get_time_series:
                summary: Get Time Series
                value:
                  keyword: electric vehicles
                  mode: get_time_series
                  source: Google Search
              get_top_trends:
                summary: Get Top Trends
                value:
                  limit: 10
                  mode: get_top_trends
                  type: Google Trends
            schema:
              discriminator:
                mapping:
                  get_context: '#/components/schemas/GetContextRequest'
                  get_growth: '#/components/schemas/GetGrowthRequest'
                  get_time_series: '#/components/schemas/GetTimeSeriesRequest'
                  get_top_trends: '#/components/schemas/GetTopTrendsRequest'
                propertyName: mode
              oneOf:
              - $ref: '#/components/schemas/GetTimeSeriesRequest'
              - $ref: '#/components/schemas/GetGrowthRequest'
              - $ref: '#/components/schemas/GetTopTrendsRequest'
              - $ref: '#/components/schemas/GetContextRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              examples:
                get_context:
                  summary: Get Context
                  value:
                    body: '{"keyword": "nintendo switch 2", "window_days": 7, "count": 1, "sources": [{"source": "YouTube", "count": 1, "error": null, "items": [{"kind": "video", "title": "Switch 2 review", "url": "https://youtube.com/watch?v=…", "published": "2026-10-22T09:39:22Z", "engagement": {"views": 91542, "likes": 5997, "comments": 527}}]}]}'
                    statusCode: 200
                get_growth:
                  summary: Get Growth
                  value:
                    body: '{"search_term": "nike", "data_source": "google search", "results": [{"period": "12M", "growth": -12.31, "direction": "decrease", "recent_date": "2026-10-24", "baseline_date": "2025-10-25", "recent_value": 57, "baseline_value": 65, "volume_growth": -12.31}]}'
                    statusCode: 200
                get_time_series:
                  summary: Get Time Series
                  value:
                    body: '[{"date": "2026-10-17", "value": 47, "volume": 25853617, "keyword": "bitcoin", "source": "google search"}, {"date": "2026-10-24", "value": 52, "volume": 28012440, "keyword": "bitcoin", "source": "google search"}]'
                    statusCode: 200
                get_top_trends:
                  summary: Get Top Trends
                  value:
                    body: '{"type": "Google Trends", "as_of_ts": "2026-10-27T12:00:00Z", "count": 3, "data": [[1, "world series"], [2, "election polls"], [3, "halloween costumes"]]}'
                    statusCode: 200
              schema:
                $ref: '#/components/schemas/Envelope'
          description: 'HTTP 200 with the REST envelope. REST answers HTTP 200 with an envelope: `{"statusCode": 400, "body": "…"}`. Read `statusCode`, then parse `body`. A missing or wrong key is the exception: HTTP 401 (`missing_api_key`) or 403 (`invalid_api_key`), with the error object as the body. Errors carry an `error` code and a `message`. Over MCP, a failed call sets `isError` on the tool result.'
        '401':
          content:
            application/json:
              example:
                error: missing_api_key
                message: Missing API key. Send it in the Authorization header.
              schema:
                $ref: '#/components/schemas/Error'
          description: 'missing_api_key: No key was sent. Send it in the Authorization header as Bearer <key>. REST answers HTTP 401.'
        '403':
          content:
            application/json:
              example:
                error: invalid_api_key
                message: Invalid API key. Check the key in your account.
              schema:
                $ref: '#/components/schemas/Error'
          description: 'invalid_api_key: The key is mistyped or was regenerated. Get or copy your key on /account. REST answers HTTP 403.'
      security:
      - bearerAuth: []
      summary: Query trend data
      tags:
      - Trends
components:
  schemas:
    Error:
      description: 'The error object: the parsed envelope body when statusCode is not 2xx, or the response body itself on the HTTP 401 and 403 key errors.'
      properties:
        error:
          enum:
          - missing_parameter
          - invalid_source
          - invalid_mode
          - invalid_request
          - no_data
          - source_unavailable
          - growth_calculation_failed
          - internal_error
          - missing_api_key
          - invalid_api_key
          - monthly_limit_reached
          type: string
        message:
          type: string
        request_id:
          description: Present on internal_error; quote it when contacting support.
          type: string
      type: object
    TimeSeriesResponse:
      description: ~5 years of weekly data points, oldest to newest.
      items:
        $ref: '#/components/schemas/TimeSeriesPoint'
      type: array
    GetTimeSeriesRequest:
      properties:
        country:
          description: 'ISO 3166-1 alpha-2 country code (US, GB, JP). Boards, TikTok and review stores default to US; Google time series and growth default to worldwide. Only for: Google Search, Google Images, Google News, Google Shopping, YouTube, TikTok, Pinterest.'
          type: string
        keyword:
          description: 'What to look up. The string format is required by source. Google Search, Google Images, Google News, Google Shopping, YouTube, Wikipedia, TikTok, Amazon, Pinterest: any name or phrase, e.g. ''nike''. npm: Exact npmjs.com package name, case-sensitive. Right: ''react'', ''@babel/core''. Wrong: ''React'', ''React.js''. Python: Exact PyPI project name. Right: ''pandas'', ''requests''. Wrong: ''Pandas''. Steam: Game display name in plain English, not a Steam App ID. Right: ''Elden Ring'', ''CS2''. First Steam store search result wins, so use an unambiguous name. App Downloads: Android bundle ID only (the id= value on Google Play). Right: ''com.openai.chatgpt'', ''com.whatsapp''. Wrong: ''ChatGPT'', ''WhatsApp'', an iOS App Store ID, or a bundle ID that is not Android. Find it at play.google.com/store/apps/details?id=THIS_PART. App Rankings: Android bundle ID only (the id= value on Google Play). Right: ''com.openai.chatgpt'', ''com.whatsapp''. Wrong: ''ChatGPT'', ''WhatsApp'', an iOS App Store ID, or a bundle ID that is not Android. Find it at play.google.com/store/apps/details?id=THIS_PART.'
          type: string
        language:
          default: en
          description: 'Wikipedia language edition (en, de, ja, pt); defaults to en. Only for: Wikipedia.'
          type: string
        mode:
          const: get_time_series
          description: 'Canonical name (matches the MCP tool). Aliases: ''get_trends'', ''trends'', ''time_series'', ''lookup''.'
          type: string
        resolution:
          default: weekly
          description: '''weekly'' (about 5 years, default) or ''daily'' (last 90 days, fetched live). Only for: Google Search, Google Images, Google News, Google Shopping, YouTube.'
          enum:
          - weekly
          - daily
          type: string
        source:
          description: Exactly one source per request.
          enum:
          - Google Search
          - Google Images
          - Google News
          - Google Shopping
          - YouTube
          - Wikipedia
          - TikTok
          - Amazon
          - Pinterest
          - npm
          - Python
          - Steam
          - App Downloads
          - App Rankings
          type: string
      required:
      - mode
      - source
      - keyword
      type: object
    GrowthResponse:
      properties:
        data_source:
          type: string
        metadata:
          properties:
            all_successful:
              type: boolean
            calculations_completed:
              type: integer
            total_data_points:
              type: integer
          type: object
        results:
          items:
            $ref: '#/components/schemas/GrowthResult'
          type: array
        search_term:
          type: string
      type: object
    ContextResponse:
      description: Per source, the posts, videos, stories and markets about the keyword, best first.
      properties:
        keyword:
          description: The keyword you asked for.
          type: string
        sources:
          items:
            properties:
              error:
                description: Why a source returned nothing, when it failed.
                type:
                - string
                - 'null'
              items:
                description: 'Each item: kind, url, title, text, author, published, engagement (views, likes, comments, shares, score…), top_comments.'
                type: array
              source:
                description: The source.
                type: string
            type: object
          type: array
        window_days:
          description: How far back it looked.
          type: number
      type: object
    GrowthResult:
      properties:
        baseline_date:
          format: date
          type: string
        baseline_value:
          type: number
        baseline_volume:
          type:
          - number
          - 'null'
        direction:
          description: '''increase'' or ''decrease''.'
          type: string
        growth:
          description: Percentage change, e.g. -12.31.
          type: number
        period:
          type: string
        recent_date:
          format: date
          type: string
        recent_value:
          type: number
        recent_volume:
          type:
          - number
          - 'null'
        volume_available:
          type: boolean
        volume_growth:
          type:
          - number
          - 'null'
      type: object
    TopTrendsResponse:
      properties:
        as_of_ts:
          format: date-time
          type: string
        baseline_ts:
          description: Present only when sort is 'rank_change'.
          format: date-time
          type: string
        category:
          type: string
        count:
          type: integer
        data:
          items:
            oneOf:
            - description: '[rank, keyword] for sort=''rank''.'
              prefixItems:
              - description: Current rank.
                type: integer
              - description: Keyword or item name.
                type: string
              type: array
            - description: Mover row for sort='rank_change'.
              properties:
                category_path:
                  type: string
                keyword:
                  type: string
                prev_rank:
                  type: integer
                rank:
                  type: integer
                rank_change:
                  description: Positions climbed.
                  type: integer
              type: object
          type: array
        limit:
          type: integer
        note:
          description: Present when count is 0 to explain why and what to do next.
          type: string
        sort:
          type: string
        type:
          type: string
        window:
          type: string
      type: object
    GetGrowthRequest:
      properties:
        country:
          description: 'ISO 3166-1 alpha-2 country code (US, GB, JP). Boards, TikTok and review stores default to US; Google time series and growth default to worldwide. Only for: Google Search, Google Images, Google News, Google Shopping, YouTube, TikTok, Pinterest.'
          type: string
        keyword:
          description: 'What to look up. The string format is required by source. Google Search, Google Images, Google News, Google Shopping, YouTube, Wikipedia, TikTok, Amazon, Pinterest: any name or phrase, e.g. ''nike''. npm: Exact npmjs.com package name, case-sensitive. Right: ''react'', ''@babel/core''. Wrong: ''React'', ''React.js''. Python: Exact PyPI project name. Right: ''pandas'', ''requests''. Wrong: ''Pandas''. Steam: Game display name in plain English, not a Steam App ID. Right: ''Elden Ring'', ''CS2''. First Steam store search result wins, so use an unambiguous name. App Downloads: Android bundle ID only (the id= value on Google Play). Right: ''com.openai.chatgpt'', ''com.whatsapp''. Wrong: ''ChatGPT'', ''WhatsApp'', an iOS App Store ID, or a bundle ID that is not Android. Find it at play.google.com/store/apps/details?id=THIS_PART. App Rankings: Android bundle ID only (the id= value on Google Play). Right: ''com.openai.chatgpt'', ''com.whatsapp''. Wrong: ''ChatGPT'', ''WhatsApp'', an iOS App Store ID, or a bundle ID that is not Android. Find it at play.google.com/store/apps/details?id=THIS_PART.'
          type: string
        language:
          default: en
          description: 'Wikipedia language edition (en, de, ja, pt); defaults to en. Only for: Wikipedia.'
          type: string
        mode:
          const: get_growth
          description: 'Canonical name (matches the MCP tool). Alias: ''growth''.'
          type: string
        percent_growth:
          default:
          - 12M
          description: Growth windows. Each item is a window string or, on REST only, a custom date-range object. Every window is a two-date comparison. `window` is accepted as a REST alias.
          items:
            oneOf:
            - description: 'Any whole number plus a D, W, M, or Y suffix, up to 5 years (e.g. ''7D'', ''17D'', ''45D'', ''3M'', ''18M'', ''2Y''), or MTD, QTD, YTD. Common presets: 7D, 1W, 14D, 2W, 30D, 1M, 2M, 3M, 6M, 9M, 12M, 1Y, 18M, 24M, 2Y, 36M, 3Y, 48M, 4Y, 60M, 5Y, MTD, QTD, YTD.'
              type: string
            - description: Custom date range. REST only; MCP accepts the string windows.
              properties:
                baseline:
                  format: date
                  type: string
                name:
                  description: Optional label.
                  type: string
                recent:
                  format: date
                  type: string
              required:
              - recent
              - baseline
              type: object
          type: array
        resolution:
          default: weekly
          description: '''weekly'' (about 5 years, default) or ''daily'' (last 90 days, fetched live). Only for: Google Search, Google Images, Google News, Google Shopping, YouTube.'
          enum:
          - weekly
          - daily
          type: string
        source:
          description: One source, or comma-separated sources for get_growth (e.g. 'amazon, tiktok, youtube'). get_time_series takes exactly one.
          enum:
          - Google Search
          - Google Images
          - Google News
          - Google Shopping
          - YouTube
          - Wikipedia
          - TikTok
          - Amazon
          - Pinterest
          - npm
          - Python
          - Steam
          - App Downloads
          - App Rankings
          type: string
      required:
      - mode
      - source
      - keyword
      type: object
    TimeSeriesPoint:
      properties:
        date:
          format: date
          type: string
        keyword:
          type: string
        source:
          type: string
        value:
          description: Trend score on a 0-100 index.
          maximum: 100
          minimum: 0
          type: number
        volume:
          description: Absolute volume where available.
          type:
          - number
          - 'null'
      type: object
    GetContextRequest:
      description: 'What people are posting, reading and betting about a keyword right now: posts, videos, stories, comments and markets from each source, with engagement.'
      properties:
        days:
          description: Look back 1 to 30 days. Default 7.
          type: integer
        hashtag:
          description: 'true: the keyword is an exact hashtag; TikTok and Instagram return their top posts for it.'
          type: boolean
        keyword:
          description: Any name or phrase.
          type: string
        limit:
          description: Items per source, 1 to 20. Default 10.
          type: integer
        mode:
          const: get_context
          description: Canonical name (matches the MCP tool).
          type: string
        source:
          description: 'One source, several separated by commas, or ''all''. One of: News, YouTube, TikTok, Instagram, X, Reddit, Bluesky, Hacker News, Polymarket, GitHub.'
          type: string
      required:
      - mode
      - keyword
      - source
      type: object
    GetTopTrendsRequest:
      properties:
        category:
          description: 'Required when type is one of: Amazon Best Sellers by Category, Google Trends by Category, Pinterest Trending by Category, Top Websites, Substack by Category, TikTok Trending Hashtags by Category. Use the official category name (case-insensitive).'
          type: string
        country:
          description: 'ISO 3166-1 alpha-2 code (US, GB, JP); default US. Only for: Google Trends, Google Trends by Category, Pinterest Trending, Pinterest Trending by Category, TikTok Trending Hashtags, TikTok Trending Hashtags by Category, X (Twitter) Trending, YouTube Trending.'
          type: string
        limit:
          default: 25
          description: Max rows to return. Free plan boards return the top 10 only.
          maximum: 200
          minimum: 1
          type: integer
        mode:
          const: get_top_trends
          description: 'Canonical name (matches the MCP tool). Alias: ''top_trends''.'
          type: string
        offset:
          default: 0
          description: Rows to skip for pagination. Pinned to 0 on the Free plan; pagination is a paid feature.
          minimum: 0
          type: integer
        sort:
          default: rank
          description: '''rank'': current leaders. ''rank_change'': biggest climbers vs a prior snapshot (rows include prev_rank and rank_change).'
          enum:
          - rank
          - rank_change
          type: string
        type:
          description: One live feed. Required on both REST and MCP; omitting it returns a 400 missing_parameter error.
          enum:
          - Amazon Best Sellers Top Rated
          - Amazon Best Sellers by Category
          - App Store Top Free
          - App Store Top Paid
          - GitHub
          - Google News Top News
          - Google Play
          - Google Trends
          - Google Trends by Category
          - IMDb MOVIEmeter
          - Open Library Trending Books
          - Pinterest Trending
          - Pinterest Trending by Category
          - Polymarket Top Markets
          - Reddit Hot Posts
          - Reddit World News
          - Top Websites
          - Spotify Top Podcasts
          - Steam Most Played
          - Substack
          - Substack by Category
          - TikTok Trending Hashtags
          - TikTok Trending Hashtags by Category
          - TikTok Trending Searches
          - Wikipedia Trending
          - X (Twitter) Trending
          - YouTube Trending
          type: string
        window:
          default: 30d
          description: Lookback used only when sort is 'rank_change'. Short windows only have baselines on daily feeds.
          enum:
          - 1d
          - 3d
          - 7d
          - 14d
          - 30d
          type: string
      required:
      - mode
      - type
      type: object
    Envelope:
      description: 'REST answers HTTP 200 with an envelope: `{"statusCode": 400, "body": "…"}`. Read `statusCode`, then parse `body`. A missing or wrong key is the exception: HTTP 401 (`missing_api_key`) or 403 (`invalid_api_key`), with the error object as the body. Errors carry an `error` code and a `message`. Over MCP, a failed call sets `isError` on the tool result.'
      properties:
        body:
          contentMediaType: application/json
          contentSchema:
            oneOf:
            - $ref: '#/components/schemas/TimeSeriesResponse'
            - $ref: '#/components/schemas/GrowthResponse'
            - $ref: '#/components/schemas/TopTrendsResponse'
            - $ref: '#/components/schemas/ContextResponse'
            - $ref: '#/components/schemas/Error'
          description: 'JSON text: parse it a second time. On success it matches the tool''s response schema; any other statusCode means it parses to Error.'
          type: string
        statusCode:
          description: 'The real outcome: 200 on success, otherwise the error status.'
          type: integer
      required:
      - statusCode
      - body
      type: object
  securitySchemes:
    bearerAuth:
      description: API key (format `tmcp_live_...`). Get one free at https://hyperaware.live/account
      scheme: bearer
      type: http
externalDocs:
  description: API reference
  url: https://hyperaware.live/docs