YouTube Video Scraper By Hashtag avatar

YouTube Video Scraper By Hashtag

Pricing

$19.99/month + usage

Go to Apify Store
YouTube Video Scraper By Hashtag

YouTube Video Scraper By Hashtag

YouTube Video Scraper by Hashtag extracts videos associated with any YouTube hashtag, capturing titles, descriptions, creators, metrics, timestamps, and video URLs. Perfect for trend tracking, content research, hashtag analysis, and automating structured YouTube hashtag-based data collection.

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

SimpleAPI

SimpleAPI

Maintained by Community

Actor stats

1

Bookmarked

4

Total users

2

Monthly active users

10 days ago

Last modified

Share

YouTube Hashtag Scraper — Videos, Shorts and View Counts

YouTube Video Scraper by Hashtag pulls videos and Shorts straight from YouTube's own public search results, matched by hashtag, plain keyword, or @handle. Every row returns the video's thumbnail URL, title, video ID, canonical URL, view count, and type (video or shorts), plus YouTube's own hashtag summary line when the search surfaces one. Content strategists, trend researchers, and SEO teams use it to see exactly what a hashtag or keyword actually surfaces on YouTube before building content or a campaign around it. No YouTube account, API key, or developer quota is required — you supply search terms and get structured rows back.

🔍 What is YouTube Video Scraper by Hashtag?

YouTube Video Scraper by Hashtag is an Apify Actor that runs your search terms through YouTube's public search pages, follows YouTube's own pagination, and returns one structured dataset row per unique video or Short. It does not require a YouTube account, sign-in, or API key — it reads the same search results any visitor sees.

  • Three genuine search types in one run#chatgpt runs a hashtag search, chatgpt runs a keyword search, @mkbhd runs a handle search. Terms are used exactly as typed, never rewritten into a different search kind.
  • Core identifying fields returned — video ID, title, canonical watch/Shorts URL, and the largest thumbnail YouTube served.
  • Engagement and classification data — view count and a video/shorts type flag, set only from YouTube's explicit signals rather than guessed from duration.
  • Shorts included by default, isolatable on demand — ordinary searches include Shorts pulled from YouTube's live Shorts shelf, and a dedicated switch narrows a run to Shorts only.
  • Bulk, per-term limits — scrape many search terms in one run, with a result cap applied individually to each term.
  • Standard Apify export formats — every run's dataset can be downloaded as JSON, CSV, Excel, or HTML table, or read via the Apify API.

📦 What data can I extract with YouTube Video Scraper by Hashtag?

Each row returns identifying, engagement, and hashtag-context data for one video or Short — these are the exact seven keys the Actor's row-builder writes, and every row carries all seven:

FieldExample valueUse case
thumbnailUrl"https://i.ytimg.com/vi/aB3xY7zT9Qk/hq720.jpg?sqp=..."Preview images for a content grid or report
title"ChatGPT Explained in 5 Minutes"Topic and keyword analysis, listing display
id"aB3xY7zT9Qk"Stable key for joining against other datasets, building the video URL
url"https://www.youtube.com/watch?v=aB3xY7zT9Qk"Direct link for review, embedding, or outreach
viewCount214830Ranking videos by traction, trend measurement
type"video"Separating ordinary uploads from Shorts in analysis
hashtagCategoryData.categoryInfoText"2.6M videos • 822K channels"Sizing a hashtag's overall footprint before committing to it

Engagement and classification data

viewCount and type are the two fields that let you rank and segment results. viewCount carries YouTube's exact digit count on ordinary search rows ("483,437 views"483437), but on Shorts rows it carries YouTube's own abbreviated form expanded to an integer ("4.5M views"4500000) — rounded to whatever precision YouTube chose to display, not exact to the digit. viewCount is null when YouTube served no count at all, such as a live stream showing a "watching now" figure instead of views. type is set only when YouTube itself routes the video to /shorts/<id> or the Shorts player — never inferred from video length — so a short ordinary upload is never mislabeled as a Short.

Search-type and targeting fields

