Trends

See what is taking off on short-form video right now, so you can post while it is still growing.

At a glance
What it does
Shows what is trending on TikTok, YouTube and Instagram, worldwide or in one country.
You send
Nothing required. Optionally a region like gb, or dates to see past days.
You get back
Within seconds, a ranked list of trends, each with a summary, momentum label and example videos.
Cost
$0.25 per request, even when nothing matches. Listing regions and failed requests are free.

Start with today's trends. Emerging trends shows only new and rising trends, and trends by date covers past days.

A trend is a topic many people are posting about, like a news moment or a meme. Each region gets one ranked daily list (a "trend group" in the API), usually 15 to 20 trends.

  • Regions are global (the default), us, gb, au and sg. Each region's list is made on local time for that audience, not cut from global.
  • Virlo finds new trends at 7:00, 13:00 and 19:00 local time. The 7:00 run starts the day's list.
  • About every 2 hours, Virlo re-checks momentum and re-sorts the list, so rankings shift.
  • Virlo drops trends that still have no example videos and, beyond the top 20, the coldest ones. Trends under 6 hours old are never dropped. So a trend can vanish mid-day.
  • Active trends carry over to the next day.
  • Two trends can occasionally cover the same story.

Trends can't be filtered by platform, niche or keyword. For one niche, use a Content Research Agent.

Example videos are the all-time most viewed, often months or years old. Check publish_date.

Momentum

Momentum shows how fast a trend is growing. Each trend has a momentum object:

  • Name
    status
    Type
    string
    Description
    • new: first spotted less than 8 hours ago.
    • rising: views growing more than 15% faster than in the previous 2 hours.
    • steady: about the same speed.
    • fading: more than 15% slower.
  • Name
    score
    Type
    number
    Description

    0 to 1. About 1,000 views an hour scores 0.6, 10,000 scores 0.8, and 100,000 or more scores 1.

  • Name
    views_per_hour
    Type
    integer
    Description

    Combined hourly view growth of the example videos between the last two checks.

  • Name
    updated_at
    Type
    string
    Description

    Time of the last check (UTC).

A new trend's numbers are rough until the 3rd check, usually within 6 hours.

Details for developers
  • momentum is null until the first check. It stays null, sorted last, if fewer than 3 example videos can be re-checked.
  • After the 1st check, score is a 0.3 to 0.7 placeholder and views_per_hour is 0. The 2nd check measures both.
  • Until the 3rd check, status is estimated from how many videos on the topic were posted the day before Virlo found it.
  • Only the newest list gets updates. Past days keep their last reading.
GET/v1/trends/digest

Returns one region's latest daily list.

Cost per request:$0.25
  • You get the newest list from the last 48 hours. Lists start at 7:00 local, so earlier you get yesterday's.
  • title shows today's date even on yesterday's list. Use local_date.
  • Lists under 15 trends get filled to 15 with earlier days' trends. These come last, with their old trend_group_id.
  • If the newest list is empty, you get the latest one with trends, even an older one. With no list in 48 hours, data is empty.
  • Name
    region
    Type
    string
    Description

    Region code. Default global.

  • Name
    top_exemplars
    Type
    integer
    Description

    Example videos per trend, 0 to 20. Default 5. 0 makes the response much smaller.

It also accepts limit, start_date and end_date, but ignores them.

