Apple Music Track Lookup

Resolve an Apple Music track id to the record Apple keeps for it in the store of one country: title, artist, album, genre, release date, duration, position, and whether it is explicit.

Overview

Every track on Apple Music carries a number. In a song address such as music.apple.com/de/song/one-more-time/697195462 it is the last part; in an album address such as music.apple.com/de/album/one-more-time/697194953?i=697195462 it is the number after ?i=, and the number before it belongs to the album.

The lookup asks Apple's public iTunes lookup, which needs no key. Apple answers per store country: the id is the same in every country, but whether the track is in a country's store is not.

Web interface

Paste the number, or a song or album address. An address is reduced to the track number, and the country it names is selected as the store country. Otherwise the country comes from the picker below the field, which lists the 184 countries Apple has a store for and can be searched by name. The dice in the field looks up one of ten sample tracks, each of them present in the US and the German store.

The result shows the cover beside title, artist, album, release year and duration, and below that the metadata as rows. A click on a row copies its value. Apple Music asks before it leaves the site.

PatternExample
/lookup/apple/track/{trackid}/lookup/apple/track/697195462
/lookup/apple/track/{country}/{trackid}/lookup/apple/track/de/697195462

Without a country the US store is asked. The page looks the track up as soon as it opens, and every lookup made on the page updates the address with the country it used.

API

GET /v1/lookup/apple/track?trackid={trackid}&country={country}
POST /v1/lookup/apple/track

Both return JSON. POST takes the same fields as a form. On api.troubleshooting.tools the path also answers without /v1; on the main site that shorter path is the tool page.

NameTypeDefaultDescription
trackidintegerrequired The number of an Apple Music track, at most 15 digits. Everything but digits is removed first.
countrystringus The store to ask, as a two letter country code such as de. Upper or lower case.
shell
$ curl -s "https://api.troubleshooting.tools/v1/lookup/apple/track?trackid=697195462&country=de" | jq .

# Without a country, the US store answers
$ curl -s "https://api.troubleshooting.tools/v1/lookup/apple/track?trackid=697195462" | jq -r '.trackName, .country'
One More Time
USA

# The same as a form post
$ curl -s -d trackid=697195462 -d country=de https://api.troubleshooting.tools/v1/lookup/apple/track

Shortened; the full answer has more fields:

json
{
  "wrapperType": "track",
  "kind": "song",
  "artistId": 5468295,
  "collectionId": 697194953,
  "trackId": 697195462,
  "artistName": "Daft Punk",
  "collectionName": "Discovery",
  "trackName": "One More Time",
  "trackViewUrl": "https://music.apple.com/de/album/one-more-time/697194953?i=697195462&uo=4",
  "artworkUrl100": "https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/fd/4a/77/fd4a77db-0ebc-d043-41a2-f32fa1bb0fb4/dj.qrikkdwj.jpg/100x100bb.jpg",
  "releaseDate": "2000-11-30T08:00:00Z",
  "trackExplicitness": "notExplicit",
  "discCount": 1,
  "discNumber": 1,
  "trackCount": 14,
  "trackNumber": 1,
  "trackTimeMillis": 320357,
  "country": "DEU",
  "currency": "EUR",
  "primaryGenreName": "Dance",
  "isStreamable": true
}

The body is Apple's record for that one track, passed through as Apple sends it, without the resultCount and results wrapper of the iTunes lookup.

Response fields

FieldTypeDescription
trackIdintegerThe track id that was looked up.
trackNamestringTitle of the track.
artistNamestringArtist as Apple credits it.
collectionNamestringThe album the track is on.
artistId, collectionIdintegerApple's ids for the artist and the album.
primaryGenreNamestringThe genre Apple files the track under.
releaseDatestringRelease date and time, ISO 8601 in UTC.
trackNumber, trackCountintegerPosition on the disc, and how many tracks it has.
discNumber, discCountintegerDisc of the album, and how many there are.
trackTimeMillisintegerLength in milliseconds.
trackExplicitnessstringexplicit, cleaned or notExplicit.
isStreamablebooleanWhether Apple marks the track as streamable in that store.
country, currencystringThe store that answered, as a three letter code such as DEU, and its currency.
trackViewUrlstringThe track's address on Apple Music.
artworkUrl30, artworkUrl60, artworkUrl100stringThe cover at 30, 60 and 100 pixels.
errorstringPresent instead of the above when the lookup failed.

Store countries

Apple has a store for 184 of the country codes: those for which the iTunes lookup answered with a record or an empty result, rather than a refusal, on 2026-09-12. A code without a store is answered with 400.

A track can be in one store and missing from the next. 1440650711, Queen's Bohemian Rhapsody, is in the US store and not in the German one, so the same request answers with the record for country=us and with 404 for country=de.

Errors

A failure answers with a status code and a JSON body of the form {"error": "…"}.

StatusMessageMeaning
400trackid parameter is required: the number of an Apple Music track.No trackid, one without a digit in it, or one longer than 15 digits.
400country must be a two letter store code, such as us or de.The country is not two letters.
400Apple has no store for the country code {CC}.Two letters, but not a country Apple has a store for.
404No track with this ID in the {CC} store.The id does not exist, or the track is not in that store.
404That number is an album, not a track. In an album address the track is the number after ?i=.An album id was sent. The lookup does not pick a track from it.
404That number is not a song on Apple Music.The id belongs to something other than a song, such as a music video.
405Method not allowed. Allowed: GET, POSTAny other method.
502Apple Music could not be reached.No answer from Apple within 10 seconds, or no connection within 5.
502Apple Music answered with HTTP {status}.Apple answered with a status this lookup does not expect.

Rate limits

50 requests per second per IP address, burst 100, at most 50 concurrent connections, HTTP 429 over the limit.

Every request is also a request to Apple, which limits how often its lookup may be asked. A request Apple refuses comes back as 502 with Apple's status in the message, not as 429.

Privacy

The track id and the store country are sent to this site, which asks Apple from the server. Apple sees the server, not you. Lookups appear in server logs for operational purposes and are not sold, shared or used to build profiles.

On the tool page the cover is the one thing your browser loads from Apple directly, from mzstatic.com. An API caller receives the cover addresses and decides for itself whether to load them.