hashtagCategoryData.categoryInfoText is a literal flat key containing a dot, not a nested object, and it is populated only on hashtag searches (#chatgpt) — keyword searches, handle searches, and Shorts-only runs return null for it, because YouTube itself does not render that summary line on those result pages. Combined with the type field, it lets you separate "how big is this hashtag" research from ordinary keyword or creator lookups in the same run.

🆚 How does YouTube Video Scraper by Hashtag differ from the official YouTube Data API?

The YouTube Data API v3's search.list method caps maxResults at 50 per page (default 5) and exposes no hashtag-specific or Shorts-specific filter parameter — a hashtag or a Shorts request is just plain text or a duration guess, not a distinct search mode (per Google's search.list reference documentation, checked 2026-08-04). It also requires a Google Cloud project, an API key, and quota management, since every call is metered against a shared daily unit pool.

FeatureYouTube Data API v3YouTube Video Scraper by Hashtag
SetupGoogle Cloud project + API keyNone — no key, no login
Hashtag as a distinct search modeNot documented; # is just query textHashtag, keyword, and @handle are three distinct, verbatim search kinds
Shorts-only filterNot documentedscrapeShortsOnly boolean input
Results per query50 per page (maxResults max), paginated via pageTokenUp to 500 requested per term; real ceiling is YouTube's own search depth
Usage meteringDaily quota units, shared per projectPay-per-result dataset rows, no quota to track
Hashtag summary text ("2.6M videos • 822K channels")Not exposed by the APIReturned as hashtagCategoryData.categoryInfoText

Why can't I just filter search.list by hashtag or Shorts?

Because the official API was not built around either concept: search.list takes a free-text q parameter and a small set of generic filters (duration, category, license), and Google's own reference lists no hashtag or Shorts-specific parameter (checked 2026-08-04). In practice that means matching a hashtag's actual result set — including the videos YouTube itself groups under it — requires reproducing YouTube's search-page logic outside the API. This Actor reads that same public search surface directly, so #chatgpt and chatgpt return the different result sets YouTube itself produces, and scrapeShortsOnly reads YouTube's live Shorts shelf instead of approximating it from a duration filter.

Use the official API when you need OAuth-scoped access to a channel's own private data or you are already inside Google's quota system for other calls. Use this Actor when you need hashtag- or Shorts-aware search results at volume without provisioning API credentials.

💡 How to use data extracted from YouTube

Content strategists and marketers

Run a shortlist of hashtags and keywords relevant to a campaign, set maxResults to see deep into each term's result set, and sort the returned rows by viewCount to find which angle YouTube is already rewarding. The hashtagCategoryData.categoryInfoText field tells you a hashtag's overall size before you commit content to it, and type lets you split the Shorts opportunity from long-form.

Social media and SEO agencies

Agencies tracking hashtag performance for multiple clients can run the same term list on a schedule and diff viewCount and result composition (type) run over run, without maintaining a Google Cloud project or API key per client account.

Market research and trend intelligence

Feed a batch of category or competitor hashtags in one run and compare hashtagCategoryData.categoryInfoText and result volume across terms to map where attention is concentrated on YouTube right now, or track a @handle's recent search footprint.

AI agents and automated pipelines

Because the Actor is invoked over the standard Apify API, an agent framework can call it as a tool, pass in a hashtag or topic, and read back structured title/url/viewCount rows to ground a summary or a recommendation — no scraping or HTML parsing logic inside the agent itself.

🔼 Input sample

