Back to Library
Scrape Apple Music
js • 1/26/2026
14
const axios = require("axios");
const cheerio = require("cheerio");
async function applemusic(query, region = "us") {
try {
const res = await axios.get(
`https://music.apple.com/${region}/search?term=${encodeURIComponent(query)}`,
{
timeout: 30000,
headers: {
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
},
}
);
const $ = cheerio.load(res.data);
const results = [];
$(".top-search-lockup").each((_, el) => {
const title = $(el).find(".top-search-lockup__primary__title").text().trim();
const artist = $(el).find(".top-search-lockup__secondary").text().trim();
const link = $(el).find(".click-action").attr("href");
const image = $(el).find("picture source").attr("srcset")?.split(" ")[0];
if (title && artist && link) {
results.push({
title,
artist,
link: link.startsWith("http")
? link
: `https://music.apple.com${link}`,
image: image || null,
});
}
});
return results;
} catch (error) {
console.error("API Error:", error.message);
throw new Error("Failed to get response from Apple Music");
}
}
module.exports = applemusic;