YouTube Trending Scraper - Top Videos by Topic avatar

YouTube Trending Scraper - Top Videos by Topic

Pricing

from $0.38 / 1,000 videos

Go to Apify Store
YouTube Trending Scraper - Top Videos by Topic

YouTube Trending Scraper - Top Videos by Topic

Get the most-viewed YouTube videos for any topic. YouTube retired the Trending feed, so this searches each topic and sorts by views: the ranking is all-time, not this week. Each row has the title, views, age, duration, channel, thumbnail and URL. $0.40 per 1,000 videos.

Pricing

from $0.38 / 1,000 videos

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

3

Monthly active users

4 days ago

Last modified

Categories

Share

Scrape the most-viewed YouTube videos for any topic you name: give it a list of topics and get back the videos with the highest view counts for each one, with title, channel, view count, age, duration, thumbnail and the watch URL. No account, no API key, no quota.

Read this before you buy, because the name promises something YouTube no longer offers. YouTube retired the standalone Trending feed, so there is nothing left to read. What this does instead is search each topic and sort by views, which means the ranking is all-time, not this week. Ask it for "music" and the top of the list is a video with a hundred million views from three months ago, not the clip everyone is sharing today. If what you need is what is rising right now, this is the wrong purchase, however cheap it is.

InputTopics or keywords, one per line
OutputOne row per video: title, channel name and id, views, age and duration as YouTube prints them, thumbnail, watch URL
Ceiling2,000 videos per run
Account neededNone
Price$0.40 per 1,000 videos on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 12,500

One search per topic, sorted by view count, paged until it has what you asked for or the topic runs out. Give it five topics and a limit of 100 and it works down the list, stopping the moment the total is reached, so put the topic you care about most first.

Numbers come back exactly as YouTube prints them, as text: 115,768,253 views, 3 months ago, 4:21. That is deliberate. YouTube never publishes a real timestamp on a search result, only a phrase, and parsing "3 months ago" into a date would be inventing precision that was never there.

A video that appears under two of your topics is returned once and counted once.

📋 What data you get from each top YouTube video

What you getField
The 11 character video id and the watch linkvideoId, url
Titletitle
Who uploaded itchannelName, channelId
Views, as YouTube prints themviewCountText
How long ago it went uppublishedTimeText
DurationlengthText
The largest thumbnail on offerthumbnail
Always trending here, so rows merge with the other YouTube scrapersmode

▶️ How to scrape the most-viewed YouTube videos for a topic

  1. Open YouTube Trending Scraper and click Try for free.
  2. Type your topics into Topics / keywords, one per line, most important first.
  3. Set Max videos low while you are testing, since that is what you pay for.
  4. Click Start.
  5. Download the dataset as JSON, CSV or Excel, or pull it from the Apify API.

💰 How much does it cost to scrape the most-viewed YouTube videos?

$0.40 per 1,000 videos on the Free plan. Paid plans pay a little less: $0.395 on Starter, $0.39 on Scale and $0.385 on Business. On the free plan, the $5 Apify gives you each month covers about 12,500 videos.

You pay per video returned, so the bill follows Max videos rather than how many topics you typed. A video found under two topics counts once. Diagnostic rows are not charged, and a topic that returns nothing adds nothing to the bill.

📥 What you give it

{
"keywords": ["music", "gaming", "ai"],
"maxItems": 100
}
FieldDefaultWhat it is
keywordsnoneOne topic per line, most important first. With an empty list you get one uncharged BAD_INPUT row and nothing is searched. The form opens with music as an example.
maxItems50Total videos across every topic, not per topic. Up to 2,000. This is what you pay for.
proxyConfigurationApify network onThe default is fine for YouTube. Leave it alone unless you have your own servers you want the traffic to leave through.
notionConnectornoneOptional. Deliver the rows to a Notion workspace you have connected to Apify.
notionParentIdnoneThe Notion database to write them into, when you use the connector.

📤 What you get back

A real row from a real run. The thumbnail link is cut short so the block stays readable:

