Enterprise Partner Feed
Please note that Apple Music and iTunes Music data will be migrating away from the Enterprise Partner Feed (EPF). Starting July 16, 2024, the best source for app developers looking for the most up to date Apple Music data is the Apple Music Feed.
Record labels and music content providers, seeking to use Apple Music Data for purposes outside of promoting the Apple Music service in your app, should use Music Atlas.
Music data will no longer be included in the EPF as of March 17, 2025. Additional information and documentation can be found here. If you are an existing EPF user, please visit our FAQ for more information about how to migrate to the Apple Music Feed.
The Enterprise Partner Feed is a data feed of the complete set of metadata from Apple Music, Music downloads, and TV & Movies downloads. It is available for performance partners to fully incorporate aspects of this content catalogs into a website or app.
EPF Relational (formerly known as simply EPF) consists of four files that when expanded can be ingested to build a relational database. This format is directed towards tech-savvy partners who can ingest, build and maintain a database and need information for either multiple media types or for multiple storefronts.
Overview
The Enterprise Partner Feed (EPF) is a bulk data feed comprising all content metadata from Apple Music, Music downloads, and TV & Movies downloads. The data is organized into files, with each file representing a logical table in a relational database. The files, in turn, are organized into directories and compressed for download over HTTPS. Partners can ingest this data into a relational database for use in matching content libraries and generating links into Apple Services. See below for terms and conditions.
Operation
Feed Modes
EPF generates the data in two modes:
- full mode
- incremental mode
The full export is generated weekly and contains a complete snapshot of iTunes metadata as of the day of generation. The incremental export is generated daily and contains records that have been added or modified since the last full export. The incremental exports are located relative to the full export on which they are based.
Downloading the Feed
The EPF export is genreated and hosted at https://feeds.itunes.apple.com. The feed files are archived into binary files in a compressed PKZip (WinZip) format. The compressed file is named according to the following template:
itunesYYYYMMDDHH.zip
pricingYYYYMMDDHH.zip
matchYYYYMMDDHH.zip
where YYYY
, MM
, DD
, and HH
represent the year, month, day, and hour when the feed generation started.
Apple provides partners with a username and password to download the feed from https://feeds.itunes.apple.com.
Ingest Methodology
Uncompress the downloaded zip files to create subdirectories containing the data files.
To ingest each file:
- Read a record from the file.
- Use the primary key defined at the top of the file to search for an existing row in the corresponding database table.
- Do one of the following:
- If a matching row already exists in your database, update that row using values from the new record.
- If a matching row does not already exist in your database, add the new record to the database table.
Pruning Out-of-Date Data
After ingesting a full feed, out-of-date records should be pruned (deleted) from the database. You can find these records by comparing the value of their export_date to the lastFullExportDate value in the key_value table. These records represent records that formerly existed in the iTunes database but have since been removed.
No pruning is required after ingesting an incremental feed.
Making Sense of the Data
Regional Availability of iTunes Content
The EPF feed contains metadata for all products, but due to licensing issues, not every piece of content is available in every storefront. Availability is defined generally as having a non-null price in the pricing file. For example, if video X has NO row in video_price that contains storefront 143441, then it is not available for sale in the US.
The Origin-Storefront Query Parameter
Because not all content is available to all users, iTunes provides a fallback mechanism for users to view content (but not purchase) in a foreign storefront. If a URL contains the origin-storefront (“s”) parameter, and the content is not available in the user’s native storefront, then iTunes will suggest to the user that she temporarily switch to the origin storefront of the content so that she may view the content.
Attaching Partner Bounty Information to URLs
In order to generate partner commissions, you must create links using the format for PHG. It is important to generate the links correctly to get the reference recognized as partner revenue at iTunes. Be sure to check with your management company about how to properly create partner-coded links.
A few partners work directly with iTunes to track sales and commissions. The directions below for creating partner codes apply just to those few partners. All other partners must code links following the guidelines of the local partner management companies.
Coding Instructions
EPF files contain URLs for viewing contents in the iTunes Store. Starting from the URL, iTunes partners need to generate fully qualified URL links that are embedded in sites by adding parameters.
The following files in the EPF export have a column named view_url: artist, collection, song, application, and video. All of the links contain an action and a parameter set.
View URL | Samples |
---|---|
artist | https://itunes.apple.com/artist/scritti-politti/id614113 |
collection | https://itunes.apple.com/us/album/ukulele-songs/id433985038 |
song | https://itunes.apple.com/us/album/poker-face/id294084085?i=294084155 |
video | https://itunes.apple.com/us/movie/harry-potter-sorcerers-stone/id271469503 |
Applications | https://itunes.apple.com/us/app/angry-birds/id343200656?mt=8 |
Each parameter has its key name concatenated with a value using “=” Each key value pair is concatenated using “&”. The template for a fully-qualified partner URL for each content type is:
Artist: baseurl&at=xxxxxxxx
Collection: baseurl&at=xxxxxxxx
Song: baseurl&at=xxxxxxxx
Video: baseurl&at=xxxxxxxx
The following table provides examples of fully-qualified links.
View URL | Samples |
---|---|
artist | https://itunes.apple.com/artist/scritti-politti/id614113?at=10l123 |
collection | https://itunes.apple.com/us/album/ukulele-songs/id433985038?at=10l123 |
song | https://itunes.apple.com/us/album/poker-face/id294084085?i=294084155&at=10l123 |
video | https://itunes.apple.com/us/movie/harry-potter-sorcerers-stone/id271469503?at=10l123 |
File Format
Each file in the feed is in plain text format, separated into columns and rows. Each record has the same set of fields. The following are the delimiters for each field and record:
- Field Separator (FS): SOH (ASCII character 1)
- Record Separator (RS) : STX (ASCII character 2) + “n”
For example, these characters are represented in programming languages as shown below:
Perl:
$field_separator = chr(1); $record_separator = chr(2) . "n";
Java:
String fieldSeparator = String.valueOf((char)1);
String recordSeparator = String.valueOf((char)2) + "n";
Any record starting with a “#” and ending with the RS should be treated as a comment by the ingester and ignored. For reading convenience, iTunes uses this feature to generate a column header line at the beginning of the file.
Each record has an export_date field, defined as milliseconds since the UNIX Epoch. This time stamp is used to track the last time the record was ingested. All records from a given export dataset have the same export_date.
Schema
Each feed file is an export of a relational database table. Many-to-many relationships are represented as join tables.
The files are grouped into the following main categories:
- Content: real content in the database (blue in Figure 1)
- Translation: localization data specific to a language (blue in Figure 1)
- Join: relationships between content data (pink in Figure 1)
- Reference: master data referred by Content and Join data (green in Figure 1)
Diagram
The following figure shows the relationships between the main tables in the feed. Content tables are shown in blue, relationship tables are shown in pink, and reference tables are shown in green.
The artist, collection, song, application, and video tables are the main content tables for basic objects in the database.
The artist, collection, artist_song, artist_application, and artist_video are Join tables that define the role an artist plays in the production of a song, album, video, application, and so on. collection_song is a Join table defining which songs appear on which albums.
Figure 1: Key Tables in Enterprise Partner Feed
Each piece of salable content (collection, song, and video) is associated with its price through its ID. The price is unique for each content and storefront pair. Some salable content is not available in some storefronts.
Each translatable content has its translation table associated through its identifier. The translated name string is optional. In addition to its name, the title_version for collection, song, and video are translatable.
Each matchable content (application, artist, collection, song, and video) has its match table associated through its identifier. Match tables provide mappings from the iTunes internal identifier to externally defined identifiers such as UPC, ISRC, and AMG IDs.
The following figure shows the relationships between content objects, and their attribute files related to price, translation, and matching.
Figure 2: Contents and Attributes
Overview
The table below provides a brief description of each file contained in a feed dataset. All filenames are lowercase.
Name | Type | Download Grouping | Description |
---|---|---|---|
album_popularity_per_genre | Popularity | popularity | Assigns a ranking for the top music collections in a given storefront and genre. |
application | Content | itunes | Application metadata. Defines all iPhone and iPod touch applications in the App Store. Elements such as titles and descriptions default to English when available, otherwise the primary language of the application is used. For translations, see application_detail. |
application_detail | Translation | itunes | Defines the language-specific attributes of an application. |
application_device_type | Join | itunes | Many-to-many relationship between applications and device types. Associates applications with the devices with which they are compatible. |
application_popularity_per_genre | Popularity | popularity | Assigns a ranking for the top applications in a given storefront and genre. |
application_price | Content | pricing | Retail price of an application. |
artist | Content | itunes | Artist metadata. Unlike other Content and Join tables, this artist table contains all the artists, regardless of availability of the artist’s contents in any given country of interest. |
artist_application | Join | itunes | Associates applications with their artists (or authors). Every application has exactly one artist. |
artist_collection | Join | itunes | Many-to-many relationship between artists and collections. Only primary artists are included. |
artist_match | Content | match | Mappings from the iTunes internal identifier for artist to external identifiers. |
artist_song | Join | itunes | Many-to-many relationship between artists and songs. Only primary artists are included. |
artist_translation | Translation | itunes | The translation string for artist names for a specific language. |
artist_type | Reference | itunes | Artist type metadata. Defines all artist types; including musicians, TV shows, actors, iPhone developers, and authors. |
artist_video | Join | itunes | Many-to-many relationship between artists and videos. Only primary artists are included. |
collection | Content | itunes | A collection can contain multiple songs and videos, and can represent a music album, audiobook, or TV season. |
collection_match | Content | match | Mappings from the iTunes internal identifier for collection to external identifiers. |
collection_price | Content | pricing | The retail price of the collection. |
collection_song | Join | itunes | Many-to-many relationship between collections and songs. Most of the songs are included only in one collection. |
collection_translation | Translation | itunes | The translation string for collection names for a specific language. |
collection_type | Reference | itunes | The type of collection (TV season, album, and so on). |
collection_video | Join | itunes | Many-to-many relationship between collections and videos. Most of the videos are included only in one collection. |
device_type | Reference | itunes | Device type metadata. Specifies the types of devices currently available (for example, iPhone and iPod touch). |
genre | Reference | itunes | Genre name and its structure. All music genres are represented in hierarchical manner starting from genre 34 Music. |
genre_application | Join | itunes | Genre information for the application. Associates an application with one or more categories. There is only one primary genre for each application. |
genre_artist | Join | itunes | Genre information of artists. There is only one primary genre for each artist. |
genre_collection | Join | itunes | Genre information of a collection. There is only one primary genre for each collection. |
genre_video | Join | itunes | Genre information of video. There is only one primary genre for each video. |
key_value | Meta | itunes | Utility file to store metadata to the specific EPF export. Each record is a key-value pair. For example, the schema version number and date of the last full mode data dump are included. |
imix | Content | itunes | Metadata for mixes that are defined by iTunes users. |
media_type | Reference | itunes | Types of products. |
mix | Content | itunes | Metadata for mixes that are defined editorially by iTunes. |
mix_collection | Content | itunes | Metadata for collections of mixes. |
mix_type | Reference | itunes | Types of mixes. |
parental_advisory | Reference | itunes | The type of parental advisory status. |
role | Reference | itunes | The name of the artist role. |
song | Content | itunes | Song metadata. In most cases, one song is only contained in one collection. But in some cases, one song is shared by multiple collections. |
song_match | Content | match | Mappings from the iTunes internal identifier for song to external identifiers. |
song_imix | Join | itunes | Join table between imixes and songs. |
song_mix | Join | itunes | Join table between mixes and songs. |
song_popularity_per_genre | Popularity | popularity | Assigns a ranking to the top songs in a given storefront and genre |
song_price | Content | pricing | The retail price of the song. |
song_translation | Translation | itunes | The translation string for song names for a specific language. |
storefront | Reference | itunes | Identifier number of each country storefront. |
translation_type | Reference | itunes | The type of translation string. |
video | Content | itunes | Video metadata. In most cases, one video is only contained in one collection. But in some cases, one video is shared by multiple collections. |
video_match | Content | match | Mappings from the iTunes internal identifier for video to external identifiers. |
video_price | Content | pricing | The retail price of the video. |
video_translation | Translation | itunes | The translation string for video names for a specific language. |
Detailed File Definition
This section explains the column configuration of each file.
albumpopularityper_genre
This table ranks popular content for each storefront and genre. The data is limited to the most popular 1000 items.
Name | Key | Description |
---|---|---|
export_date | The date this row was exported, in milliseconds since the UNIX Epoch. | |
storefront_id | Y | The storefront in which this content is ranked. |
genre_id | Y | The genre in which this content is ranked. |
album_id | Y | The iTunes ID for this album. |
album_rank | The rank of this content in the given storefront and genre, (lower is better). |
application
Application metadata. Defines all iPhone and iPod touch applications in the App Store. Elements such as titles and descriptions default to English when available, otherwise the primary language of the application is used. For translations, see application_detail.
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
application_id | Y | The iTunes ID for this application. |
title | The application title. | |
recommended_age | The minimum suggested age for a child to use this application. | |
artist_name | The name of the application developer or company. | |
seller_name | The legal entity name of the software provider. | |
company_url | The URL for this application on the seller’s website. | |
support_url | The support URL for this application. | |
view_url | The URL to view this application in the App Store. | |
artwork_url_large | The URL to view the large version of the cover art of this application in the App Store. | |
artwork_url_small | The URL to view the small version of the cover art of this application in the App Store. | |
itunes_release_date | Release date of this application in “yyyy mm dd” format. | |
copyright | Copyright notice string. This is often null. Optional. | |
description | Description for this application. | |
version | The version number provided by the application developer. | |
itunes_version | The version string as set by iTunes. | |
download_size | The application’s file size, in bytes. |
application_detail
Defines the language-specific attributes of an application.
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
application_id | Y | Foreign key to the application table. |
language_code | Y | Name of the language specified in ISO 639-1 two-character language code. For example, “EN” for English, “JA” for Japanese, “FR” for French. |
title | The application title. | |
description | Description for this application. | |
release_notes | The release notes for the most recent update. | |
company_url | The URL for this application on the seller’s website. | |
suppport_url | The support URL for this application. | |
screenshot_url_1 | The URL to view screenshot 1 of this application in the App Store. | |
screenshot_url_2 | The URL to view screenshot 2 of this application in the App Store. | |
screenshot_url_3 | The URL to view screenshot 3 of this application in the App Store. | |
screenshot_url_4 | The URL to view screenshot 4 of this application in the App Store. | |
screenshot_width_height_1 | The width and height of the bounding box for screenshot 1. | |
screenshot_width_height_2 | The width and height of the bounding box for screenshot 2. | |
screenshot_width_height_3 | The width and height of the bounding box for screenshot 3. | |
screenshot_width_height_4 | The width and height of the bounding box for screenshot 4. |
application_device_type
Many-to-many relationship between applications and device types. Associates applications with the devices with which they are compatible.
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
application_id | Y | Foreign key to the application table. |
device_type_id | Y | Foreign key to the device_type table. |
applicationpopularityper_genre
This table ranks popular content for each storefront and genre. The data is limited to the most popular 1000 items.
Name | Key | Description |
---|---|---|
export_date | The date this row was exported, in milliseconds since the UNIX Epoch. | |
storefront_id | Y | The storefront in which this content is ranked. |
genre_id | Y | The genre in which this content is ranked. |
application_id | Y | The iTunes ID for this application. |
application_rank | The rank of this content in the given storefront and genre, (lower is better) |
application_price
The retail price of an application.
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
application_id | Y | Foreign key to the application table. |
retail_price | Retail price of the application, or null if the application is not available. | |
currency_code | The ISO3A currency code. | |
storefront_id | Y | Foreign key to the storefront table. |
artist
Artist metadata. Unlike other Content and Join tables, this artist table contains all the artists, regardless of availability of the artist’s contents in any given country of interest.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
artist_id | Y | The iTunes ID for this artist. |
name | Native name of this artist. | |
search_terms | Space separated list of keywords, useful for searching this artist. | |
is_actual_artist | Specifies whether the artist is a really searchable artist. Value is “1” or “0”. The partner can ignore artists with value 0. | |
view_url | URL to view the artist in the iTunes Store. | |
artist_type_id | Foreign key to the artist_type table. |
artist_application
Associates applications with their artists (or authors). Every application has exactly one artist.
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
artist_id | Y | Foreign key to the artist table. |
application_id | Y | Foreign key to the application table. |
artist_collection
Many-to-many relationship between artists and collections. Only primary artists are included.
Every collection has at least one artist and can have multiple artists. One artist can participate in multiple collections.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
artist_id | Y | Foreign key to the artist table. |
collection_id | Y | Foreign key to the collection table. |
is_primary_artist | Binary flag to specify whether this artist participates in this album as its primary artist. The primary artist name is displayed in the store. | |
role_id | Foreign key to the role table. |
artist_match
Mappings from the iTunes internal artist_id to external identifiers such as AMG identifiers.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
artist_id | Y | Foreign key to the artist table. |
amg_artist_id | Numeric identifier for an artist in the AMG database, stripped of its leading identifying character and leading whitespace. | |
amg_video_artist_id | Numeric identifier for a video artist in the AMG database, stripped of its leading identifying character and leading whitespace. |
artist_song
Many-to-many relationship between artists and songs. Only primary artists are included.
Every song has at least one artist and can have multiple artists. One artist can participate in multiple songs.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
artist_id | Y | Foreign key to the artist table. |
song_id | Y | Foreign key to the song table. |
artist_translation
The translation string for artist names for a specific language.
A translation string for artist is optional. Currently only some artists have translations. The artist_translation table is connected to the artist table through artist_id.
Specify a unique translation string through a combination of <artist_id, language_code,=”” is_pronunciation,=”” translation_type_id=””>. These four fields constitute the compound key for this table. This means that multiple translation strings can be defined for an artist by each language, translation type, and whether it is pronunciation or not.
All records in this table have 4 in translation_type_id field.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
artist_id | Y | Foreign key to the artist table. |
language_code | Y | Name of the language specified in ISO 639-1 two-character language code. For example, “EN” for English, “JA” for Japanese, “FR” for French. |
is_pronunciation | Y | Binary flag to specify whether this translation is for pronunciation (for example, furigana for Japanese) of the name. |
translation | Translated name of artist. | |
translation_type_id | Y | Foreign key to the translation_type table. |
artist_type
Artist type metadata. Defines all artist types; including musicians, TV shows, actors, iPhone developers, and authors.
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
artist_type_id | Foreign key to the artist_type table. | |
name | Name of the type. | |
primary_media_type_id | The primary media for artists of this type. |
artist_video
Many-to-many relationship between artists and videos. Only primary artists are included.
Every video has at least one artist and can have multiple artists. One artist can participate in multiple collections.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
artist_id | Y | Foreign key to the artist table. |
video_id | Y | Foreign key to the video table. |
is_primary_artist | Binary flag to specify whether this artist participates in this video as its primary artist. The primary artist name is displayed in the store. | |
role_id | Foreign key to the role table. |
collection
Album, TV Season, and Audiobook metadata. A collection can contain multiple song, video, and audiobook tracks.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
collection_id | Y | The iTunes ID for this collection. |
name | Native name of collection. | |
title_version | Version name of this collection. Optional. Used for when different versions of the collection exist, such as “Bonus Track”, “Live”, or “Remastered”. | |
search_terms | Space separated list of keywords, useful for searching the album. Optional. | |
parental_advisory_id | Foreign key to the parental_advisory table. | |
artist_display_name | Artist name of the album. Used when the system-generated artist name needs to be overridden. Optional. | |
view_url | URL to view the album in the store. | |
artwork_url | URL to view cover art of this album in the store. | |
original_release_date | Date of album release date in “yyyy mm dd” format. | |
itunes_release_date | Release date in iTunes in “yyyy mm dd” format. | |
label_studio | Sub-label name to produce this album. Not displayed in the store. | |
content_provider | Company name in English alphabet to provide this album. This name should not be used for display purpose. Not displayed in the store. | |
copyright | Copyright notice string. This is often null. Optional. | |
pline | Copyright performance right string. String displayed in the store. | |
media_type_id | Foreign key to the media_type table. | |
is_compilation | Binary flag to specify whether this is a compilation of songs from multiple artists. | |
collection_type_id | Y | Foreign key to the collection_type table. |
collection_match
Mappings from the iTunes internal collection_id to external identifiers such as the UPC and AMG album identifiers.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
collection_id | Y | |
upc | UPC of album. | |
amg_album_id | Identifier for an album in the AMG database, stripped of its leading identifying character and leading whitespace. |
collection_price
The retail price of the collection.
The collection_price table is connected to the collection table through collection_id.
Specify a unique price through a combination of <collection_id, storefront_id=””>. These two fields constitute the compound key for this table. This means that multiple prices for an album can be created for each storefront.
A collection_id that has no entry in the collection_price table for a given storefront, or that has a null value in the retail_price column, should be considered unavailable for sale in that storefront.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
collection_id | Y | Foreign key to the collection table. |
retail_price | Retail price of the product, or null if the product is unavailable. | |
storefront_id | Y | Foreign key to the storefront table. |
currency_code | Name of the currency as specified in ISO 4217 three-character code. For example, “USD” for U.S. Dollar, “JPY” for Japanese Yen, “EUR” for Euro. | |
availability_date | Not used. | |
hq_price | The retail price of the high quality, DRM-free (iTunes Plus) album, or null if not available. |
collection_song
Many-to-many relationship between collections and songs. Most of the songs are included only in one collection.
Every collection has at least one song or video. There is no empty collection. Every song belongs to at least one collection. There is no standalone song without its collection.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
collection_id | Y | Foreign key to the collection table. |
song_id | Y | Foreign key to the song table. |
track_number | The relative number of this song in this disk. | |
volume_number | Relative number of the disk where this song belongs to collection. | |
preorder_only | Binary flag to specify whether this song is available only for pre-order. |
collection_translation
The translation string for the collection names for a specific language.
The translation string for collection is optional. Currently only some collections have translations. The collection_translation table is connected to the collection table through collection_id.
Specify a unique translation string through a combination of <collection_id, language_code,=”” is_pronunciation,=”” translation_type_id=””>. These four fields constitute the compound key for this table. This means that multiple translation strings can be defined for a collection by each language, translation type, and whether it is pronunciation or not.
All records in this table have either TitleVersion (2) or Name (4) in translation_type_id.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
collection_id | Y | Foreign key to the collection table. |
language_code | Y | Name of the language specified in ISO 639-1 two-character language code. For example, “EN” for English, “JA” for Japanese, “FR” for French. |
is_pronunciation | Y | Binary flag to specify whether this translation is for pronunciation (for example, furigana for Japanese) of the name. |
translation | Translated name of collection. | |
translation_type_id | Y | Foreign key to the translation_type table. |
collection_type
The type of collection (TV season, album, and so on).
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
collection_type_id | Y | The iTunes ID for this collection type. |
name | Name of the type. |
collection_video
Many-to-many relationship between collections and videos. Every collection has at least one song or video. There are no empty collections.
A video can be standalone with no parent collection. Single music video has no parent. But video can also be included in collections. For example, video album is a collection with multiple videos in it. And bonus video is typically a video contained in a music album (for free).
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
collection_id | Y | Foreign key to the collection table. |
video_id | Y | Foreign key to the video table. |
track_number | The relative number of this song in this disk. | |
volume_number | Relative number of the disk where this song belongs to collection. | |
preorder_only | Binary flag to specify whether this video is available only for pre-order. |
device_type
Device type metadata. Specifies the types of devices currently available (for example, iPhone and iPod touch).
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
device_type_id | Y | Foreign key to the device_type table. |
name | Name of the type. |
genre
Genre name and its structure. All music genres are represented in a hierarchical manner starting from genre 34 Music.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
genre_id | Y | The iTunes ID for this genre. |
parent_id | ID of parent genre. | |
name | Name of the genre. |
genre_application
Genre information for the application. Associates an application with one or more categories. There is only one primary genre for each application.
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
genre_id | Y | Foreign key to the genre table. |
application_id | Y | Foreign key to the application table. |
is_primary | Set to 1 if this association is the primary one. |
genre_artist
Genre information of artists. There is only one primary genre for each artist.
An artist can have at most one primary genre and multiple non-primary genres. All artists have at least one genre associated with them.
But many less-frequently used artists (for example, a percussionist in one classical song) tend to have no primary genre and tend to have unknown genre.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
genre_id | Y | Foreign key to the genre table. |
artist_id | Y | Foreign key to the artist table. |
is_primary_genre | Binary flag to specify whether this genre is the artist’s primary genre. |
genre_collection
Genre information of a collection. There is only one primary genre for each collection.
All collections have one primary genre. Some collections have multiple non-primary genres.
Name | Key | Description |
---|---|---|
export_date | The date of export for this record, in milliseconds since the UNIX Epoch. | |
genre_id | Y | Foreign key to the genre table. |
collection_id | Y | Foreign key to the collection table. |
is_primary_collection | Binary flag to specify whether this genre is the collection’s primary genre. |
genre_imix
A join table defining the relationship between an imix and the genres it is associated with. This table may be empty or incomplete temporarily while we work on exposing this data.
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
genre_id | Foreign key to genre. | |
imix_id | Foreign key to imix. |
genre_video
Genre information of video. There is only one primary genre for each video.
Video can have, at most, one primary genre and multiple non-primary genres. Any video has at least one genre associated with it.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
genre_id | Y | Foreign key to the genre table. |
collection_id | Y | Foreign key to the collection table. |
is_primary_genre | Binary flag to specify whether this genre is the video’s primary genre. |
key_value
Utility file to store metadata to the specific EPF export. Each record is a key-value pair. For example, the schema version number and date of the last full mode data dump are included.
Key is a predefined set of parameters. Partner ingester systems should read this file to get meta-level information for this set.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
key_ | Y | Name of the parameter. |
value_ | Value of the key. The format is different for each key. |
The table below shows keys currently used.
Key | Value |
---|---|
exportVersion | Version number of the schema of this EPF export. All values are integers. |
lastFullExportDate | Date when the last full-mode export was generated. If this record exists in a given export, then the export should be considered a full export, otherwise this export is an incremental export. |
imix_type
An imix can be one of two types: regular, or a Nike Sport iMix.
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
imix_type_id | ||
name | The name of this imix_type. |
imix
Describes iTunes Music Store iMixes uploaded by users.
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
imix_id | The primary identifier of this iMix. | |
title | The title of the iMix, provided by the user. | |
description | The iMix notes provided by the user. | |
storefront_id | The storefront in which this iMix is available. | |
rating_average | The time-decayed user-voted star-rating, out of a possible five stars. | |
rating_count | The number of user-voted star-ratings. | |
itunes_release_date | The date this iMix was uploaded by the user. | |
imix_type_id | Foreign key to the imix_type table. | |
view_url | URL to visit this iMix in the iTunes Store. |
media_type
Types of products.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
mediatype_id | Y | The iTunes ID for this media type. |
name | The name of the media type. |
mix
A mix is sublist of mix_collection.
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
mix_id | The primary ID of this mix. | |
mix_collection_id | Foreign key to the mix_collection in which this mix lives. May be null. | |
name | The title of this mix. | |
description | The description for this mix. | |
rank | The storefront of this mix with respect to the mix_collection. | |
view_url | The URL to view this mix on the iTunes Store. |
mix_collection
A mix_collection represents iTunes Store content such as Essentials, Celebrity Playlists, and Athlete Inspirations. A mix_collection is NOT a join to the collection table; it defines a collection of mixes.
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
mix_collection_id | The primary ID of this mix collection. | |
title | The title of this mix. | |
storefront_id | The storefront of this mix. | |
parental_advisory_id | Foreign key to parental_advisory, representing whether this is explicit or not. | |
mix_category_name | The category name for this mix. | |
mix_type_id | Foreign key to mix_type. | |
itunes_release_date | The date this mix_collection was created. | |
view_url | The URL to view this mix on the iTunes Store. | |
artwork_url_large | A URL to view the mix_collection artwork, in large size. | |
artwork_url_small | A URL to view the mix_collection artwork, in small size. |
mix_type
The type of a mix – for example, Essentials, New Music Monthly, Celebrity Playlists, or Athlete Inspiration.
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
mix_type_id | ||
name | The name of this mix_type. |
parental_advisory
The type of parental advisory status. The basic advisories are “Explicit”, “Not Explicit”, and “Cleaned” for content that has been scrubbed of its Explicit content.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
Y | Primary key for this table. | |
name | the name of the parental advisory. |
role
The name of the artist role.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
role_id | Y | The iTunes ID for this role. |
name | The name of the role. |
song
Song metadata. In most cases, one song is contained only in one collection. But in some cases, one song is shared by multiple collections.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
song_id | Y | The iTunes ID for this song. |
name | Native name of the song. | |
title_version | Version name of this song. Optional. Used for when different versions of the song exist, like “Live” and “Karaoke”. | |
search_terms | Space separated list of keywords, useful for searching the song. Optional. | |
parental_advisory_id | Foreign key to the parental_advisory table. | |
artist_display_name | Artist name of the song. Used when the system-generated artist name needs to be overridden. Optional. | |
collection_display_name | Name of the default collection. Which collection is displayed is undefined if multiple collections are associated with this song. | |
view_url | URL to view the song in the store. | |
original_release_date | Date of album release date in “yyyy mm dd” format. | |
itunes_release_date | Release date in iTunes in “yyyy mm dd” format. | |
track_length | Length of the song in milliseconds. | |
copyright | Copyright notice string. This is often null. Optional. | |
p_line | Copyright performance right string. String displayed in the store. | |
preview_url | A URL to a short (30-second) preview of this song. | |
preview_length | The length of the preview, in milliseconds. |
song_imix
Join table between the song and imix tables representing songs that appear on an iMix.
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
song_id | Foreign key to song. | |
imix_id | Foreign key to imix. |
song_match
Mappings from the iTunes internal song_id to external identifiers such as AMG identifiers.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
song_id | Y | Foreign key to the song table. |
isrc | ISRC for song. | |
amg_track_id | Identifier for a song in the AMG database, stripped of its leading identifying character and leading whitespace. |
song_mix
Join table between the song and mix tables representing the songs that appear on each mix.
Name | Key | Description |
---|---|---|
export_date | The date this application was exported, in milliseconds since the UNIX Epoch. | |
song_id | Foreign key to song. | |
mix_id | Foreign key to mix. |
songpopularityper_genre
This table ranks popular content for each storefront and genre. The data is limited to the most popular 1000 items.
Name | Key | Description |
---|---|---|
export_date | The date this row was exported, in milliseconds since the UNIX Epoch. | |
storefront_id | Y | The storefront in which this content is ranked. |
genre_id | Y | The genre in which this content is ranked. |
song_id | Y | The iTunes ID for this song. |
song_rank | The rank of this content in the given storefront and genre, (lower is better). |
song_price
The retail price of the song.
The song_price table is connected to the song table through song_id.
Specify a unique price through a combination of <song_id, storefront_id=””>. These two fields constitute the compound key for this table. This means that multiple prices for a song can be created for each storefront.
A song_id that has no entry in the song_price table for a given storefront, or that has a null value in the retail_price column, should be considered unavailable for sale in that storefront.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
song_id | Y | Foreign key to the song table. |
retail_price | Retail price of the product in iTunes Standard Quality format, or null if the product is unavailable as Standard Quality. | |
storefront_id | Y | Foreign key to the storefront table. |
currency_code | Name of the currency as specified in ISO 4217 three-character code. For example, “USD” for U.S. Dollar, “JPY” for Japanese Yen, “EUR” for Euro. | |
availability_date | Not used. | |
hq_price | The retail price of the high quality, DRM-free (iTunes Plus) song, or null if not available. |
song_translation
The translation string for song names for a specific language.
The translation string for a song is optional. Currently only some songs have translations. The song_translation table is connected to the song table through song_id.
Specify a unique translation string through a combination of <song_id, language_code,=”” is_pronunciation,=”” translation_type_id=””>. These four fields constitute the compound key for this table. This means that multiple translation strings can be defined for a song by each language, translation type, and whether it is pronunciation or not.
All records in this table have either TitleVersion (2) or Name (4) in translation_type_id.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
song_id | Y | Foreign key to the song table. |
language_code | Y | Name of the language specified in ISO 639-1 two-character language code. For example, “EN” for English, “JA” for Japanese, “FR” for French. |
is_pronunciation | Y | Binary flag to specify whether this translation is for pronunciation (for example, furigana for Japanese) of the name. |
translation | Translated name of song. | |
translation_type_id | Y | Foreign key to the translation_type table. |
storefront
Identifier number of each country storefront.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
storefront_id | Y | The iTunes ID for this storefront. |
country_code | Three-character country code for this storefront. | |
name | Name of the country. |
translation_type
The type of translation string.
Currently only TitleVersion (2) and Name (4) are used. A record in artist_translation has only Name (4). A record in collection_translation has either TitleVersion (2) or Name (4).
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
translation_type_id | Y | The iTunes ID for this translation type. |
name | Name of the type. |
video
Video metadata. In most cases, one video is contained only in one collection. But in some cases, one video is shared by multiple collections. (Music videos, movies, short films, and TV episodes.)
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
video_id | Y | The iTunes ID for this video. |
name | Native name of the video. | |
title_version | Version name of this video. Optional. Used for when different versions of the video exist, like “Live” and “Director’s Cut”. | |
search_terms | Space separated list of keywords, useful for searching the video. Optional. | |
parental_advisory_id | Foreign key to the parental_advisory table. | |
artist_display_name | Artist name of the video. Used when the system-generated artist name needs to be overridden. Optional. | |
collection_display_name | Name of the default collection. Which collection is displayed is undefined if multiple collections are associated with this song. | |
media_type | Type of media specified by media_type_id. | |
view_url | URL to view the video in the store. | |
artwork_url | URL to view cover art of this album in the store. | |
original_release_date | Date of album release date in “yyyy mm dd” format. | |
itunes_release_date | Release date in iTunes in “yyyy mm dd” format. | |
studio_name | Name of studio of this video. | |
network_name | Name of the TV network. | |
content_provider | Company name in English alphabet to provide this album. This name should not be used for display purpose. Not displayed in the store. | |
track_length | Length of the song in milliseconds. | |
copyright | Copyright notice string. Often it is empty. Optional. | |
p_line | Copyright performance right string. String displayed in the store. | |
short_description | Short description of the video. | |
long_description | Long description of the video. | |
episode_production_number | The episode number of this video in a TV series. |
video_match
Mappings from the iTunes internal video_id to external identifiers such as AMG identifiers.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
video_id | Y | Foreign key to the video table. |
upc | UPC for video. | |
isrc | ISRC for music video. | |
amg_video_id | Identifier for a video in the AMG database, stripped of its leading identifying character and leading whitespace. | |
isan | ISAN for video. |
video_price
The retail price of the video.
The price table is connected to the video table through video_id.
Specify a unique price through a combination of <video_id, storefront_id=””>. These two fields constitute the compound key for this table. This means that unique price for a video can be created for each storefront.
A video that has no entry in the video_price table for a given storefront, or that has a null value in the retail_price column, should be considered unavailable for sale in that storefront.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
video_id | Y | Foreign key to the video table. |
retail_price | A retail price for the video, or null if the product is unavailable in any form. This field exists for backwards-compatibility and to quickly indicate the availability of the video in some form. | |
storefront_id | Y | Foreign key to the storefront table. |
currency_code | Name of the currency as specified in ISO 4217 three-character code. For example, “USD” for U.S. Dollar, “JPY” for Japanese Yen, “EUR” for Euro. | |
availability_date | Not used. | |
sd_price | Retail price of the standard-definition version of the video, or null if not available. | |
hq_price | The retail price of the high quality, DRM-free (iTunes Plus) video, or null if not available. | |
lc_rental_price | The retail rental price of the Low-Complexity (playable on iPod) video, or null if not available. | |
sd_rental_price | The retail rental price of the Standard-Definition video, or null if not available.The retail rental price of the Standard-Definition video, or null if not available. | |
hd_rental_price | The retail rental price of the High-Definition video, or null if not available. |
video_translation
The translation string for video names for a specific language.
The translation string for video is optional. The video_translation table is connected to video table through video_id.
Specify a unique translation string through a combination of <video_id, language_code,=”” is_pronunciation,=”” translation_type_id=””>. These four fields constitute the compound key for this table. This means that multiple translation strings can be defined for a video by each language, translation type, and whether it is pronunciation or not.
All records in this table have either Title_Version (2) or Name (4) in translation_type_id.
Name | Key | Description |
---|---|---|
export_date | The date this record was exported, in milliseconds since the UNIX Epoch. | |
video_id | Y | Foreign key to the video table. |
language_code | Y | Name of the language specified in ISO 639-1 two-character language code. For example, “EN” for English, “JA” for Japanese, “FR” for French. |
is_pronunciation | Y | Binary flag to specify whether this translation is for pronunciation (for example, furigana for Japanese) of the name. |
translation | Translated name of video. | |
translation_type_id | Y | Foreign key to the translation_type table. |
Legal
IMPORTANT: The Apple Enterprise Partner Feed and data incorporated therein (“EPF”) is supplied to you by Apple Inc. (“Apple”) in consideration of your agreement to the following terms, and your use, installation, modification, or redistribution of the EPF constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify, or redistribute the EPF.
In consideration of your agreement to abide by the following terms, and subject to these terms, Apple grants you a personal, non-exclusive, non-transferable, non-sublicenseable license to use, reproduce, modify, and redistribute the EPF solely in connection with links to the iTunes Store. Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by Apple herein. The EPF is provided by Apple on an “AS IS” basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE EPF OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR MATERIALS. APPLE DOES NOT WARRANT THAT THE EPF WILL MEET YOUR REQUIREMENTS, THAT THEIR OPERATION WILL BE UNINTERRUPTED OR ERROR-FREE, THAT DEFECTS IN THE MATERIALS WILL BE CORRECTED, OR THAT THE EPF WILL BE COMPATIBLE WITH FUTURE APPLE PRODUCTS, SOFTWARE, OR SERVICES. NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE OR AN APPLE AUTHORIZED REPRESENTATIVE WILL CREATE A WARRANTY.
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, INABILITY TO USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE EPF, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This agreement and your use of the EPF are governed by California law.
Partner may use certain promotional content as may be provided by Apple, including previews of songs and music videos, album art, and App icons (“Promo Content”), for the purposes of promoting the subject of the Promo Content; provided such Promo Content: (i) is placed only on pages that promote the content on which the Promo Content is based; (ii) is proximate to a “Download on iTunes” or “Available on the App Store” badge (as approved by Apple) that acts as a link directly to pages within iTunes or the App Store where consumers can purchase the promoted content; (iii) includes attribution indicating the Promo Content was “provided courtesy of iTunes” if such Promo Content includes song or music video previews; (iv) is streamed only, and not downloaded, saved, cached, or synchronized with video, if such Promo Content includes song or music video previews; (v) is not used for independent entertainment value apart from its promotional purpose; and (vi) is not used to promote any other goods or services. Partner acknowledges that Apple provides the Promo Content “as is,” and disclaims any and all representations or warranties, including, but not limited to, non-infringement. Partner shall forward any claims received in connection with the Promo Content to Apple immediately upon receipt, and will remove any Promo Content immediately upon request from Apple. This agreement and your use of Promo Content are governed by California law.