You send
GET
/v1/trends/digest
curl -G https://api.virlo.ai/v1/trends/digest \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d region=au
You get back
{
  "data": [
    {
      "id": "7cf7a841-e7a7-4844-8ac4-ed9823615bae",
      "title": "Trends for Sep 25",
      "region": "au",
      "local_date": "2026-09-24",
      "trends": [
        {
          "ranking": 9,
          "trend": {
            "id": "745ff63d-09d7-483b-94e2-3c7a6bf5c527",
            "name": "AFL Grand Final training buzz: Freo, Lions, and imminent crowd energy",
            "description": "On September 23, 2026, thousands of Fremantle Dockers fans gathered at Cockburn ARC for an open training session ahead of the AFL Grand Final against the Brisbane Lions...",
            "trend_type": "content"
          },
          "momentum": {
            "score": 0.6456,
            "status": "fading",
            "views_per_hour": 1690,
            "updated_at": "2026-09-24T16:00:01.056Z"
          },
          "velocity_today_count": 0,
          "velocity_median_views": 0,
          "detected_at": "2026-09-23T21:06:49.273+00:00",
          "last_seen_at": "2026-09-23T21:06:49.273+00:00",
          "origin_region_codes": null,
          "global_confidence": null,
          "exemplar_count": 6,
          "scrape_status": "success",
          "id": "04a9f0c1-988c-4f38-844a-3e15e9a80b4e",
          "trend_id": "745ff63d-09d7-483b-94e2-3c7a6bf5c527",
          "trend_group_id": "7cf7a841-e7a7-4844-8ac4-ed9823615bae",
          "top_exemplars": [
            {
              "video_id": "411eabfc-1074-4c5a-b04c-c4deb43174b6",
              "url": "https://www.tiktok.com/@9news/video/7687586729653783815",
              "platform": "tiktok",
              "views": 457017,
              "thumbnail_url": "https://auth.virlo.ai/storage/v1/object/public/thumbnails/c3cdffed0e38dd1c3ac48e836c169367feaca911cc77fb2708bf40fd328663f0.jpg",
              "publish_date": "2026-09-20T12:02:55",
              "author": {
                "username": "9news",
                "avatar_url": "https://auth.virlo.ai/storage/v1/object/public/avatars/efb8c840b5308a468320874e1f818cfb2214455b4b9afa8e4ea31828454f902f.heic",
                "verified": false
              }
            }
          ]
        }
      ]
    }
  ]
}
Full field reference

Times are UTC. Each daily list has id, region, trends and:

  • Name
    title
    Type
    string
    Description

    Display text. Trends by date shows the UTC start date, a day early for au and sg. Use local_date.

  • Name
    local_date
    Type
    string | null
    Description

    The list's day in the region's timezone. null on global lists before July 7, 2026, and a few from August 2026.

Each trend has:

  • Name
    ranking
    Type
    integer
    Description

    1 has the most momentum.

  • Name
    trend
    Type
    object
    Description

    id, name, description and trend_type (content since mid-October 2025, older ones twitter, native or null).

  • Name
    momentum
    Type
    object | null
    Description

    See Momentum. Always present, null until the first check.

  • Name
    top_exemplars
    Type
    array
    Description

    Example videos, most-viewed first.

  • Name
    exemplar_count
    Type
    integer
    Description

    Total example videos linked.

Each example video has video_id, url, platform (tiktok, youtube or instagram), views, thumbnail_url, publish_date (can be much older than the trend) and author (username, avatar_url, verified).

GET/v1/trends/emerging

Returns only the new and rising trends from a region's latest list, highest momentum first.

Cost per request:$0.25
  • You get one flat list, not daily lists. Often fewer than limit, sometimes none (still $0.25).
  • Momentum comes as flat fields: status, momentum_score and views_per_hour.
  • Name
    region
    Type
    string
    Description

    Region code. Default global.

  • Name
    limit
    Type
    integer
    Description

    Most trends to return, a whole number from 1 to 50. Default 20.

  • Name
    top_exemplars
    Type
    integer
    Description

    Example videos per trend, 0 to 20. Default 5.

You send
GET
/v1/trends/emerging
curl -G https://api.virlo.ai/v1/trends/emerging \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d region=gb \
  -d limit=20
You get back
{
  "region": "gb",
  "generated_at": "2026-09-24T17:26:34.614Z",
  "data": [
    {
      "ranking": 1,
      "trend": {
        "id": "d968f93c-be19-4598-9100-cad47a732a4c",
        "name": "Drama & memes around Rory Stewart BBC Newsnight moment",
        "description": "On September 18, 2026, former MP Rory Stewart appeared on BBC's Newsnight, where he dramatically spun in his chair to stare at Ailbhe Rea...",
        "created_at": "2026-09-24T06:05:44.925004+00:00",
        "trend_type": "content"
      },
      "status": "rising",
      "momentum_score": 1,
      "views_per_hour": 257371,
      "region": "gb",
      "detected_at": "2026-09-24T06:05:45.122+00:00",
      "last_seen_at": "2026-09-24T12:06:30.905+00:00",
      "exemplar_count": 13,
      "id": "8ff9f920-2804-4f6a-91ec-08cddfa5d7db",
      "trend_id": "d968f93c-be19-4598-9100-cad47a732a4c",
      "top_exemplars": [
        {
          "video_id": "367da5d1-5510-4e73-b9a5-fd6207e9915e",
          "url": "https://www.tiktok.com/@thesun/video/7688710703854767392",
          "platform": "tiktok",
          "views": 5050311,
          "thumbnail_url": "https://auth.virlo.ai/storage/v1/object/public/thumbnails/5f78a37402cb781959c245240f08b7ea1672b0867346cf35771adb32f177e612.jpg",
          "publish_date": "2026-09-23T12:44:27",
          "author": {
            "username": "thesun",
            "avatar_url": "https://auth.virlo.ai/storage/v1/object/public/avatars/7a926491c16af666224735afecb62c829a4e11f774fd221b2514238a4ef6a231.webp",
            "verified": false
          }
        }
      ]
    }
  ]
}
Full field reference

