YouTube Music Scraper
Pricing
$2.65 / 1,000 music pages
YouTube Music Scraper
Search public YouTube Music with keywords or known public URLs. Export songs, videos, albums, artists, playlists, podcasts, and profiles with source IDs, creators, metrics, thumbnails, and URLs.
Pricing
$2.65 / 1,000 music pages
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
15
Total users
5
Monthly active users
2 days ago
Last modified
Categories
Share
🎵 Search YouTube Music metadata by keyword or URL
YouTube Music Scraper helps music researchers, playlist planners, marketers, creators, and developers find public YouTube Music data. Search by keywords or read known public URLs, then get structured rows with titles, source IDs, creators, album and playlist context, counts, thumbnails, and source links. Missing source fields stay null or empty instead of being guessed.
Use it to:
- Find song metadata by keyword with YouTube Music Song Scraper.
- Find music videos by keyword with YouTube Music Video Scraper.
- Find album details by keyword with YouTube Music Album Scraper.
- Find artist profiles by keyword with YouTube Music Artist Scraper.
- Find playlists by keyword with YouTube Music Playlist Scraper.
- Find podcast playlists by keyword with YouTube Music Podcast Scraper.
- Find music profiles by keyword with YouTube Music Profile Scraper.
📦 Public YouTube Music rows
Each saved row is one public song, video, album, artist, playlist, podcast, or profile found by a keyword or known URL. Rows include source IDs, creators, context, counts, thumbnails, descriptions, tags, and canonical URLs when YouTube Music shows them. Direct track and video URLs may also include source media formats and audience-interest heatmap points.
When the same source entity appears again from another keyword or URL, the Actor saves the first eligible match and ignores later repeats. The saved row describes that first match. Missing source values stay null or use an empty array. The Actor does not download or save audio or video files.
The Actor reads public data only. It does not access private, protected, removed, age-gated, or unavailable content. Source media URLs are not guaranteed to stay playable.
🚀 Search or read public music pages
- Add one or more search terms, public YouTube Music URLs, or both.
- Pick the content type for keyword searches.
- Set the most results to collect for each keyword, or leave that limit empty to return all available results until the source is exhausted.
- Start the run and open the dataset.
- Export the rows or read them through the Apify API.
The Actor can keep successful rows when another submitted search or URL is invalid or unavailable. Search settings apply only to keyword searches. Known URLs are read as the public item types they identify.
⚙️ Input
Input fields
| Field | Type | What it does |
|---|---|---|
keywords | array of strings | Finds YouTube Music results for genres, artists, moods, topics, or other keywords. |
youtubeMusicUrls | array of objects | Reads known public YouTube Music track, video, album, or playlist URLs. Each object has a url. |
youtubeMusicUrls[].url | string | Gives one public YouTube Music track, video, album, or playlist URL. |
searchType | string | Chooses songs, videos, albums, artists, playlists, podcasts, or profiles for keyword searches. The form pre-fills songs. |
maxResultsPerQuery | integer | Limits results for each keyword. Leave it empty to return all available results until the source is exhausted. The limit does not apply to submitted URLs. |
Default input used in Hosted QA
The following is the public default input used in Hosted QA:
{"searchType": "songs","keywords": ["Taylor Swift"],"youtubeMusicUrls": [],"maxResultsPerQuery": 10}
Use keywords, URLs, or both in one run. Search type and maximum results apply only to keyword searches.
🧾 Output
Run output
| Field | Type | What it does |
|---|---|---|
results | string link | Opens the default dataset view with the public music entities saved by the run. |
Every saved dataset row uses the same shape. Nested paths use dots below. A field can be null or an empty array when YouTube Music does not show it.
Dataset row fields
| Field | Type | What it does |
|---|---|---|
matchedInput | string | Shows the keyword or public URL that first found the row. |
contentType | string | Says whether the row is a song, video, album, artist, playlist, podcast, or profile. |
sourcePosition | integer or null | Shows the one-based keyword-search position, or null for a submitted URL. |
title | string | Shows the title or name from YouTube Music. |
url | string URL | Links to the canonical YouTube Music page. |
ids | object | Holds source IDs used to identify and deduplicate the entity. |
ids.videoId | string or null | Shows the YouTube video ID when available. |
ids.playlistId | string or null | Shows the YouTube Music playlist ID when available. |
ids.browseId | string or null | Shows the YouTube Music browse ID when available. |
ids.channelId | string or null | Shows the YouTube channel ID when available. |
ids.profileHandle | string or null | Shows the profile handle when available. |
creators | array of objects | Lists artists, uploaders, channels, or playlist creators shown by YouTube Music. |
creators[].name | string | Shows one creator name. |
creators[].channelId | string or null | Shows that creator's channel ID when available. |
creators[].url | string URL or null | Links to that creator's public page when available. |
album | object or null | Holds source-backed album context for a track or album, or null when not found. |
album.title | string | Shows the album title. |
album.playlistId | string or null | Shows the album playlist ID when available. |
album.browseId | string or null | Shows the album browse ID when available. |
album.url | string URL or null | Links to the album page when available. |
playlist | object or null | Holds source-backed playlist or podcast context, or null when not found. |
playlist.title | string | Shows the playlist or podcast title. |
playlist.playlistId | string or null | Shows the playlist ID when available. |
playlist.url | string URL or null | Links to the playlist or podcast page when available. |
durationSeconds | integer or null | Shows the track or video length in seconds when available. |
releaseDate | string or null | Shows the release date or year when available. |
metrics | object | Holds counts shown by YouTube Music. |
metrics.playCount | integer or null | Shows the song play count when available. |
metrics.viewCount | integer or null | Shows the video view count when available. |
metrics.likeCount | integer or null | Shows the like count when available. |
metrics.subscriberCount | integer or null | Shows the subscriber count when available. |
metrics.songCount | integer or null | Shows the track count for an album, playlist, or podcast when available. |
thumbnails | array of objects | Lists thumbnail images shown by YouTube Music. |
thumbnails[].url | string URL | Links to one thumbnail image. |
thumbnails[].width | integer or null | Shows the image width in pixels when available. |
thumbnails[].height | integer or null | Shows the image height in pixels when available. |
description | string or null | Shows the description from YouTube Music when available. |
tags | array of strings | Lists source tags or categories. |
mediaFormats | array of objects | Lists source media formats found for a submitted track or video URL. |
mediaFormats[].url | string URL or null | Shows a source media URL when available. |
mediaFormats[].mimeType | string or null | Shows the source MIME type when available. |
mediaFormats[].codec | string or null | Shows the media codec when available. |
mediaFormats[].bitrate | integer or null | Shows the bitrate in bits per second when available. |
mediaFormats[].width | integer or null | Shows video width in pixels, or null for audio or missing data. |
mediaFormats[].height | integer or null | Shows video height in pixels, or null for audio or missing data. |
mediaFormats[].fps | number or null | Shows video frames per second when available. |
mediaFormats[].qualityLabel | string or null | Shows the source quality label when available. |
heatmap | array of objects | Lists audience-interest timeline points for a submitted video or track URL. |
heatmap[].startMillis | integer | Shows where a heatmap part starts in milliseconds. |
heatmap[].endMillis | integer | Shows where a heatmap part ends in milliseconds. |
heatmap[].score | number or null | Shows the source heatmap score when available. |
Genuine current-beta song row
This complete row is from successful current-beta run VituVfL0hR69bfEnp:
{"matchedInput": "Taylor Swift","contentType": "song","sourcePosition": 1,"title": "Patient Zero","url": "https://music.youtube.com/watch?v=V-uIp-WuD60","ids": {"videoId": "V-uIp-WuD60","playlistId": null,"browseId": null,"channelId": "UCPC0L1d253x-KuMNwa05TpA","profileHandle": null},"creators": [{"name": "Taylor Swift","channelId": "UCPC0L1d253x-KuMNwa05TpA","url": "https://music.youtube.com/channel/UCPC0L1d253x-KuMNwa05TpA"}],"album": {"title": "The Life of a Showgirl: The Encore","playlistId": null,"browseId": "MPREb_L64BnYDQpHZ","url": "https://music.youtube.com/browse/MPREb_L64BnYDQpHZ"},"playlist": null,"durationSeconds": 226,"releaseDate": null,"metrics": {"playCount": 4600000,"viewCount": null,"likeCount": null,"subscriberCount": null,"songCount": null},"thumbnails": [{"url": "https://yt3.googleusercontent.com/DNFuGZeuZ7vGTxa49zFs3YNAwA-TOTVXYRFqPt3RQGmq0vK2zbLyTxJHxc88dShIoQrfQUiIugawXoK_=w60-h60-l90-rj","width": 60,"height": 60},{"url": "https://yt3.googleusercontent.com/DNFuGZeuZ7vGTxa49zFs3YNAwA-TOTVXYRFqPt3RQGmq0vK2zbLyTxJHxc88dShIoQrfQUiIugawXoK_=w120-h120-l90-rj","width": 120,"height": 120}],"description": null,"tags": [],"mediaFormats": [],"heatmap": []}
You can export the dataset as JSON, CSV, Excel, XML, or RSS.
💰 Pricing
This Actor uses pay-per-event pricing. The music-result event is charged once for each saved public song, video, album, artist, playlist, podcast, or profile. A run with no saved public music entry creates no music-result event. The current price is shown in the Apify pricing panel.
🔌 Integrations
Read the dataset through the Apify API, schedules, and webhooks. You can export the rows in the formats Apify provides. This video shows how to use Apify integrations:
❓ FAQ
What happens when the source has no album context?
If YouTube Music does not show album data, album is null. The Actor does not fill it with duration text or another unrelated value.
Can a submitted album or playlist URL return every track?
No. It returns one row for that album or playlist, not every track inside it.
Can I use a YouTube Music URL and search terms together?
Yes. Add both to one run. Search type and maximum results apply to keywords, while known URLs are read as the public item types they identify.
What happens if a source response is incomplete?
If YouTube Music returns a temporary, incomplete, or unusable response, the run reports a failure instead of calling it a clean no-match. A clean no-match is used only after a valid, complete response shows no eligible result. Any rows already saved stay in the dataset.
What does leaving maximum results per query empty do?
It returns all available results until the source is exhausted. Set a positive integer when you want each keyword search to stop earlier.
What happens when the same entity appears more than once?
The Actor saves the first eligible occurrence and ignores later repeats from another keyword or URL. The saved row describes the first match only.
Why are some counts or IDs missing?
YouTube Music does not show every fact for every entity. The Actor uses null or an empty array instead of guessing.
Do I need a YouTube login, API key, or cookies?
No. The Actor reads public YouTube Music data and does not ask for source credentials.
Is this a YouTube Music downloader?
No. It exports metadata. It does not download, convert, or save audio or video files.
📝 Changelog
v0.2 (27-09-2026)
- Leave Maximum results per query empty to collect all available results.
- Runs resume after an Apify migration without duplicate rows or charges.
v0.1
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- YouTube Music Downloader - download audio from a public YouTube Music link after you find its metadata.
- Spotify Songs Scraper - compare public Spotify tracks with artist and album context.
- SoundCloud Scraper - collect related tracks, artists, playlists, albums, and comments from SoundCloud.
- Billboard Charts History Scraper - compare songs, albums, and artists across current or historical Billboard charts.
- YouTube Trending Videos Scraper - review ranked music videos and Music charts by region.
Made with ❤️ by Maxime Dupré