YouTube Search Results Scraper avatar

YouTube Search Results Scraper

Pricing

from $0.02 / 1,000 result extracteds

Go to Apify Store
YouTube Search Results Scraper

YouTube Search Results Scraper

Scrape public YouTube search results by keyword, including videos, channels, playlists, ranks, metadata, and URLs.

Pricing

from $0.02 / 1,000 result extracteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Share

Scrape public YouTube search results by keyword and export structured video, channel, and playlist rows.

Use this actor to monitor YouTube rankings, discover creators, research competitor content, build prospect lists, and track what appears for important topics over time.

What does YouTube Search Results Scraper do?

YouTube Search Results Scraper turns YouTube search pages into a clean dataset.

It accepts one or more search queries and returns ranked public search results.

Each row includes the query, rank, result type, title, URL, IDs, channel information, visible counts, snippets, thumbnails, and scrape time.

The actor is designed for public search results only.

It does not require a YouTube login.

Who is it for?

  • 📈 SEO teams tracking YouTube visibility for target keywords.
  • 🎬 Content marketers researching topics, hooks, and competing videos.
  • 🧑‍💼 Sales teams finding creators and channels in a niche.
  • 🧪 Researchers collecting public search-result snapshots.
  • 🧭 Agencies monitoring client and competitor rankings.
  • 🛠️ Developers feeding YouTube discovery data into apps and dashboards.

Why use it?

YouTube search results change quickly.

Manual checks are slow, hard to repeat, and difficult to compare across keywords.

This actor gives you repeatable exports that can be scheduled, joined with other datasets, and analyzed in spreadsheets or BI tools.

What data can you extract?

FieldDescription
querySearch keyword that produced the row
rankRank within that query
resultTypeVideo, channel, or playlist
titleVisible result title
urlPublic YouTube URL
videoIdVideo ID when available
channelIdChannel ID when available
playlistIdPlaylist ID when available
channelNameCreator or channel name
channelUrlPublic channel URL
publishedTimeTextVisible publish time text
durationTextVideo duration
viewCountTextVisible view count
subscriberCountTextVisible subscriber count for channel rows
videoCountTextVisible video count for channel or playlist rows
descriptionSnippetSearch result snippet
thumbnailUrlBest available thumbnail URL
scrapedAtISO timestamp of the scrape

Pricing

This Actor uses Apify pay-per-event pricing. The prices below come from the current Actor pricing configuration. Apify public plans map to Store discount tiers, so the table shows both the user-facing plan context and the pricing tier name. The final price shown in Apify depends on the user account plan and any custom agreement.

EventWhat is chargedPrice
startOne-time fee charged when a run starts. Covers fixed startup cost (init, proxy warmup, first HTTP setup).$0.005
EventWhat is chargedFree / no discountStarter / BronzeScale / SilverBusiness / GoldCustom / PlatinumCustom / Diamond
resultCharged per result extracted.$0.0398 / 1,000$0.03461 / 1,000$0.02699 / 1,000$0.02076 / 1,000$0.01384 / 1,000$0.01 / 1,000

Apify may also charge platform usage for compute, storage, proxies, or data transfer outside this Actor pricing. Check the Actor run and the Apify Pricing tab for the exact cost shown to your account.

How to scrape YouTube search results

  1. Open the actor on Apify.
  2. Enter one or more YouTube search queries.
  3. Choose how many results to save per query.
  4. Optionally select only videos, channels, or playlists.
  5. Run the actor.
  6. Download the dataset as JSON, CSV, Excel, XML, or RSS.

Input

The main input is queries.

Add each keyword or phrase as a separate row.

Set maxResultsPerQuery to control volume.

Use resultType when you only need videos, channels, or playlists.

Use the advanced sp field only if you know YouTube filter tokens and want to copy a filter from a YouTube search URL.

Example input

{
"queries": [
"apify web scraping",
"youtube data analysis"
],
"maxResultsPerQuery": 15,
"resultType": "all",
"proxyConfiguration": {
"useApifyProxy": true
}
}

Output

The actor saves results to the default dataset.

Each row is one public YouTube search result.

Ranks are assigned per query after your selected result-type filter is applied.

Example output

