NCS Music Scraper
Pricing
from $0.02 / 1,000 results
NCS Music Scraper
Scrape tracks, artists, genres, moods, search results, and track metadata from NoCopyrightSounds (NCS).
Pricing
from $0.02 / 1,000 results
Rating
0.0
(0)
Developer
Dhruv Kumar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Share
Scrape tracks, artists, genres, moods, and full track metadata from NoCopyrightSounds (ncs.io) — the world's largest royalty-free music library for content creators. Nine crawl modes let you pull anything from a single track's download URL to a full catalogue export, all via a simple JSON input. Run on Apify for scheduled exports, REST API access, and automatic proxy rotation without any infrastructure setup.
What does NCS Music Scraper do?
NCS Music Scraper crawls the public NCS website and extracts structured data about tracks and artists. Depending on the mode you choose, it can:
- Page through the full music library and collect track titles, artists, genres, preview URLs, and cover art.
- Search by keyword, genre, and mood to find tracks matching specific criteria.
- Visit individual track pages to capture download URLs and full descriptions.
- Crawl all artist profiles to gather bios, genre tags, and cover images.
- Extract an artist's complete discography from their profile page.
- List all genre and mood IDs so you can use them as filters in subsequent searches.
Why use NCS Music Scraper?
- Content discovery — find royalty-free tracks by genre or mood for YouTube videos, games, or podcasts without manual browsing.
- Catalogue monitoring — schedule daily or weekly runs to detect new NCS releases automatically.
- Artist research — pull bios, genres, and full discographies in a single crawl.
- Data pipelines — feed track metadata into a CMS, playlist generator, or recommendation engine via the Apify API or dataset exports.
- Bulk download preparation — collect download URLs across hundreds of tracks in one run for offline archiving.
How to use NCS Music Scraper
- Open the Actor on Apify Console and click Try for free.
- Select a Mode from the dropdown (see the Input section below for full descriptions).
- Set any optional filters — genre, mood, version, page limits.
- Click Start and wait for the run to finish (seconds to minutes depending on scope).
- Open the Output tab to preview results, or download the dataset as JSON, CSV, Excel, or XML.
Input
All inputs are optional except mode. Fields that don't apply to the selected mode are ignored.
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | library | Crawl target — see modes table below |
max_pages | integer | 5 | Library pages to crawl (library, full) |
max_search_pages | integer | 1 | Search result pages to fetch (search) |
query | string | "" | Keyword, track, or artist name (search) |
artist | string | "" | Artist name (artist_tracks) |
track_url | string | "" | Direct NCS track URL (track) |
artist_url | string | "" | Direct NCS artist URL (artist) |
genre_name | string | "" | Genre filter by name, e.g. "drum & bass" (search) |
genre | string | "" | Genre filter by numeric ID — overridden by genre_name (search) |
mood_name | string | "" | Mood filter by name, e.g. "energetic" (search) |
mood | string | "" | Mood filter by numeric ID — overridden by mood_name (search) |
version | string | regular | Track version: regular, instrumental, regular-instrumental (search) |
crawl_track_pages | boolean | false | Visit individual track pages for download URLs (library, full) |
crawl_artist_pages | boolean | true | Visit artist profiles found during library crawl (library, full) |
crawl_artist_tracks | boolean | false | Extract track listings from each artist's profile page |
scrape_popular | boolean | true | Collect the 5 featured Popular Releases shown at the top of the library (page 1 only) (library, full) |
scrape_recent | boolean | true | Collect tracks from the paginated Recent Releases table (library, full) |
Modes
| Mode | Description |
|---|---|
library | Page through the NCS music catalogue. Produces popular_track records for the 5 featured releases (scraped once from page 1) and track records for the paginated recent releases — both enabled by default. Optionally produces track_detail and artist records if the crawl flags are enabled. |
artists | Crawl all artist profile pages. Produces artist records. |
full | Library + artists in one run. |
search | Search NCS by keyword, genre, and/or mood. Produces search_result records. |
artist_tracks | All tracks for a specific artist via the NCS search. Produces artist_track records. |
track | Scrape a single track from a direct URL. Produces one track_detail record including the download URL. |
artist | Scrape a single artist profile from a direct URL. Produces one artist record (and optionally artist_track records if crawl_artist_tracks is enabled). |
genres | List all NCS genre IDs and names. Produces genre records. |
moods | List all NCS mood IDs and names. Produces mood records. |
Example input — search
{"mode": "search","query": "Alan Walker","genre_name": "house","mood_name": "energetic","version": "regular","max_search_pages": 3}
Example input — full library with download URLs
{"mode": "full","max_pages": 10,"crawl_track_pages": true,"crawl_artist_tracks": true}
Output
Results are saved to the Apify dataset. Download them from the Output tab as JSON, CSV, Excel, or XML.
Every record has a type field indicating its kind. The possible types are:
track, popular_track, track_detail, artist, artist_track, search_result, genre, mood.
Example — search_result
{"type": "search_result","track_id": "5c18afc2-c39c-4844-a08b-4c14e91d19fd","title": "Dreamer (Rival Remix)","artists": "Rival, Alan Walker","genres": "Trap","versions": "Regular","preview_url": "https://ncsmusic.s3.eu-west-1.amazonaws.com/tracks/000/001/408/dreamer-rival-remix-1683417648-tlG33Woje8.mp3","cover_url": "https://ncsmusic.s3.eu-west-1.amazonaws.com/tracks/000/001/408/100x100/dreamer-rival-remix-1683417646-Zn4BnPGZqR.jpg","release_date": "7 May 2023","moods": ["energetic","Euphoric","Glamorous","Happy","Epic","Weird"],"track_url": "https://ncs.io/rival_dreamer"}
Example — popular_track
{"type": "popular_track","track_id": "dd8b733e-d94a-4a9e-8349-f2674acb21ed","title": "FAVELA","artists": "MXZI, Deno","genres": "Brazilian Phonk","versions": "Regular","preview_url": "https://ncsmusic.s3.eu-west-1.amazonaws.com/tracks/000/002/003/favela-1762477273-EdjAqE9a7B.mp3","cover_url": "https://ncsmusic.s3.eu-west-1.amazonaws.com/tracks/000/002/003/100x100/favela-1762477269-WMI8O3pkwV.png","release_date": "2025-11-07","track_url": "https://ncs.io/FAVELA","source": "https://ncs.io/?display=list&page=1"}
Example — track_detail (with download URL)
{"type": "track_detail","track_id": "af3e020d-b90d-439a-9106-76eb863784eb","title": "Dreamer","description": "Listen to Dreamer by Alan Walker on NCS - House, Energetic, Epic, Euphoric, Glamorous, Quirky, Restless, Romantic","artists": ["Alan Walker"],"artist_urls": ["https://ncs.io/artist/13/alan-walker"],"genres": "House","preview_url": "https://ncsmusic.s3.eu-west-1.amazonaws.com/tracks/000/001/378/dreamer-1680825645-w02oSTah2D.mp3","download_url": "https://ncs.io/track/download/af3e020d-b90d-439a-9106-76eb863784eb","cover_url": "https://ncsmusic.s3.eu-west-1.amazonaws.com/tracks/000/001/378/1000x0/dreamer-1680825643-xI8uIuthxk.jpg","track_url": "https://ncs.io/dreamer"}
Example — artist
{"type": "artist","artist_id": 13,"artist_name": "Alan Walker","description": "","genres": "House, Melodic Dubstep,","cover_url": "https://ncsmusic.s3.eu-west-1.amazonaws.com/artists/000/000/013/1000x0/1680848518_PmrrHgs9Ro_Screenshot-2023-04-07-at-07.19.27.png","artist_url": "https://ncs.io/artist/13/alan-walker"}
Data fields
| Field | Type | Present in |
|---|---|---|
type | string | All records |
track_id | string | track, popular_track, track_detail, search_result, artist_track |
title | string | track, popular_track, track_detail, search_result, artist_track |
artists | string / array | track, popular_track, track_detail, search_result, artist_track |
genres | string | track, popular_track, track_detail, search_result, artist_track, artist |
versions | string | popular_track, search_result, artist_track |
moods | array | search_result, artist_track |
release_date | string | popular_track (ISO format YYYY-MM-DD), search_result, artist_track (display format D Mon YYYY) |
preview_url | string | track, popular_track, track_detail, search_result, artist_track |
download_url | string | track_detail — requires crawl_track_pages: true |
cover_url | string | popular_track, track_detail, search_result, artist_track, artist |
track_url | string | track, popular_track, track_detail, search_result, artist_track |
source | string | track, popular_track — the library page URL where the track was found |
artist_id | integer | artist, artist_track |
artist_name | string | artist, artist_track |
artist_url | string | artist |
artist_urls | array | track_detail |
description | string | track_detail, artist |
genre_id | integer | genre |
genre_name | string | genre |
mood_id | integer | mood |
mood_name | string | mood |
Tips
Get download URLs — they are only available in track_detail records. Enable crawl_track_pages: true in library or full mode. This visits one additional page per track, so factor that into your compute unit estimate.
Popular vs Recent — the library page has two separate sections. The 5 Popular Releases are NCS-curated featured tracks, always the same regardless of which page you crawl; they are collected once from page 1. The Recent Releases table is the paginated chronological catalogue. Disable either with scrape_popular: false or scrape_recent: false if you only need one.
release_date format varies by record type — popular_track records store the date in ISO format (2025-11-07, from a hidden HTML attribute), while search_result and artist_track records use the display format shown on the page (16 Jun 2026). Normalise them in your pipeline if you need to compare or sort across types.
Filter by name, not ID — use genre_name and mood_name (e.g. "drum & bass", "dark") instead of raw numeric IDs. Run genres or moods mode first to see every valid value.
Limit compute units — keep crawl_track_pages: false (the default) unless you need download links. Reduce max_pages or max_search_pages for quick test runs.
Full artist discography — use artist mode with a direct artist URL and enable crawl_artist_tracks: true to get their complete track listing in a single request.
Avoid duplicate data — when crawl_track_pages: true, the library handler skips pushing basic track records and queues individual track pages instead, so each track appears exactly once as a track_detail.
FAQ
Is scraping NCS legal? All data collected is publicly visible in any browser. This Actor does not bypass authentication, paywalls, or any access controls. Always respect NCS's Terms of Service and use collected data responsibly.
Why is download_url null in my results?
Download URLs are only extracted when visiting individual track pages. Set crawl_track_pages: true in library or full mode, or use track mode with a direct URL.
Can I filter by multiple genres or moods at once? No — NCS's search accepts one genre and one mood filter per request. Run the Actor multiple times with different filters to build a combined dataset.
The artists field is a string in some records and an array in others — why?
Library listings and search results store artists as a raw comma-separated string from the page's data attribute. Individual track pages (track_detail) parse them into a proper array with separate artist_urls. Use track_detail records (via crawl_track_pages: true) when you need structured artist data.
For bugs or feature requests, use the Issues tab on the Actor's page.