YouTube Trending Scraper
Scrape trending YouTube videos by topic or keyword, no login or API key. Views, titles, channels, duration, thumbnails.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
keywords,maxItems,notionConnector(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.0004 per video = $0.4 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Video returned | Charged once per video returned. Failed/empty runs are not charged. | $0.0004 |
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.001 |
Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-04, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
keywords | Topics to find the most-viewed (trending) videos for. | array |
maxItems | Max videos to collect. Charged per video. | integer |
notionConnector | Optional. Deliver results to your connected Notion via Apify MCP connectors. | string |
notionParentId | Optional Notion database/data-source id. | string |
What you get
A structured dataset — each result includes fields like:
titlechannelNameviewCountTextpublishedTimeTexturlExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in YouTube & Creator Tools
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
YouTube Channel Email Scraper
Find business emails publicly listed in YouTube channel descriptions and their linked websites. Built for creator outreach and sponsorships. No login needed.
YouTube Scraper
Scrape YouTube videos by keyword or channel without the API. Get titles, views, publish dates, watch URLs and channel data. No key or cookies needed.
YouTube Channel Monitor — New Upload Tracker
Watch any YouTube channels and get only their new uploads as structured data — title, URL, views, duration, Shorts flag. Works as an upload trigger.
YouTube Video & Audio Downloader
Download YouTube videos as MP4 or extract MP3 audio at your chosen quality, with metadata and optional SRT subtitles. Paste a URL and run.
YouTube Video Uploader
Upload videos to your YouTube channel from a URL with no code: set title, tags, privacy, thumbnail, and schedule an auto-publish time via OAuth.
AI Viral Clip Cutter — Long Video to Shorts
Turn a long podcast, interview, or webinar into ranked short clips with AI-scored moments and word-synced captions for TikTok, Reels, and Shorts.
Where this tool sits
- Categories
- YouTube & Creator Tools
- Platforms
- YouTube
⚡ YouTube Trending Scraper — Top Videos by Topic (No Login, No API Key)
Find the most-viewed (viral) YouTube videos for any topic — without a key, a login, or a cookie. Give it a list of topics or keywords and get back the top-performing videos for each: title, view count, channel, published time, duration and full-resolution thumbnail. Export to JSON, CSV or Excel, call it from the API, or have results delivered straight to Notion. Billed per video returned — an empty or failed run costs only the $0.001 start fee.
> No OAuth. No Data API quota to manage. No browser to babysit. Paste a topic and run.
Why this scraper wins
- 💰 The cheapest YouTube trending scraper on the market — $0.40 per 1,000 videos, and you only pay for videos you actually receive.
- 🔓 Truly keyless — it talks to YouTube's own public JSON endpoints. You never supply a Google account, API key, or cookies, and there is no daily quota to budget.
- 📈 Sorted by views — results come back ranked by view count, so the first rows are the actual trending/viral videos for each topic (YouTube retired the old standalone Trending feed; this is the reliable keyless replacement).
- 🎯 Any niche, not just YouTube's editorial picks — the retired Trending tab only ever showed one national list. Here you decide the topic:
ai agents,padel,home espresso,sneaker unboxing. - 🧹 Clean, flat output — one tidy record per video, ready for spreadsheets, dashboards or LLM pipelines. No nested API soup to flatten yourself.
- 🔁 Auto-dedupe — the same video is never returned (or charged) twice in a run, even when two of your topics overlap.
- 📬 Built-in delivery — optionally push every run straight into Notion via Apify connectors, no extra code.
- 🚦 Honest errors — if a topic is blocked or returns nothing, you get a clear diagnostic row (
NO_RESULTS,NETWORK,RATE_LIMITED, …) instead of silent emptiness. Diagnostic rows are never charged. - 🪶 Light and fast — no headless browser, so runs finish in seconds and 1024 MB of memory is plenty.
What you can collect
| Mode | Input | Notes |
|---|---|---|
| Top videos by topic | one or more keywords | ✅ Fully keyless, sorted by view count |
| Multi-topic batch | several keywords in one run | ✅ Each topic crawled independently, results merged + deduped |
Typical uses:
- Content research — see what is actually pulling views in your niche this week before you script the next video.
- Trend monitoring — schedule a daily run on 5–10 topics and diff the results to catch a video breaking out.
- Creator discovery — the
channelName+channelIdon every row give you a ranked list of who owns a topic. - Ad and thumbnail research —
thumbnailreturns the largest available image, good enough for a side-by-side board. - Dataset building — feed titles and view counts into an LLM or a notebook to model what a winning title looks like.
Input
| Field | Type | Description |
|---|---|---|
keywords | array of strings | Topics/keywords to find the most-viewed videos for (e.g. music, gaming, ai). Required. |
maxItems | integer | Cap on total videos collected across all topics (1–2000, default 50). You pay per video, so this is also your budget cap. |
proxyConfiguration | object | Proxy settings. Rotating datacenter addresses are the default and work fine for YouTube. You may supply your own proxy URLs instead. |
notionConnector | string | Optional. Connector ID to deliver results to your connected Notion. |
notionParentId | string | Optional. Notion database / data-source ID to write into. |
Input field names follow the conventions used across similar Actors on the store, so switching over is usually a drop-in change — keywords and maxItems are exactly what you would expect them to be.
Example input
{
"keywords": ["ai agents", "home espresso", "padel"],
"maxItems": 150,
"proxyConfiguration": { "useApifyProxy": true }
}
That run visits each of the three topics in turn, collects the highest-view videos for each, and stops as soon as 150 unique videos have been delivered across all of them.
Output (one record per video)
{
"ok": true,
"videoId": "dQw4w9WgXcQ",
"title": "Top Music Video of the Week",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"channelName": "Example Channel",
"channelId": "UCabc123XYZ",
"viewCountText": "128,452,901 views",
"publishedTimeText": "3 weeks ago",
"lengthText": "4:21",
"thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg",
"mode": "trending"
}
| Field | Meaning |
|---|---|
ok | true on a real video row, false on a diagnostic row |
videoId | YouTube's 11-character video id |
title | Video title as displayed |
url | Canonical watch URL, built from videoId |
channelName | Uploading channel's display name |
channelId | Channel id (UC…) when YouTube exposes it in the result; may be empty |
viewCountText | View count as text, exactly as YouTube renders it |
publishedTimeText | Relative publish time as text ("3 weeks ago") |
lengthText | Duration as text ("4:21"); empty for live streams |
thumbnail | Largest thumbnail URL available for the video |
mode | Always "trending" for this Actor |
If a topic fails or returns nothing, you get a diagnostic row instead:
{
"ok": false,
"errorCode": "NO_RESULTS",
"error": "The request succeeded but returned no results for this input.",
"keyword": "asdkjhasdkjh"
}
Possible errorCode values: NO_RESULTS, NETWORK, RATE_LIMITED, BLOCKED, SERVER_ERROR, NOT_FOUND, BAD_INPUT. Diagnostic rows are never charged.
Calling it from the API
Every Apify Actor is also a REST endpoint. Run it synchronously and get the dataset back in one call:
curl -X POST "https://api.apify.com/v2/acts/Dami_Studio~youtube-trending-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "keywords": ["ai agents"], "maxItems": 25 }'
Or in JavaScript:
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('Dami_Studio/youtube-trending-scraper').call({
keywords: ['ai agents', 'padel'],
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((i) => i.ok).length, 'videos');
Results are also downloadable as JSON, CSV, XLSX, XML or RSS straight from the run's dataset page.
Pricing
$0.40 per 1,000 videos ($0.0004 per video), plus a $0.001 fee each time a run starts. This is the cheapest YouTube trending scraper on the market.
A concrete example: a run that returns 250 videos costs 250 × $0.0004 + $0.001 = $0.101.
You are only charged for videos actually returned — a failed or empty run costs just the $0.001 start fee.
Billing
Two charges apply:
1. A $0.001 run-start fee each time a run begins. 2. $0.0004 per video actually delivered to the dataset.
Sample rows, diagnostic rows, duplicates, blocked look-ups and no-result runs never incur the per-video fee — a run that returns nothing costs only the $0.001 start fee. Because duplicates are filtered before they are pushed, overlapping topics never double-charge you for the same video.
maxItems is a hard cap on the number of billable videos, so you always know the ceiling on a run before you start it.
Limitations — read these before you buy
Stated plainly, because they are cheaper to know now than to discover later:
- View counts and publish times are text, not numbers.
"128,452,901 views"and"3 weeks ago"are exactly what YouTube's frontend returns. Converting them is one line (see the FAQ), but the Actor does not guess at an absolute timestamp it was never given. - There is no "official Trending tab" behind this. YouTube retired that standalone feed. What you get is the most-viewed videos for the topic you asked for. That is more useful for niche research, but it is not a mirror of any editorial chart.
- Ranking is YouTube's, not ours. Results come back in YouTube's view-sorted order for your query; the exact set can shift between runs and can differ by proxy country.
channelIdcan be empty. Some result layouts do not carry the channel's browse id.channelNameis always present when a channel is attributed.lengthTextis empty for live streams and for some Shorts layouts.- No comments, subscriber counts, descriptions, transcripts or engagement metrics. This Actor returns the fields listed in the output table and nothing else. Pair it with a dedicated video-details or comments Actor if you need those.
- Shorts may appear in results for topics where they dominate views. There is no filter to exclude them.
- Very large
maxItemsvalues hit diminishing returns. Deep pages of a single topic drift away from "trending" and into long-tail results. Multiple focused topics beat one topic withmaxItems: 2000. - Rate limiting is real. Heavy, high-concurrency use can draw
RATE_LIMITEDrows. The Actor backs off and retries automatically; if you still see them, lower the volume or supply your own proxies. - Non-English topics work, but results are requested with a US/English locale, so the mix you get may differ from what you would see logged in from that country. Use a proxy in the target country for a closer match.
FAQ
Do I need a Google account or YouTube Data API key? No. The Actor is fully keyless — no account, no OAuth, no quota to manage.
Why topic search instead of a "Trending" tab? YouTube retired its standalone Trending feed. Searching a topic sorted by view count is the reliable keyless way to surface the most-viewed/viral videos, and it lets you target any niche instead of one national list.
Why are view counts text ("128,452,901 views")? That's exactly what YouTube's frontend returns. Parse it with Number(row.viewCountText.replace(/\D/g, '')) if you need an integer.
How do I get newest-first instead of most-viewed? You don't — this Actor is specifically the view-sorted surface. publishedTimeText lets you filter the results afterwards.
Can I get results in Notion? Yes — supply a notionConnector (and optionally notionParentId) and every run is delivered automatically via Apify connectors. Your Notion credentials stay in Apify's connector proxy and never enter the Actor.
A topic returned an errorCode row — why? That's the Actor telling you exactly what happened (e.g. NO_RESULTS, NETWORK) instead of failing silently. Retry, rephrase the topic, or switch proxy country. You are not charged for that row.
Can I run it on a schedule? Yes — use Apify Schedules. A daily run over a fixed keyword list is the standard way to build a trend history.
Which proxy should I use? The default (rotating datacenter addresses) is fine for YouTube. You can also pass your own proxyUrls.
How much memory does it need? 1024 MB, the default. There is no browser involved, so raising it only raises your start fee.