{
"query": "apify web scraping",
"rank": 1,
"resultType": "video",
"title": "Web scraping tutorial",
"url": "https://www.youtube.com/watch?v=example",
"videoId": "example",
"channelId": "UCexample",
"playlistId": null,
"channelName": "Example Channel",
"channelUrl": "https://www.youtube.com/@example",
"publishedTimeText": "2 months ago",
"durationText": "12:34",
"viewCountText": "10K views",
"subscriberCountText": null,
"videoCountText": null,
"descriptionSnippet": "A visible search result snippet...",
"thumbnailUrl": "https://i.ytimg.com/vi/example/hq720.jpg",
"scrapedAt": "2026-06-16T00:00:00.000Z"
}

Tips for better results

  • Use exact phrases for brand and competitor monitoring.
  • Run separate queries for each language or market term.
  • Keep first runs small while validating your workflow.
  • Schedule repeated runs to compare ranking changes over time.
  • Export CSV for spreadsheet review.
  • Export JSON when feeding data into an app.

Search filters

The actor supports a simple result type filter.

Choose all results, videos, channels, or playlists.

Advanced users can also provide a YouTube sp filter token copied from a YouTube URL.

If you do not know what sp means, leave it empty.

Proxy options

The actor can run with Apify Proxy.

Datacenter proxy is usually the cheapest first option.

Residential proxy should be used only if your run is blocked or returns fewer public results than expected.

Integrations

You can connect results to:

  • Google Sheets for keyword monitoring.
  • Airtable for creator research workflows.
  • BI tools for rank tracking dashboards.
  • CRM systems for channel prospecting.
  • Data warehouses for longitudinal trend analysis.
  • Webhooks for automated alerts when new results appear.

API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/youtube-search-results-scraper').call({
queries: ['apify web scraping'],
maxResultsPerQuery: 15,
resultType: 'all'
});
console.log(run.defaultDatasetId);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('fetch_cat/youtube-search-results-scraper').call(run_input={
'queries': ['apify web scraping'],
'maxResultsPerQuery': 15,
'resultType': 'all',
})
print(run['defaultDatasetId'])

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~youtube-search-results-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"queries":["apify web scraping"],"maxResultsPerQuery":15,"resultType":"all"}'

MCP usage

Use the Apify MCP server to run this actor from Claude tools.

MCP URL pattern:

https://mcp.apify.com/?tools=fetch_cat/youtube-search-results-scraper

Set up from Claude Code:

$claude mcp add apify-youtube-search https://mcp.apify.com/?tools=fetch_cat/youtube-search-results-scraper

Example MCP JSON configuration:

{
"mcpServers": {
"apify-youtube-search": {
"url": "https://mcp.apify.com/?tools=fetch_cat/youtube-search-results-scraper"
}
}
}

Example prompts:

  • "Run the YouTube Search Results Scraper for AI automation tutorial and summarize the top channels."
  • "Collect 50 video results for web scraping tutorial and list recurring title patterns."
  • "Compare YouTube search results for two competitor brand terms."

Scheduling

Schedule the actor daily, weekly, or monthly to monitor ranking changes.

Use the same query list each time for consistent comparisons.

Store run timestamps with exported rows for trend analysis.

Data quality notes

YouTube can personalize, localize, or reorder public results.

The actor records the visible public text returned during the run.

Some fields are optional because YouTube displays different metadata for videos, channels, playlists, shorts, live streams, and upcoming premieres.

Limits

The actor focuses on search result pages.

It does not visit every video detail page.

It does not extract comments, transcripts, or full channel video catalogs.

Use related actors for those workflows.

FAQ

Can I scrape YouTube search results without logging in?

Yes. This actor is built for public YouTube search results that are visible without a YouTube account.

Can I filter to videos only?

Yes. Set resultType to videos to save only video rows.

Does it scrape comments or transcripts?

No. Use the related YouTube comments or transcript actors for those workflows.

Troubleshooting

Why did I get fewer results than requested?

YouTube may return fewer public results for a narrow query or for a selected result type.

Try a broader keyword or set resultType to all.

Why are some fields empty?

Not every YouTube result type displays the same metadata.

For example, channel rows may have subscriber text but no duration, while playlist rows may have video counts but no view count.

What if a run is blocked?

Enable Apify Proxy or switch proxy groups.

Keep the input small while testing proxy settings.

Legality

This actor extracts publicly visible YouTube search result information.

You are responsible for using the data lawfully and respecting applicable terms, privacy rules, and local regulations.

Do not use scraped data for spam, harassment, or unlawful profiling.

Support

If a query returns unexpected results, include the actor run URL and the input you used when requesting help.

That makes it easier to reproduce and diagnose the issue.