All scrapers

Content

YouTube Search Scraper

youtube.com

99.2% Success rate
1.7s Avg response
Google Protection
1,164 calls Measured over

YouTube search is served through a dedicated plugin endpoint rather than the generic page fetch. Give it a query and it returns the results already parsed: for each video the videoId and title, the channel name, id and URL, the view count as both text and a number, the duration as text and seconds, the publish age, the thumbnail URLs, a description snippet and badges like verified, live or CC. Filter by type (video, channel, playlist or all) and sort (relevance, date, views or rating), and collect as many results as you need across pages. It reads YouTube's own search data, so there is no InnerTube API to reverse-engineer yourself.

What you can extract

  • Video id, title and a watch URL
  • Channel name, id and channel URL
  • View count as text and parsed number
  • Duration as text and seconds
  • Publish age and thumbnail URLs
  • Description snippet and badges (verified / live / CC)

Dedicated endpoints

/content/youtube-search

YouTube search results

Search results for a query: each video with videoId, title, channel (name/id/url), view count (text + number), duration (text + seconds), publish age, thumbnails, a description snippet and badges. Filter with type (video / channel / playlist / all) and sort (relevance / date / views / rating); collect up to max_results across pages.

How to scrape it

curl -X POST \
  -H "X-ScrapeUnblocker-Key: $SU_API_KEY" \
  "https://api.scrapeunblocker.com/content/youtube-search?query=python%20tutorial&max_results=40"
import requests

resp = requests.post(
    "https://api.scrapeunblocker.com/content/youtube-search",
    headers={"X-ScrapeUnblocker-Key": SU_API_KEY},
    params={"query": "python tutorial", "max_results": "40"},
)
print(resp.text)
import { ScrapeUnblockerClient } from 'scrapeunblocker';

const su = new ScrapeUnblockerClient({ apiKey: process.env.SU_API_KEY });

const data = await su.youtubeSearch('python tutorial', { maxResults: 40, type: 'video', sort: 'views' });
console.log(data);

Requests are POST and take their parameters in the query string. Browser rendering always happens - there is no flag to enable.

Read the API docs

Frequently asked questions

Is it legal to scrape YouTube search results?

Collecting publicly available YouTube search data such as video titles, channel names and view counts is lawful in many jurisdictions, but the rules depend on your country, the data you collect and how you use it. Some of it can be personal data, so follow the privacy rules that apply to you. ScrapeUnblocker returns the public page; what you collect and how you use it is your responsibility.

How do I scrape YouTube search without getting blocked?

YouTube search is protected by Google's own anti-bot systems. ScrapeUnblocker rotates residential and ISP exits and handles challenges, and the YouTube Search plugin returns the results as parsed JSON. In ScrapeUnblocker's benchmark it returned real content on 99.2% of 1,164 calls, about 1.7s per call.

What YouTube search data can I get?

For each result: video id, title and watch URL, channel name, id and URL, view count as text and a parsed number, duration as text and seconds, publish age, thumbnail URLs, a description snippet and badges such as verified, live or CC. Filter by type (video, channel, playlist or all) and sort by relevance, date, views or rating.

Do I need a YouTube API key or account?

No. The YouTube Search plugin returns search results as JSON without a YouTube API account, API key or login on your side. Give it a query, and there is no InnerTube API to reverse-engineer yourself.

Can I track YouTube search results at scale?

Yes. Each call collects up to max_results across pages, about 20 results per page, and calls run in parallel up to your plan's concurrency limit: 20 to 100 concurrent requests on Pay as you go, Starter and Pro, and 200 to 400 on Business, Scale and Ultimate. That covers rank tracking across many queries.

How much does it cost to scrape YouTube search?

Pricing is per request: 1 request = 1 credit, from EUR 1.00 per 1,000 on pay as you go to about EUR 0.55 per 1,000 on the Ultimate plan. Plugin calls use the same plan quota as any other request. One call returns the results for one query, collected across pages up to max_results. Blocks, timeouts and errors on ScrapeUnblocker's side are not billed, and the free trial includes 500 requests with no card.

Related scrapers

Start scraping this site today

Free tier included. No credit card required to test it.