Apple API: Get album
Finds an Apple Music album by title and optional artist, or by album link, and returns its matched release, purchase details and tracks in order.
Unofficial. Not affiliated with or endorsed by Apple.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Album, required
album Album name or Apple Music album link, for example Rumours or https://music.apple.com/us/album/rumours/594061854.
Rumours
- Artist optional
artist Artist to match, for example Fleetwood Mac.
Fleetwood Mac
Default
.- Country optional
country Country name or two-letter code for the music catalog, for example United States or GB.
United States (default)
Input as JSON
{ "album": "Rumours", "artist": "Fleetwood Mac"}Output
{ "genre": "Rock", "artist": "Fleetwood Mac", "tracks": [ { "title": "Second Hand News", "length": "2:56", "track_id": 594061855, "preview_link": "https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview211/v4/4f/69/e6/4f69e68c-224c-39ce-e80c-6015940fb338/mzaf_8292619002307513028.plus.aac.p.m4a" , "track_number": 1, "apple_music_link": "https://music.apple.com/us/album/second-hand-news/594061854?i=594061855" , "length_milliseconds": 176307 }, { "title": "Dreams", "length": "4:18", "track_id": 594061856, "preview_link": "https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview211/v4/d4/37/e7/d437e72a-c41b-332c-f196-bee295a9d673/mzaf_11574904347171701919.plus.aac.p.m4a" , "track_number": 2, "apple_music_link": "https://music.apple.com/us/album/dreams/594061854?i=594061856" , "length_milliseconds": 257800 }, { "title": "Never Going Back Again", "length": "2:14", "track_id": 594061857, "preview_link": "https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview211/v4/cc/40/a3/cc40a34c-abd6-9d92-0550-334961e8d97f/mzaf_3772783327912029759.plus.aac.p.m4a" , "track_number": 3, "apple_music_link": "https://music.apple.com/us/album/never-going-back-again/594061854?i=594061857" , "length_milliseconds": 134400 } ], "album_id": 594061854, "explicit": "no", "copyright": "℗ 2004 Warner Records Inc.", "album_title": "Rumours", "itunes_price": 10.99, "record_label": "Warner Records Inc.", "release_date": "1977-02-04", "total_length": "39 minutes 57 seconds", "currency_code": "USD", "cover_art_link": "https://is1-ssl.mzstatic.com/image/thumb/Music124/v4/4d/13/ba/4d13bac3-d3d5-7581-2c74-034219eadf2b/081227970949.jpg/1200x1200bb.jpg" , "apple_music_link": "https://music.apple.com/us/album/rumours/594061854" , "number_of_tracks": 11, "total_length_milliseconds": 2396893}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"music.apple.com/get_album","input":{"album":"Rumours","artist":"Fleetwood Mac"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "music.apple.com/get_album" , "input": { "album": "Rumours", "artist": "Fleetwood Mac" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "music.apple.com/get_album" , "input": { "album": "Rumours", "artist": "Fleetwood Mac" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run music.apple.com/get_album# with {"album":"Rumours","artist":"Fleetwood Mac"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "album" ], "properties": { "album": { "type": "string", "description": "Album name or Apple Music album link, for example Rumours or https://music.apple.com/us/album/rumours/594061854." }, "artist": { "type": "string", "default": "", "description": "Artist to match, for example Fleetwood Mac." }, "country": { "type": "string", "default": "United States", "description": "Country name or two-letter code for the music catalog, for example United States or GB." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "album_title", "artist", "release_date", "genre", "record_label", "copyright", "number_of_tracks", "total_length", "explicit", "itunes_price", "currency_code", "cover_art_link", "apple_music_link", "album_id", "total_length_milliseconds", "tracks" ], "properties": { "genre": { "type": [ "string", "null" ], "description": "Album genre." }, "artist": { "type": [ "string", "null" ], "description": "Matched performing artist." }, "tracks": { "type": "array", "items": { "type": "object", "required": [ "track_number", "title", "length", "preview_link", "apple_music_link", "track_id", "length_milliseconds" ], "properties": { "title": { "type": [ "string", "null" ], "description": "Track title." }, "length": { "type": [ "string", "null" ], "description": "Track duration in m:ss." }, "track_id": { "type": [ "integer", "null" ], "description": "Apple Music track ID.", "x-fous-developer": true }, "preview_link": { "type": [ "string", "null" ], "description": "30-second preview link, if available." }, "track_number": { "type": [ "integer", "null" ], "description": "Track number on its disc." }, "apple_music_link": { "type": [ "string", "null" ], "description": "Apple Music track page link." }, "length_milliseconds": { "type": [ "integer", "null" ], "description": "Track duration in milliseconds.", "x-fous-developer": true } }, "additionalProperties": false }, "description": "Tracks in disc and track order." }, "album_id": { "type": [ "integer", "null" ], "description": "Apple Music album ID.", "x-fous-developer": true }, "explicit": { "type": [ "string", "null" ], "description": "Whether the album is marked explicit: yes or no." }, "copyright": { "type": [ "string", "null" ], "description": "Album copyright notice." }, "album_title": { "type": [ "string", "null" ], "description": "Matched album title." }, "itunes_price": { "type": [ "number", "null" ], "description": "Album purchase price in iTunes, if available." }, "record_label": { "type": [ "string", "null" ], "description": "Record label when the listed rights holder names a recording label." }, "release_date": { "type": [ "string", "null" ], "description": "Release date, YYYY-MM-DD." }, "total_length": { "type": [ "string", "null" ], "description": "Total duration of the listed tracks." }, "currency_code": { "type": [ "string", "null" ], "description": "Currency of the iTunes price." }, "cover_art_link": { "type": [ "string", "null" ], "description": "Cover art image link." }, "apple_music_link": { "type": [ "string", "null" ], "description": "Apple Music album page link." }, "number_of_tracks": { "type": [ "integer", "null" ], "description": "Number of album tracks." }, "total_length_milliseconds": { "type": [ "integer", "null" ], "description": "Total duration in milliseconds.", "x-fous-developer": true } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
music.apple.com/get_album- Returns
- album title, artist, release date, genre, record label, copyright, price, cover art, tracks
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method music.apple.com/get_album with the inputs above.
Ask your agent
- Find the Apple Music album Rumours by Fleetwood Mac and list its tracks in order
- What is the release date, label and price of Abbey Road by The Beatles on Apple Music?
- Look up the album at https://music.apple.com/us/album/rumours/594061854 and tell me the genre and copyright
- Get the cover art and track listing for Lemonade by Beyoncé in the UK catalog (GB)
- Which record label released Thriller by Michael Jackson, and what does the album cost in the United States?
See more
All Apple methodsGets an Apple Music artist profile by name or artist link. The profile includes the latest release, top songs and albums.
music.apple.com/get_artistSearches the Apple Music song catalog by title and artist words, returning matching tracks in relevance order with prices and previews when available.
music.apple.com/search_songsGets an Apple Podcasts show's details and its newest available episodes, by show name or Apple Podcasts link.
podcasts.apple.com/get_podcastLists the current top songs, albums, or music videos on Apple Music for a country, in chart order. Countries without an Apple Music chart return no results.
music.apple.com/list_top_chartsGets an iPhone or iPad app's public App Store listing by name or link. You can narrow it by developer and country. In-app purchases are included when the page lists them.
apps.apple.com/get_appGets current Apple Store prices and the configurations on sale for a product in one country. It includes only models sold on that country's public store.
apple.com/get_product_pricesGets customer reviews for an iPhone or iPad app, found by name or App Store link, from the selected country's App Store.
apps.apple.com/get_app_reviewsGets a podcast's country-specific rating total and average, plus up to 500 listener reviews sorted by newest or most helpful.
podcasts.apple.com/get_podcast_reviews