Top level: region, generated_at, data. Each trend has region, id, trend_id, detected_at, last_seen_at, exemplar_count and top_exemplars as on today's trends, plus:

  • Name
    ranking
    Type
    integer
    Description

    Position in the full daily list, so numbers can skip.

  • Name
    trend
    Type
    object
    Description

    Adds created_at, when Virlo first recorded the trend. It can be much older than detected_at.

  • Name
    status
    Type
    string
    Description

    new or rising. Before the first check it is estimated, so a just-found trend shows rising, not new.

  • Name
    momentum_score
    Type
    number
    Description

    Like momentum.score. Before the first check it is an estimate (0.7 or 0.9) where the daily list shows null. Trends with under 3 example videos keep it.

  • Name
    views_per_hour
    Type
    integer | null
    Description

    null before the first check.

GET/v1/trends

Returns one region's daily lists in a date range, newest first. With no dates, you get the last 24 hours: normally today's list, topped up to 15. Date-range lists are not topped up.

Cost per request:$0.25

How the dates work

Dates match each list's 7:00 local start, in UTC, and a plain date means midnight UTC. So for global, us and gb, set end_date to the day after your last day. au and sg lists start the evening before in UTC, so set start_date to the day before your first day instead.

History starts September 15, 2025 for global, July 6, 2026 for us and gb, July 7 for au and July 29 for sg. Before July 7, 2026, global lists have no local_date, and a day can have two. Read the day from title and tell them apart by id.

  • Name
    region
    Type
    string
    Description

    Region code. Default global.

  • Name
    start_date
    Type
    string
    Description

    2026-07-14 or a UTC time like 2026-07-14T00:00:00Z. Default 24 hours ago.

  • Name
    end_date
    Type
    string
    Description

    Same format. Default now.

  • Name
    limit
    Type
    integer
    Description

    Most daily lists to return, 1 to 100. Default 50. Higher counts as 100.

  • Name
    top_exemplars
    Type
    integer
    Description

    Example videos per trend, 0 to 20. Default 5.

This gets UK lists for July 14 to 16.

You send
GET
/v1/trends
curl -G https://api.virlo.ai/v1/trends \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d region=gb \
  -d start_date=2026-07-14 \
  -d end_date=2026-07-17