{
"ok": true,
"videoId": "OQac93ARgQE",
"title": "TUL8TE, Saint Levant - Nano I تووليت، ساينت ليفانت - نانو (Official Music Video)",
"url": "https://www.youtube.com/watch?v=OQac93ARgQE",
"channelName": "TUL8TE",
"channelId": "UC5a1OK2lI0Q2x2jyJSDyc7A",
"viewCountText": "115,768,253 views",
"publishedTimeText": "3 months ago",
"lengthText": "4:21",
"thumbnail": "https://i.ytimg.com/vi/OQac93ARgQE/hq720.jpg?sqp=...",
"mode": "trending"
}
FieldHow to read it
videoIdIt survives a title change, so key on it rather than the URL.
viewCountTextWhat YouTube printed. On a live stream it reads N watching instead of a view count.
publishedTimeTextYouTube's own phrase, like 3 months ago. Empty on a live stream, which has not been published yet.
lengthTextDuration as shown, 4:21. Live streams have none.
channelIdThe UC... id, or an empty string when the byline is a collaboration rather than one channel. Measured at 41 of 45 rows carrying an id on one run.
thumbnailSigned and time limited, so download what you want to keep.

🧾 Reading the output

RowHow to spot itBilled
A videook: true with a videoIdyes
A diagnosticok: false with an errorCode and the topic it belongs tono

Filter on ok == true and you have your data. A diagnostic row does not stop the run. The other topics carry on.

CodeWhat it means
RATE_LIMITED, SERVER_ERROR, NETWORKThat topic would not answer this run. Re-running usually clears it.
NOT_SERVEDThis video was not served this run. Re-run it later. Until 12 October 2026 this code was called BLOCKED.
NOT_FOUNDThe search came back as not found.
NO_RESULTSThe search worked and that topic had nothing to return.
BAD_INPUTNo topics were given, so there was nothing to search.
TIME_LIMITThe run got close to its time limit and stopped on its own. The videos delivered before that are in the dataset and charged as usual. Give the run more time, or ask for fewer videos, to get the rest.

A run ends as failed only when the time limit stopped it before any video came back.

💡 What people use it for

  • Sizing a niche before making anything: what does the top of this topic actually look like, and how big are the numbers.
  • Finding the channels that own a subject, by grouping rows on channelName.
  • Filling a content calendar with formats that already worked, rather than guesses.
  • Checking the same topics week to week. The ranking moves slowly, so weekly tells you more than hourly.

From a topic to the channels that own it, in three runs:

  1. Run this on your topic and group the rows on channelName.
  2. Paste the strongest channels into the Channels box of YouTube Channel Scraper to see how often they post and what.
  3. Put the url of the top videos into the Video URLs or IDs box of YouTube Transcript Scraper to study what they say.

🚧 What it does not do

  • It is not this week's trending. The ranking is all-time views for the topic. YouTube retired the feed that would have answered the other question.
  • No description, no like count, no comment count. The search results do not carry them. Pull those separately if you need them.
  • No dates. publishedTimeText is YouTube's phrase, not a timestamp, and nothing here turns one into the other.
  • News-shaped topics come back full of live streams, which have N watching where the view count goes and no publish date or duration at all.
  • A collaboration byline leaves channelId empty, because YouTube gives that row no single channel to point at. channelName still fills in.
  • 2,000 videos per run, and maxItems counts across every topic together.
  • If YouTube answers a sorted request in relevance order anyway, the rows come back in that order and nothing on the row flags it.
  • It is not an official YouTube tool. Dami's Studio is independent and is not affiliated with or endorsed by YouTube or Google, or by any other company named on this page.

🧭 Which YouTube scraper do you need?

If you wantUse
The most-viewed videos for a topicThis one
A keyword search in YouTube's own order, or a channel's newest uploadsYouTube Scraper
Shorts from a channel or a keyword, with exact view and like countsYouTube Shorts Scraper
Only the new uploads since your last checkYouTube Upload Monitor
What a video says, as text, SRT and VTTYouTube Transcript Scraper
Comments under a videoYouTube Comments Scraper
The video, its audio or its subtitles as a fileYouTube Downloader Pro
What people are searching for right now, from Google TrendsGoogle Trends Scraper

❓ Questions people ask

Do I need a YouTube API key?

No. No key, no OAuth, no quota to manage.

Why is a three-month-old video at the top?

Because the sort is total views, and an older video has had longer to collect them. That is what "most viewed for this topic" means here.

Can I get exact numbers instead of text?

Not from this one. viewCountText carries the digits YouTube printed, so 115,768,253 views parses cleanly enough, but the age never will.

Does it cover a country or a language?

Not as a setting. Phrase the topic in the language you want and you mostly get that language back.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/youtube-trending-scraper. Either way the run happens on your Apify account at the same price.

This reads public search results, the same ones a signed-out visitor sees. Apify's write-up on the legality of web scraping is a reasonable starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Include the topics you used and the run ID. Any diagnostic rows in your dataset already name the reason.