ParameterRequiredTypeDescriptionExample value
hashtagsYesarray of stringsOne or more search terms, used verbatim. #chatgpt runs a hashtag search, chatgpt a keyword search, @mkbhd a handle search. A term is never rewritten, so a keyword and a hashtag return genuinely different result sets.["#chatgpt", "prompt engineering", "@mkbhd"]
maxResultsNointeger (min 1, max 500, default 10)How many videos to collect for each term. YouTube exhausts a search term at roughly 300 results (measured: 301 on #chatgpt over 34 continuation pages), so higher values simply stop when the term runs out, and the run log records where it stopped.100
scrapeShortsOnlyNoboolean (default false)Return only YouTube Shorts. Shorts rows carry YouTube's abbreviated view count and no hashtag summary line, because YouTube serves neither on the Shorts-filtered page.false
proxyConfigurationNoobject (default {"useApifyProxy": false})Optional proxy — Apify Proxy or your own proxyUrls list. Whichever you pick is attached to every request. With Apify Proxy the Actor escalates to residential and retries a term YouTube blocks; a custom proxy list is never silently swapped for Apify Proxy.{"useApifyProxy": true}
{
"hashtags": ["#chatgpt", "prompt engineering", "@mkbhd"],
"maxResults": 100,
"scrapeShortsOnly": false,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Common pitfall: setting maxResults to 500 expecting exactly 500 rows back per term. YouTube's own search depth is the real ceiling — a term measured to exhaustion (#chatgpt) ran out at 301 videos over 34 continuation pages. Check the run log for the line stating how many rows a term produced and whether it was exhausted or hit maxResults.

🔽 Output sample

One dataset row per unique video, deduplicated by video ID within each term. Export it as JSON, CSV, Excel, or an HTML table directly from the Apify Console, or pull it through the Apify API.

{
"thumbnailUrl": "https://i.ytimg.com/vi/aB3xY7zT9Qk/hq720.jpg?sqp=-oaymwEnCNAFEJQDSFryq4qpAxkIARUAAIhCGAHYAQHiAQoIGBACGAY4AUAB&rs=AOn4CLDsample",
"title": "ChatGPT Explained in 5 Minutes",
"id": "aB3xY7zT9Qk",
"url": "https://www.youtube.com/watch?v=aB3xY7zT9Qk",
"viewCount": 214830,
"type": "video",
"hashtagCategoryData.categoryInfoText": "2.6M videos • 822K channels"
}

All seven fields are always present in the row, even when a value could not be read from YouTube — in that case the field is null, never an empty string, a placeholder, or a fabricated 0.

🎯 How do you filter and target specific videos?

This Actor exposes three real targeting axes — there is no location, date-range, or rating filter, so this section covers exactly what exists rather than padding it out.

  1. Search-type precision (hashtags term formatting) — the same string produces a different result set depending on how it is written. #chatgpt runs YouTube's hashtag search and returns the hashtag's own summary line; chatgpt runs an ordinary keyword search; @mkbhd runs a handle search that is text-matched, not a channel listing. Pick the form that matches what you actually want to measure.
  2. Content-type scope (scrapeShortsOnly) — leave it false to get YouTube's normal mixed result set (videos and Shorts together, in YouTube's own order), or set it true to isolate only the Shorts shelf for short-form-specific research.
  3. Volume and pagination (maxResults) — set the ceiling per term from 1 to 500. The Actor follows YouTube's continuation tokens until it reaches that number, YouTube's own search runs out, or three consecutive continuation pages return no new videos — whichever happens first.

Three real examples:

{ "hashtags": ["#chatgpt"], "maxResults": 200 }

Hashtag search, deep pagination — returns the hashtag's own summary line plus up to 200 tagged videos and Shorts.

{ "hashtags": ["fitness"], "scrapeShortsOnly": true, "maxResults": 150 }

Keyword search scoped to Shorts only — short-form content research for a topic, no hashtag summary line.

{ "hashtags": ["@mkbhd"], "maxResults": 50, "proxyConfiguration": { "useApifyProxy": true } }

Handle search with Apify Proxy enabled, so a blocked request escalates to residential automatically instead of failing the term.

▶️ Want to try other YouTube scrapers?

ScraperWhat it extracts
YouTube Channel & Playlists ScraperA channel's profile, videos, Shorts, live streams, community posts, and its Playlists/Podcasts tabs, with exact view and like counts
YouTube Most Replayed Scraper With Channel DetailsA video's most-replayed heatmap peaks plus the publishing channel's ID, handle, avatar, and subscriber text
TikTok Data Scraper — Video, Hashtag & Sound PerformanceTikTok videos, hashtags, and sounds tracked across runs, with view/like/comment deltas and velocity
TikTok Trending Creator Insights Scraper With Per-Video StatsTrending TikTok creators per market, enriched with per-video plays, likes, comments, and shares
TikTok Shop Data Scraper: Reviews & Sentiment AnalysisTikTok Shop products with full reviews, reviewer trust signals, and optional AI sentiment analysis

⚙️ How to extract YouTube data programmatically

Every run is a standard Apify Actor call: one API call to start the run, one dataset ID back, structured JSON rows to read.

Python example

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_API_TOKEN>")
run_input = {
"hashtags": ["#chatgpt", "prompt engineering"],
"maxResults": 100,
"scrapeShortsOnly": False,
}
run = client.actor("<your-username>/youtube-video-scraper-by-hashtag").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["viewCount"], item["url"])