You get back
{
  "data": [
    {
      "id": "8108e2f4-3a40-4f85-9f2a-3c9ec1ccf79c",
      "title": "Trends for Jul 16th",
      "region": "gb",
      "local_date": "2026-07-16",
      "trends": [
        {
          "ranking": 1,
          "trend": {
            "id": "7002bfb2-8261-4c64-9921-c6797533e8ba",
            "name": "World Cup Final Tease & Pre-Show Buzz (Banner & Flags)",
            "description": "Ahead of the 2026 FIFA World Cup final on July 19, 2026, excitement is building as Argentina, led by Lionel Messi, prepares to face Spain...",
            "trend_type": "content"
          },
          "momentum": {
            "score": 1,
            "status": "rising",
            "views_per_hour": 2617163,
            "updated_at": "2026-07-17T05:00:00.708Z"
          },
          "velocity_today_count": 96,
          "velocity_median_views": 329031,
          "detected_at": "2026-07-16T12:05:34.855+00:00",
          "last_seen_at": "2026-07-16T12:05:34.855+00:00",
          "origin_region_codes": null,
          "global_confidence": null,
          "exemplar_count": 144,
          "scrape_status": "success",
          "id": "2460d76e-5641-43a0-afb7-82f4e0cd33f7",
          "trend_id": "7002bfb2-8261-4c64-9921-c6797533e8ba",
          "trend_group_id": "8108e2f4-3a40-4f85-9f2a-3c9ec1ccf79c",
          "top_exemplars": [
            {
              "video_id": "a4397cf9-35b9-45ec-a4e3-7ab414c2aadf",
              "url": "https://www.tiktok.com/@fifaworldcup/video/7662504667452099862",
              "platform": "tiktok",
              "views": 154919730,
              "thumbnail_url": "https://auth.virlo.ai/storage/v1/object/public/thumbnails/2fdf43d6-0a47-4616-a21f-0c7dc51c67b8.jpg",
              "publish_date": "2026-07-14T21:51:39",
              "author": {
                "username": "fifaworldcup",
                "avatar_url": "https://auth.virlo.ai/storage/v1/object/public/avatars/ccd523186bc6d0b89762cb4bb4c9c7d60bc6266497dc5ddedb24ae3c5b50e0f5.heic",
                "verified": false
              }
            }
          ]
        },
        {
          "ranking": 9,
          "trend": {
            "id": "1e15ebc7-7b09-4118-a092-c5788cc3728d",
            "name": "New Music from ROLE MODEL",
            "description": "On July 10, 2026, Role Model (Tucker Pillsbury) released his new single 'Joy,' the second track from his upcoming album...",
            "trend_type": "content"
          },
          "momentum": null,
          "velocity_today_count": 0,
          "velocity_median_views": 0,
          "detected_at": "2026-07-16T06:04:53.03+00:00",
          "last_seen_at": "2026-07-16T06:04:53.03+00:00",
          "origin_region_codes": null,
          "global_confidence": null,
          "exemplar_count": 2,
          "scrape_status": "success",
          "id": "70a03e12-4624-4641-a84b-37a0a10ca6fc",
          "trend_id": "1e15ebc7-7b09-4118-a092-c5788cc3728d",
          "trend_group_id": "8108e2f4-3a40-4f85-9f2a-3c9ec1ccf79c",
          "top_exemplars": [
            {
              "video_id": "6d6bd156-c88f-4de0-bc9a-54ef6493506c",
              "url": "https://www.tiktok.com/@popgirly.era/video/7660846467308916000",
              "platform": "tiktok",
              "views": 136426,
              "thumbnail_url": "https://auth.virlo.ai/storage/v1/object/public/thumbnails/8ca67ff9-a8e5-4af5-af10-e6111b615ba9.jpg",
              "publish_date": "2026-07-10T10:36:58",
              "author": {
                "username": "popgirly.era",
                "avatar_url": "https://auth.virlo.ai/storage/v1/object/public/avatars/fd82bc9bebdbb037c7162c4c33a8f1702e6e3d356df52436d0eaa04af19ddc7c.webp",
                "verified": false
              }
            }
          ]
        }
      ]
    }
  ]
}

The fields match Get today's trends.

GET/v1/trends/regions

List regions

Free. Returns every region code with its name and timezone. New regions get added, so check here. AU and au both work.

You send
GET
/v1/trends/regions
curl https://api.virlo.ai/v1/trends/regions \
  -H "Authorization: Bearer YOUR_API_KEY"
You get back
{
  "data": [
    { "code": "au", "name": "Australia", "timezone": "Australia/Sydney" },
    { "code": "gb", "name": "United Kingdom", "timezone": "Europe/London" },
    { "code": "global", "name": "Global", "timezone": "America/New_York" },
    { "code": "sg", "name": "Singapore", "timezone": "Asia/Singapore" },
    { "code": "us", "name": "United States", "timezone": "America/New_York" }
  ]
}

Errors

Failed requests count toward your rate limit.

  • Name
    400 Bad Request
    Description
    • A bad date (invalid_date_range). Use 2026-07-14.
    • limit below 1 or not a number. Decimals round down, except on emerging, where decimals and values over 50 fail.
    • top_exemplars outside 0 to 20, or not a whole number.
    • An unknown region (unknown_region).
    • A parameter these calls don't take, like platform.

    message is an array of strings, except for unknown_region.

  • Name
    401 Unauthorized
    Description

    Missing or invalid API key.

  • Name
    402 Payment Required
    Description

    Balance too low. Add funds.

  • Name
    429 Too Many Requests
    Description

    Wait retry_after seconds. Today's trends and trends by date each allow 50 a minute, 500 an hour and 5,000 a day. Emerging allows 60, 600 and 6,000. Some accounts have lower limits; the X-RateLimit-Limit header shows yours.

More in Errors and Rate limits.

Was this page helpful?