Export to spreadsheets or CRM

Download the dataset as CSV directly from the Apify Console or via the API, then map title to a Headline column, url to a Link column, and viewCount to a numeric Views column for sorting in a spreadsheet or importing into a CRM/content-planning tool.

Yes. This Actor collects only what YouTube's own public search pages display to any anonymous visitor — no login, no private content, and no account-gated data. The seven fields it returns (thumbnail, title, video ID, URL, view count, type, and hashtag summary text) describe published video content, not individuals; the Actor does not extract creator names, channel handles, comments, or any other personal identifier. That makes this business/content data rather than personal data, so the applicable framework is YouTube's Terms of Service and ordinary database-rights considerations around YouTube's compiled search index, not GDPR or CCPA. Consult legal counsel for commercial applications involving bulk storage of personal data.

❓ FAQ

What happens if a scraped video is later deleted or made private?

The row you already collected keeps the title, thumbnail, and view count YouTube served at run time — the Actor does not re-check videos after the run ends, so a later deletion or privacy change on YouTube's side does not retroactively change or remove data already in your dataset.

Can I get YouTube's hashtag summary line along with the video rows?

Yes — hashtagCategoryData.categoryInfoText (e.g. "2.6M videos • 822K channels") is returned on every row when the search term is a hashtag. It is null on keyword searches, handle searches, and Shorts-only runs, because YouTube itself does not render that line on those result pages.

How accurate is the view count data?

It is exactly what YouTube served at request time. Ordinary search rows carry YouTube's exact digit count; Shorts rows carry YouTube's own abbreviated form (e.g. "4.5M views") expanded to an integer, so it is rounded to whatever precision YouTube chose to display, not exact to the digit.

How many videos can I get per run?

Up to maxResults (max 500) for each search term you provide — the limit is per term, not per run. In practice YouTube itself is the real ceiling: a term scraped to exhaustion (#chatgpt) ran out at 301 videos over 34 continuation pages, and the run also stops early if three consecutive continuation pages return no new videos.

How do I search by hashtag, keyword, or username in the same run?

Add each term to hashtags in the form you want it treated: #tag for a hashtag search, a bare word or phrase for a keyword search, @handle for a handle search. Every term in the list is used exactly as typed, so you can mix all three kinds in a single run.

Does YouTube Video Scraper by Hashtag work with Claude, ChatGPT, and AI agent frameworks?

It has no dedicated MCP server; it is callable as a standard Apify Actor over the Apify API, so any agent framework that can make an HTTP call and read the apify-client library can invoke it as a tool and read back the dataset rows.

How does this Actor compare to the other YouTube scrapers in this collection?

It is the base, hashtag-and-search-focused member of a family of YouTube Actors — see "Want to try other YouTube scrapers?" above for the channel-level and most-replayed-heatmap variants. Within this Actor's own scope, rows are pushed and charged exactly once per unique video, type is set only from explicit YouTube signals rather than a duration guess, and a missing value is always null rather than a placeholder string or a fabricated zero.

Can I use this Actor without a YouTube API key or developer account?

Yes. No YouTube Data API key, no Google Cloud project, and no YouTube login are required — you only need an Apify account to run the Actor.

Conclusion

YouTube Video Scraper by Hashtag turns a list of hashtags, keywords, or handles into structured video and Shorts data — thumbnail, title, ID, URL, view count, type, and hashtag context — without a YouTube API key, login, or quota to manage. It fits content research, trend tracking, and agency reporting workflows that need to see what YouTube's own search actually surfaces for a term, at the volume a single run allows. Start it from the Apify Console or the Apify API with a list of search terms to get your first dataset back.