tweaselORG / parse-tunes

Library for fetching select data on iOS apps from the Apple App Store via undocumented internal iTunes APIs.
MIT License
16 stars 1 forks source link

App details, including privacy labels #6

Closed baltpeter closed 1 year ago

baltpeter commented 1 year ago

For fetching the privacy labels, I have so far used this endpoint:

curl --request GET \
  --url 'https://amp-api.apps.apple.com/v1/catalog/DE/apps/284882215?platform=iphone&extend=privacyDetails&l=en-gb' \
  --header 'Authorization: Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlU4UlRZVjVaRFMifQ.eyJpc3MiOiI3TktaMlZQNDhaIiwiaWF0IjoxNjQ3NDc1MzQ1LCJleHAiOjE2NTQ3MzI5NDV9.6IJEuKuZ_dxuZsa2lBkgQcNfvTh7NEdNTsZhBm6cPwxYSNlf_OgICQZfmIXBDQB7sF1vVCkz1qIMIa9m8J3YBQ'

The problem is the required Bearer token, which doesn't last long. You can extract that from the website (Go to any app (like https://apps.apple.com/us/app/facebook/id284882215), and observe the network traffic while clicking the 'See Details' link next to 'App Privacy'.) but it would be nice if that wasn't necessary.

baltpeter commented 1 year ago

Actually, seems like that has (slightly) changed as well. You now also need the Origin header:

curl --request GET \
  --url 'https://amp-api.apps.apple.com/v1/catalog/de/apps/284882215?l=de-de&platform=web&fields=privacyDetails' \
  --header 'Origin: https://apps.apple.com' \
  --header 'authorization: Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlU4UlRZVjVaRFMifQ.eyJpc3MiOiI3TktaMlZQNDhaIiwiaWF0IjoxNjcwODcxNjA2LCJleHAiOjE2NzgxMjkyMDYsInJvb3RfaHR0cHNfb3JpZ2luIjpbImFwcGxlLmNvbSJdfQ.e3ITXRdUga9yg5PPmzEY7co-Je4WiAGcr17Gzbyw48m_f6GG9FjkdbM0aFn8v9YEyD5CgPi1xJ3YkanHLMjGNw'
baltpeter commented 1 year ago

iTunes for Windows doesn't show the privacy labels.

For viewing an app page, it does a request to https://apps.apple.com/de/app/facebook/id284882215?l=en. That doesn't include the privacy label data and I haven't found a parameter to change that.

baltpeter commented 1 year ago

The App Store on an iPhone uses the same endpoint as the website:

image

baltpeter commented 1 year ago

Interestingly, this Bearer token works without the Origin header:

curl --request GET \
  --url 'https://amp-api-edge.apps.apple.com/v1/catalog/de/apps/1163805393?additionalPlatforms=appletv%2Cipad%2Cmac%2Cwatch&extend=customArtwork&fields=privacyDetails%2CartistName%2CprivacyPolicyUrl&l=en-GB&platform=iphone' \
  --header 'authorization: Bearer eyJraWQiOiJGNDdEWk4xOEYwIiwiYWxnIjoiRVMyNTYifQ.eyJpc3MiOiJBUzI4UjdHMTdNIiwiaWF0IjoxNjczOTY5ODk4LCJleHAiOjE2NzY1NjE4OTgsIm1pZCI6IklWZWVBT3ZaNGFsalM4YytqazVLTjVmV2ErQT0ifQ.q6v3eGHwYL6lAk07a2OKgjz0d9VEM_jNkbXV717GgsNewX5TY98rgPTzcDztkZ4FnXWZgSH-8HxDlxQXXUSB-w'
baltpeter commented 1 year ago

The iPhone gets its Bearer token from https://sf-api-token-service.itunes.apple.com/apiToken?clientClass=apple&clientId=appstore&os=iOS&osVersion=15.7.2&productVersion=3.0&version=2:

image

image

{
    "token": "eyJraWQiOiJGNDdEWk4xOEYwIiwiYWxnIjoiRVMyNTYifQ.eyJpc3MiOiJBUzI4UjdHMTdNIiwiaWF0IjoxNjczOTcwODA4LCJleHAiOjE2NzM5NzExMDh9.5_aUrSnDfg0bgAhIACqoB10HulUDTYl2vkGnZLEq882EUQd1cxUttkKmYy_JqXyxln5n7VhQXC3tT0VRmz27MA",
    "clientId": "appstore",
    "ping": "https://play.itunes.apple.com/WebObjects/MZPlay.woa/wa/anonymousVerifyProvisioning"
}

Unsurprisingly, we can't send our own requests to that endpoint. It needs the correct combination of those three headers and I don't know of a way of generating the signature ourselves:

curl --request GET \
  --url 'https://sf-api-token-service.itunes.apple.com/apiToken?clientClass=apple&clientId=appstore&os=iOS&osVersion=15.7.2&productVersion=3.0&version=2' \
  --header 'x-apple-actionsignature: ApYfw8AblRbpfphwvj+LJaFxXkg+6vF/eag45saGxIcAAAABUAMAAACNAAAAgDAicpKdbZ2FgUcKZGHeEClfnwAF3F9aFR/eFppTil5IAlWAg6//OPDyMz/w6A6+Cr18Sf6CmZLyGoov2fFqtidfG8uSiqZGL8EGYWpBfbppCjQv/BbLnig8R64C4zbXfMyc/3QidRuP7BvHCl0huNLj7OqjtCR/My/66o1vMY5gAAAAEczStSga1ThEHZu3LRigp1c+AAAAnwHjVsayYZI3rKzUhQxVtUG3ZrtY7QAAAIYEBxveTx48utcwb6tTW7PydONjxsDpYAZVzpIxhO+sjCD/Xnmn2f5ouh0md5MpMceFKF3ejpjSRLY8Xt6+ZdExSuBOOTY0QfhvX/1VzpxhEjrhZ3LfKdYaf/kvbM5dVzad8V8kA6U6ltuUwBTyFi9uyVVv+j7tzmO/+Yov5gRWRSCOv7abDwAAAAAAAAAAAAAAAAAAAAEERhcAAA==' \
  --header 'x-apple-amd-m: IVeeAOvZ4aljS8c+jk5KN5fWa+DvD+PngaBSUsrJohQcFaYLgBb409unKgjGqbFS8QTASUWeGoe93ytG' \
  --header 'x-apple-store-front: 143443-2,29 t:apps3' \
  --header 'x-request-timestamp: 2023-01-17T15:38:14Z' 

Removing or changing any of those headers results in:

{
    "status": "verificationFailure"
}
baltpeter commented 1 year ago

Ok, so where does the website get its token from?

In the HTML of a store page (e.g. https://apps.apple.com/de/app/facebook/id284882215), there is a meta tag like this:

<meta name="web-experience-app/config/environment" content="%7B%22appVersion%22%3A1%2C%22modulePrefix%22%3A%22web-experience-app%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22history-hash-router-scroll%22%2C%22historySupportMiddleware%22%3Atrue%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_DEFAULT_ASYNC_OBSERVERS%22%3Atrue%2C%22_JQUERY_INTEGRATION%22%3Afalse%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22PROGRESS_BAR_DELAY%22%3A3000%2C%22CLOCK_INTERVAL%22%3A1000%2C%22LOADING_SPINNER_SPY%22%3Atrue%2C%22BREAKPOINTS%22%3A%7B%22large%22%3A%7B%22min%22%3A1069%2C%22max%22%3A1440%2C%22content%22%3A980%7D%2C%22medium%22%3A%7B%22min%22%3A735%2C%22max%22%3A1068%2C%22content%22%3A692%7D%2C%22small%22%3A%7B%22min%22%3A320%2C%22max%22%3A734%2C%22content%22%3A280%7D%7D%2C%22buildVariant%22%3A%22apps%22%2C%22name%22%3A%22web-experience-app%22%2C%22version%22%3A%222250.7.0%2Bd3adb500%22%7D%2C%22MEDIA_API%22%3A%7B%22token%22%3A%22eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlU4UlRZVjVaRFMifQ.eyJpc3MiOiI3TktaMlZQNDhaIiwiaWF0IjoxNjcwODcxNjA2LCJleHAiOjE2NzgxMjkyMDYsInJvb3RfaHR0cHNfb3JpZ2luIjpbImFwcGxlLmNvbSJdfQ.e3ITXRdUga9yg5PPmzEY7co-Je4WiAGcr17Gzbyw48m_f6GG9FjkdbM0aFn8v9YEyD5CgPi1xJ3YkanHLMjGNw%22%7D%2C%22i18n%22%3A%7B%22defaultLocale%22%3A%22en-gb%22%2C%22useDevLoc%22%3Afalse%2C%22pathToLocales%22%3A%22dist%2Flocales%22%7D%2C%22MEDIA_ARTWORK%22%3A%7B%22BREAKPOINTS%22%3A%7B%22large%22%3A%7B%22min%22%3A1069%2C%22max%22%3A1440%2C%22content%22%3A980%7D%2C%22medium%22%3A%7B%22min%22%3A735%2C%22max%22%3A1068%2C%22content%22%3A692%7D%2C%22small%22%3A%7B%22min%22%3A320%2C%22max%22%3A734%2C%22content%22%3A280%7D%7D%7D%2C%22API%22%3A%7B%22AppHost%22%3A%22https%3A%2F%2Famp-api.apps.apple.com%22%2C%22AppEventHost%22%3A%22https%3A%2F%2Famp-api-edge.apps.apple.com%22%2C%22globalElementsPath%22%3A%22%2Fglobal-elements%22%7D%2C%22fastboot%22%3A%7B%22hostWhitelist%22%3A%5B%7B%7D%5D%7D%2C%22ember-short-number%22%3A%7B%22locales%22%3A%5B%22ar-dz%22%2C%22ar-bh%22%2C%22ar-eg%22%2C%22ar-iq%22%2C%22ar-jo%22%2C%22ar-kw%22%2C%22ar-lb%22%2C%22ar-ly%22%2C%22ar-ma%22%2C%22ar-om%22%2C%22ar-qa%22%2C%22ar-sa%22%2C%22ar-sd%22%2C%22ar-sy%22%2C%22ar-tn%22%2C%22ar-ae%22%2C%22ar-ye%22%2C%22he-il%22%2C%22iw-il%22%2C%22ca-es%22%2C%22cs-cz%22%2C%22da-dk%22%2C%22de-ch%22%2C%22de-de%22%2C%22el-gr%22%2C%22en-au%22%2C%22en-ca%22%2C%22en-gb%22%2C%22en-us%22%2C%22es-419%22%2C%22es-es%22%2C%22es-mx%22%2C%22es-xl%22%2C%22et-ee%22%2C%22fi-fi%22%2C%22fr-ca%22%2C%22fr-fr%22%2C%22hi-in%22%2C%22hr-hr%22%2C%22hu-hu%22%2C%22id-id%22%2C%22is-is%22%2C%22it-it%22%2C%22iw-il%22%2C%22ja-jp%22%2C%22ko-kr%22%2C%22lt-lt%22%2C%22lv-lv%22%2C%22ms-my%22%2C%22nl-nl%22%2C%22no-no%22%2C%22no-nb%22%2C%22nb-no%22%2C%22pl-pl%22%2C%22pt-br%22%2C%22pt-pt%22%2C%22ro-ro%22%2C%22ru-ru%22%2C%22sk-sk%22%2C%22sv-se%22%2C%22th-th%22%2C%22tr-tr%22%2C%22uk-ua%22%2C%22vi-vi%22%2C%22vi-vn%22%2C%22zh-cn%22%2C%22zh-hans%22%2C%22zh-hant%22%2C%22zh-hk%22%2C%22zh-tw%22%2C%22ar%22%2C%22ca%22%2C%22cs%22%2C%22da%22%2C%22de%22%2C%22el%22%2C%22en%22%2C%22es%22%2C%22fi%22%2C%22fr%22%2C%22he%22%2C%22hi%22%2C%22hr%22%2C%22hu%22%2C%22id%22%2C%22is%22%2C%22it%22%2C%22ja%22%2C%22ko%22%2C%22lt%22%2C%22lv%22%2C%22ms%22%2C%22nb%22%2C%22nl%22%2C%22no%22%2C%22pl%22%2C%22pt%22%2C%22ro%22%2C%22ru%22%2C%22sk%22%2C%22sv%22%2C%22th%22%2C%22tr%22%2C%22uk%22%2C%22vi%22%2C%22zh%22%5D%7D%2C%22ember-cli-mirage%22%3A%7B%22enabled%22%3Afalse%2C%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22BREAKPOINTS%22%3A%7B%22large%22%3A%7B%22min%22%3A1069%2C%22max%22%3A1440%2C%22content%22%3A980%7D%2C%22medium%22%3A%7B%22min%22%3A735%2C%22max%22%3A1068%2C%22content%22%3A692%7D%2C%22small%22%3A%7B%22min%22%3A320%2C%22max%22%3A734%2C%22content%22%3A280%7D%7D%2C%22METRICS%22%3A%7B%22variant%22%3A%22web%22%2C%22baseFields%22%3A%7B%22appName%22%3A%22web-experience-app%22%2C%22constraintProfiles%22%3A%5B%22AMPWeb%22%5D%7D%2C%22clickstream%22%3A%7B%22enabled%22%3Atrue%2C%22topic%22%3A%5B%22xp_amp_web_exp%22%5D%2C%22autoTrackClicks%22%3Atrue%7D%2C%22performance%22%3A%7B%22enabled%22%3Atrue%2C%22topic%22%3A%22xp_amp_appstore_perf%22%7D%7D%2C%22MEDIA_SHELF%22%3A%7B%22GRID_CONFIG%22%3A%7B%22books-brick-row%22%3A%7B%22small%22%3A1%2C%22medium%22%3A2%2C%22large%22%3A3%7D%7D%2C%22BREAKPOINTS%22%3A%7B%22large%22%3A%7B%22min%22%3A1069%2C%22max%22%3A1440%2C%22content%22%3A980%7D%2C%22medium%22%3A%7B%22min%22%3A735%2C%22max%22%3A1068%2C%22content%22%3A692%7D%2C%22small%22%3A%7B%22min%22%3A320%2C%22max%22%3A734%2C%22content%22%3A280%7D%7D%7D%2C%22SASSKIT_GENERATOR%22%3A%7B%22VIEWPORT_CONFIG%22%3A%7B%22BREAKPOINTS%22%3A%7B%22large%22%3A%7B%22min%22%3A1069%2C%22max%22%3A1440%2C%22content%22%3A980%7D%2C%22medium%22%3A%7B%22min%22%3A735%2C%22max%22%3A1068%2C%22content%22%3A692%7D%2C%22small%22%3A%7B%22min%22%3A320%2C%22max%22%3A734%2C%22content%22%3A280%7D%7D%7D%7D%2C%22features%22%3A%7B%22BUILD_VARIANT_APPS%22%3Atrue%2C%22BUILD_VARIANT_BOOKS%22%3Afalse%2C%22BUILD_VARIANT_FITNESS%22%3Afalse%2C%22BUILD_VARIANT_PODCASTS%22%3Afalse%2C%22BUILD_VARIANT_DEFAULT%22%3Afalse%2C%22TV%22%3Afalse%2C%22PODCASTS%22%3Afalse%2C%22BOOKS%22%3Afalse%2C%22APPS%22%3Atrue%2C%22ARTISTS%22%3Afalse%2C%22DEEPLINK_ROUTE%22%3Afalse%2C%22EMBER_DATA%22%3Afalse%2C%22CHARTS%22%3Atrue%2C%22FITNESS%22%3Afalse%2C%22SHARE_UI%22%3Afalse%2C%22SEPARATE_RTL_STYLESHEET%22%3Atrue%7D%2C%22ember-cli-content-security-policy%22%3A%7B%22policy%22%3A%22upgrade-insecure-requests%20%3B%20default-src%20'none'%3B%20img-src%20'self'%20https%3A%2F%2F*.apple.com%20https%3A%2F%2F*.mzstatic.com%20data%3A%3B%20style-src%20'self'%20https%3A%2F%2F*.apple.com%20'unsafe-inline'%3B%20font-src%20'self'%20https%3A%2F%2F*.apple.com%3B%20media-src%20'self'%20https%3A%2F%2F*.apple.com%20blob%3A%3B%20connect-src%20'self'%20https%3A%2F%2F*.apple.com%20https%3A%2F%2F*.mzstatic.com%3B%20script-src%20'self'%20https%3A%2F%2F*.apple.com%20'unsafe-eval'%20'sha256-4ywTGAe4rEpoHt8XkjbkdOWklMJ%2F1Py%2Fx6b3%2FaGbtSQ%3D'%20blob%3A%3B%20frame-src%20'self'%20https%3A%2F%2F*.apple.com%20itmss%3A%20itms-appss%3A%20itms-bookss%3A%20itms-itunesus%3A%20itms-messagess%3A%20itms-podcasts%3A%20itms-watchs%3A%20macappstores%3A%20musics%3A%20apple-musics%3A%20podcasts%3A%20videos%3A%3B%22%2C%22reportOnly%22%3Afalse%7D%2C%22exportApplicationGlobal%22%3Afalse%7D">

Here's what the content looks like URL-decoded:

{
    "appVersion": 1,
    "modulePrefix": "web-experience-app",
    "environment": "production",
    "rootURL": "/",
    "locationType": "history-hash-router-scroll",
    "historySupportMiddleware": true,
    "EmberENV": {
        "FEATURES": {},
        "EXTEND_PROTOTYPES": { "Date": false },
        "_APPLICATION_TEMPLATE_WRAPPER": false,
        "_DEFAULT_ASYNC_OBSERVERS": true,
        "_JQUERY_INTEGRATION": false,
        "_TEMPLATE_ONLY_GLIMMER_COMPONENTS": true
    },
    "APP": {
        "PROGRESS_BAR_DELAY": 3000,
        "CLOCK_INTERVAL": 1000,
        "LOADING_SPINNER_SPY": true,
        "BREAKPOINTS": {
            "large": { "min": 1069, "max": 1440, "content": 980 },
            "medium": { "min": 735, "max": 1068, "content": 692 },
            "small": { "min": 320, "max": 734, "content": 280 }
        },
        "buildVariant": "apps",
        "name": "web-experience-app",
        "version": "2250.7.0+d3adb500"
    },
    "MEDIA_API": {
        "token": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlU4UlRZVjVaRFMifQ.eyJpc3MiOiI3TktaMlZQNDhaIiwiaWF0IjoxNjcwODcxNjA2LCJleHAiOjE2NzgxMjkyMDYsInJvb3RfaHR0cHNfb3JpZ2luIjpbImFwcGxlLmNvbSJdfQ.e3ITXRdUga9yg5PPmzEY7co-Je4WiAGcr17Gzbyw48m_f6GG9FjkdbM0aFn8v9YEyD5CgPi1xJ3YkanHLMjGNw"
    },
    "i18n": { "defaultLocale": "en-gb", "useDevLoc": false, "pathToLocales": "dist/locales" },
    "MEDIA_ARTWORK": {
        "BREAKPOINTS": {
            "large": { "min": 1069, "max": 1440, "content": 980 },
            "medium": { "min": 735, "max": 1068, "content": 692 },
            "small": { "min": 320, "max": 734, "content": 280 }
        }
    },
    "API": {
        "AppHost": "https://amp-api.apps.apple.com",
        "AppEventHost": "https://amp-api-edge.apps.apple.com",
        "globalElementsPath": "/global-elements"
    },
    "fastboot": { "hostWhitelist": [{}] },
    "ember-short-number": {
        "locales": [
            "ar-dz",
            "ar-bh",
            "ar-eg",
            "ar-iq",
            "ar-jo",
            "ar-kw",
            "ar-lb",
            "ar-ly",
            "ar-ma",
            "ar-om",
            "ar-qa",
            "ar-sa",
            "ar-sd",
            "ar-sy",
            "ar-tn",
            "ar-ae",
            "ar-ye",
            "he-il",
            "iw-il",
            "ca-es",
            "cs-cz",
            "da-dk",
            "de-ch",
            "de-de",
            "el-gr",
            "en-au",
            "en-ca",
            "en-gb",
            "en-us",
            "es-419",
            "es-es",
            "es-mx",
            "es-xl",
            "et-ee",
            "fi-fi",
            "fr-ca",
            "fr-fr",
            "hi-in",
            "hr-hr",
            "hu-hu",
            "id-id",
            "is-is",
            "it-it",
            "iw-il",
            "ja-jp",
            "ko-kr",
            "lt-lt",
            "lv-lv",
            "ms-my",
            "nl-nl",
            "no-no",
            "no-nb",
            "nb-no",
            "pl-pl",
            "pt-br",
            "pt-pt",
            "ro-ro",
            "ru-ru",
            "sk-sk",
            "sv-se",
            "th-th",
            "tr-tr",
            "uk-ua",
            "vi-vi",
            "vi-vn",
            "zh-cn",
            "zh-hans",
            "zh-hant",
            "zh-hk",
            "zh-tw",
            "ar",
            "ca",
            "cs",
            "da",
            "de",
            "el",
            "en",
            "es",
            "fi",
            "fr",
            "he",
            "hi",
            "hr",
            "hu",
            "id",
            "is",
            "it",
            "ja",
            "ko",
            "lt",
            "lv",
            "ms",
            "nb",
            "nl",
            "no",
            "pl",
            "pt",
            "ro",
            "ru",
            "sk",
            "sv",
            "th",
            "tr",
            "uk",
            "vi",
            "zh"
        ]
    },
    "ember-cli-mirage": { "enabled": false, "usingProxy": false, "useDefaultPassthroughs": true },
    "BREAKPOINTS": {
        "large": { "min": 1069, "max": 1440, "content": 980 },
        "medium": { "min": 735, "max": 1068, "content": 692 },
        "small": { "min": 320, "max": 734, "content": 280 }
    },
    "METRICS": {
        "variant": "web",
        "baseFields": { "appName": "web-experience-app", "constraintProfiles": ["AMPWeb"] },
        "clickstream": { "enabled": true, "topic": ["xp_amp_web_exp"], "autoTrackClicks": true },
        "performance": { "enabled": true, "topic": "xp_amp_appstore_perf" }
    },
    "MEDIA_SHELF": {
        "GRID_CONFIG": { "books-brick-row": { "small": 1, "medium": 2, "large": 3 } },
        "BREAKPOINTS": {
            "large": { "min": 1069, "max": 1440, "content": 980 },
            "medium": { "min": 735, "max": 1068, "content": 692 },
            "small": { "min": 320, "max": 734, "content": 280 }
        }
    },
    "SASSKIT_GENERATOR": {
        "VIEWPORT_CONFIG": {
            "BREAKPOINTS": {
                "large": { "min": 1069, "max": 1440, "content": 980 },
                "medium": { "min": 735, "max": 1068, "content": 692 },
                "small": { "min": 320, "max": 734, "content": 280 }
            }
        }
    },
    "features": {
        "BUILD_VARIANT_APPS": true,
        "BUILD_VARIANT_BOOKS": false,
        "BUILD_VARIANT_FITNESS": false,
        "BUILD_VARIANT_PODCASTS": false,
        "BUILD_VARIANT_DEFAULT": false,
        "TV": false,
        "PODCASTS": false,
        "BOOKS": false,
        "APPS": true,
        "ARTISTS": false,
        "DEEPLINK_ROUTE": false,
        "EMBER_DATA": false,
        "CHARTS": true,
        "FITNESS": false,
        "SHARE_UI": false,
        "SEPARATE_RTL_STYLESHEET": true
    },
    "ember-cli-content-security-policy": {
        "policy": "upgrade-insecure-requests ; default-src 'none'; img-src 'self' https://*.apple.com https://*.mzstatic.com data:; style-src 'self' https://*.apple.com 'unsafe-inline'; font-src 'self' https://*.apple.com; media-src 'self' https://*.apple.com blob:; connect-src 'self' https://*.apple.com https://*.mzstatic.com; script-src 'self' https://*.apple.com 'unsafe-eval' 'sha256-4ywTGAe4rEpoHt8XkjbkdOWklMJ/1Py/x6b3/aGbtSQ=' blob:; frame-src 'self' https://*.apple.com itmss: itms-appss: itms-bookss: itms-itunesus: itms-messagess: itms-podcasts: itms-watchs: macappstores: musics: apple-musics: podcasts: videos:;",
        "reportOnly": false
    },
    "exportApplicationGlobal": false
}
baltpeter commented 1 year ago

Amusingly enough, the token is included even if you get a 429 Too many requests response (which is missing all the other data). :D

baltpeter commented 1 year ago

Time for another quick experiment: Do any of the platforms in X-Apple-Store-Front (see #1) also get a token? Maybe one of them gets a response in a format that's nicer to handle than HTML.

import fetch from 'cross-fetch';

(async () => {
    for (let i = 0; i <= 200; i++) {
        try {
            const res = await fetch('https://apps.apple.com/app/id284882215', {
                method: 'GET',
                headers: { 'X-Apple-Store-Front': `143443-2,${i}` },
            }).then((response) => response.text());

            if (res.includes('token')) console.log(i);
        } catch {}
    }
})();

Result:

127
129
130
131
133
134
136
138
140
141
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200

Only ones above 127. Pretty sure that those are not actual platforms.

The benefit of them is that their response is a lot shorter than the response for web (8.4 KB vs. 425 KB). But unfortunately, they often return a 403 Forbidden response with no body. You then have to wait a bit before trying again. Thus, they are not an option, I'm afraid.

baltpeter commented 1 year ago

This is the smallest page I found that contains the token: https://apps.apple.com/story/id1538632801 at 101 KB.

baltpeter commented 1 year ago

Actually, never mind: We can go even lower.

404 pages (e.g. https://apps.apple.com/404) have only 54 KB.

(If you manage to run into a 429, it's only 9 KB because that page doesn't include the translations object but I guess that doesn't help us here. :D)

baltpeter commented 1 year ago

Since the endpoint can return a lot more than just privacy labels, I'll make this an app details function instead.

baltpeter commented 1 year ago

Interesting observation: The token used on the website seems to be the same for everyone. It's a JWT. The current one was issued at 2022-12-12T19:00:06.000Z and expires 2023-03-06T19:00:06.000Z, so unless you're unlucky and request one near the end of its expiration, they do last quite a while.

baltpeter commented 1 year ago

Ok, so let's investigate what https://amp-api.apps.apple.com/v1/catalog/<country>/apps can do.

From the privacy labels on the website, we get:

https://amp-api.apps.apple.com/v1/catalog/us/apps/284882215?l=en-us&platform=web&fields=privacyDetails

But we can get quite a lot more from a traffic dump from the App Store app on an iPhone.

First of all, we see a few different endpoints:

The query parameters of these seem quite similar, so I'll just dump them here:

additionalPlatforms:      appletv,ipad,mac,watch
extend:                   customArtwork,editorialArtwork,editorialVideo,minimumOSVersion
extend[app-events]:       description,productArtwork,productVideo
include[app-events]:      app
include[editorial-items]: marketing-items,primary-content
l:                        en-GB
meta:                     personalizationData
meta[marketing-items]:    metrics
platform:                 iphone
sparseCount:              1
with:                     appEvents
additionalPlatforms: appletv,ipad,mac,watch
extend:              customArtwork
l:                   en-GB
platform:            iphone
additionalPlatforms:      appletv,ipad,mac,watch
extend:                   badge-content,customArtwork,customScreenshotsByType,customVideoPreviewsByType,editorialArtwork,expectedReleaseDateDisplayFormat,isAppleWatchSupported,minimumOSVersion,requiredCapabilities
ids:                      1552153525,1366180154,1543158709,1578906034,698255242,403858572,1389760587
include[editorial-items]: marketing-items
l:                        en-GB
meta[marketing-items]:    metrics
platform:                 iphone
additionalPlatforms:     appletv,ipad,mac,watch
availableIn[app-events]: future
extend:                  customArtwork,customPromotionalText,customScreenshotsByType,customVideoPreviewsByType,description,editorialVideo,expectedReleaseDateDisplayFormat,fileSizeByDevice,maxPlayers,messagesScreenshots,minPlayers,minimumOSVersion,privacy,privacyPolicyUrl,remoteControllerRequirement,requirementsByDeviceFamily,supportURLForLanguage,supportsFunCamera,versionHistory,websiteUrl
extend[app-events]:      description,productArtwork,productVideo
include:                 alternate-apps,app-bundles,customers-also-bought-apps,developer,developer-other-apps,merchandised-in-apps,related-editorial-items,reviews,top-in-apps
include[apps]:           app-events
l:                       en-GB
limit[reviews]:          6
platform:                iphone
additionalPlatforms: appletv,ipad,mac,watch
extend:              customArtwork,editorialArtwork,editorialVideo,minimumOSVersion
ids:                 1568270949,1481316255,1619485045,1553739106,1535425137,1538467877,1556005348,1615020509,1586844471,1566180049
l:                   en-GB
platform:            iphone
additionalPlatforms: appletv,ipad,mac,watch
extend:              customArtwork,editorialArtwork,editorialVideo,minimumOSVersion
l:                   en-GB
platform:            iphone
additionalPlatforms: appletv,ipad,mac,watch
extend:              customArtwork
fields:              privacyDetails,artistName,privacyPolicyUrl
l:                   en-GB
platform:            iphone
baltpeter commented 1 year ago

For now, I'm only interested in the endpoint for a single app (/v1/catalog/<country>/apps/<app ID>), I don't care about the list endpoints at the moment.

baltpeter commented 1 year ago

First observation: platform is required. If we don't specify that:

{
    "errors": [
        {
            "id": "G6ELYWYKLM4FTKIE3TGKAB2PVY",
            "title": "Missing Parameter",
            "detail": "One or more platform must be specified",
            "status": "400",
            "code": "40003",
            "source": {
                "parameter": "platform"
            }
        }
    ]
}

The platform also has to be valid:

{
    "errors": [
        {
            "id": "5HFRY2BK7HXKYQXE3H4V5B6NVE",
            "title": "Invalid Parameter Value",
            "detail": "Invalid platform value abc",
            "status": "400",
            "code": "40005",
            "source": {
                "parameter": "platform"
            }
        }
    ]
}

From the requests above, we know that at least the following platforms exist:

I have verified that those do all work. They also influence the response, so we'll have to make that a parameter in our function.

baltpeter commented 1 year ago

Actually, we can also make platform optional: Using additionalPlatforms, we can also request the data for all platforms.

baltpeter commented 1 year ago

The storefront country is included in the URL, that is required.

The language can be set through l, otherwise it defaults to a sensible language for the respective country. Just like with X-Apple-Store-Front, the combinations are limited (https://github.com/tweaselORG/parse-tunes/issues/1#issuecomment-1384047420). But this time, we're using ISO country and language codes.

And just like the Apple Music API, this one also has a /v1/storefronts endpoint with all possible combinations:

curl --request GET \
  --url 'https://amp-api.apps.apple.com/v1/storefronts?platform=web&additionalPlatforms=iphone%2Cappletv%2Cipad%2Cmac%2Cwatch' \
  --header 'authorization: Bearer eyJraWQiOiJGNDdEWk4xOEYwIiwiYWxnIjoiRVMyNTYifQ.eyJpc3MiOiJBUzI4UjdHMTdNIiwiaWF0IjoxNjczOTY5ODk4LCJleHAiOjE2NzY1NjE4OTgsIm1pZCI6IklWZWVBT3ZaNGFsalM4YytqazVLTjVmV2ErQT0ifQ.q6v3eGHwYL6lAk07a2OKgjz0d9VEM_jNkbXV717GgsNewX5TY98rgPTzcDztkZ4FnXWZgSH-8HxDlxQXXUSB-w'

Since that endpoint is guarded behind the Bearer token, I'll dump the response here for reference:

{
    "data": [
        {
            "id": "af",
            "type": "storefronts",
            "href": "/v1/storefronts/af",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Afghanistan",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "al",
            "type": "storefronts",
            "href": "/v1/storefronts/al",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Albania",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "dz",
            "type": "storefronts",
            "href": "/v1/storefronts/dz",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR",
                    "ar"
                ],
                "name": "Algeria",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ao",
            "type": "storefronts",
            "href": "/v1/storefronts/ao",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Angola",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ai",
            "type": "storefronts",
            "href": "/v1/storefronts/ai",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Anguilla",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ag",
            "type": "storefronts",
            "href": "/v1/storefronts/ag",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Antigua and Barbuda",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ar",
            "type": "storefronts",
            "href": "/v1/storefronts/ar",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "Argentina",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "am",
            "type": "storefronts",
            "href": "/v1/storefronts/am",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Armenia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "au",
            "type": "storefronts",
            "href": "/v1/storefronts/au",
            "attributes": {
                "supportedLanguageTags": [
                    "en-AU",
                    "en-GB"
                ],
                "name": "Australia",
                "defaultLanguageTag": "en-AU"
            }
        },
        {
            "id": "at",
            "type": "storefronts",
            "href": "/v1/storefronts/at",
            "attributes": {
                "supportedLanguageTags": [
                    "de-DE",
                    "en-GB"
                ],
                "name": "Austria",
                "defaultLanguageTag": "de-DE"
            }
        },
        {
            "id": "az",
            "type": "storefronts",
            "href": "/v1/storefronts/az",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Azerbaijan",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "bs",
            "type": "storefronts",
            "href": "/v1/storefronts/bs",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Bahamas",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "bh",
            "type": "storefronts",
            "href": "/v1/storefronts/bh",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "ar"
                ],
                "name": "Bahrain",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "bb",
            "type": "storefronts",
            "href": "/v1/storefronts/bb",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Barbados",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "by",
            "type": "storefronts",
            "href": "/v1/storefronts/by",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Belarus",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "be",
            "type": "storefronts",
            "href": "/v1/storefronts/be",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR",
                    "nl"
                ],
                "name": "Belgium",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "bz",
            "type": "storefronts",
            "href": "/v1/storefronts/bz",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "es-MX"
                ],
                "name": "Belize",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "bj",
            "type": "storefronts",
            "href": "/v1/storefronts/bj",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Benin",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "bm",
            "type": "storefronts",
            "href": "/v1/storefronts/bm",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Bermuda",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "bt",
            "type": "storefronts",
            "href": "/v1/storefronts/bt",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Bhutan",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "bo",
            "type": "storefronts",
            "href": "/v1/storefronts/bo",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "Bolivia",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "ba",
            "type": "storefronts",
            "href": "/v1/storefronts/ba",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "hr"
                ],
                "name": "Bosnia and Herzegovina",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "bw",
            "type": "storefronts",
            "href": "/v1/storefronts/bw",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Botswana",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "br",
            "type": "storefronts",
            "href": "/v1/storefronts/br",
            "attributes": {
                "supportedLanguageTags": [
                    "pt-BR",
                    "en-GB"
                ],
                "name": "Brazil",
                "defaultLanguageTag": "pt-BR"
            }
        },
        {
            "id": "vg",
            "type": "storefronts",
            "href": "/v1/storefronts/vg",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "British Virgin Islands",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "bn",
            "type": "storefronts",
            "href": "/v1/storefronts/bn",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Brunei Darussalam",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "bg",
            "type": "storefronts",
            "href": "/v1/storefronts/bg",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Bulgaria",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "bf",
            "type": "storefronts",
            "href": "/v1/storefronts/bf",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Burkina Faso",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "kh",
            "type": "storefronts",
            "href": "/v1/storefronts/kh",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Cambodia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "cm",
            "type": "storefronts",
            "href": "/v1/storefronts/cm",
            "attributes": {
                "supportedLanguageTags": [
                    "fr-FR",
                    "en-GB"
                ],
                "name": "Cameroon",
                "defaultLanguageTag": "fr-FR"
            }
        },
        {
            "id": "ca",
            "type": "storefronts",
            "href": "/v1/storefronts/ca",
            "attributes": {
                "supportedLanguageTags": [
                    "en-CA",
                    "fr-CA"
                ],
                "name": "Canada",
                "defaultLanguageTag": "en-CA"
            }
        },
        {
            "id": "cv",
            "type": "storefronts",
            "href": "/v1/storefronts/cv",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Cape Verde",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ky",
            "type": "storefronts",
            "href": "/v1/storefronts/ky",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Cayman Islands",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "td",
            "type": "storefronts",
            "href": "/v1/storefronts/td",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Chad",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "cl",
            "type": "storefronts",
            "href": "/v1/storefronts/cl",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "Chile",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "cn",
            "type": "storefronts",
            "href": "/v1/storefronts/cn",
            "attributes": {
                "supportedLanguageTags": [
                    "zh-Hans-CN",
                    "en-GB"
                ],
                "name": "China mainland",
                "defaultLanguageTag": "zh-Hans-CN"
            }
        },
        {
            "id": "co",
            "type": "storefronts",
            "href": "/v1/storefronts/co",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "Colombia",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "cr",
            "type": "storefronts",
            "href": "/v1/storefronts/cr",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "Costa Rica",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "hr",
            "type": "storefronts",
            "href": "/v1/storefronts/hr",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "hr"
                ],
                "name": "Croatia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "cy",
            "type": "storefronts",
            "href": "/v1/storefronts/cy",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "el",
                    "tr"
                ],
                "name": "Cyprus",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "cz",
            "type": "storefronts",
            "href": "/v1/storefronts/cz",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "cs"
                ],
                "name": "Czech Republic",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ci",
            "type": "storefronts",
            "href": "/v1/storefronts/ci",
            "attributes": {
                "supportedLanguageTags": [
                    "fr-FR",
                    "en-GB"
                ],
                "name": "Côte d'Ivoire",
                "defaultLanguageTag": "fr-FR"
            }
        },
        {
            "id": "cd",
            "type": "storefronts",
            "href": "/v1/storefronts/cd",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Democratic Republic of the Congo",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "dk",
            "type": "storefronts",
            "href": "/v1/storefronts/dk",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "da"
                ],
                "name": "Denmark",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "dm",
            "type": "storefronts",
            "href": "/v1/storefronts/dm",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Dominica",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "do",
            "type": "storefronts",
            "href": "/v1/storefronts/do",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "Dominican Republic",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "ec",
            "type": "storefronts",
            "href": "/v1/storefronts/ec",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "Ecuador",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "eg",
            "type": "storefronts",
            "href": "/v1/storefronts/eg",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR",
                    "ar"
                ],
                "name": "Egypt",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "sv",
            "type": "storefronts",
            "href": "/v1/storefronts/sv",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "El Salvador",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "ee",
            "type": "storefronts",
            "href": "/v1/storefronts/ee",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Estonia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "sz",
            "type": "storefronts",
            "href": "/v1/storefronts/sz",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Eswatini",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "fj",
            "type": "storefronts",
            "href": "/v1/storefronts/fj",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Fiji",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "fi",
            "type": "storefronts",
            "href": "/v1/storefronts/fi",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fi"
                ],
                "name": "Finland",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "fr",
            "type": "storefronts",
            "href": "/v1/storefronts/fr",
            "attributes": {
                "supportedLanguageTags": [
                    "fr-FR",
                    "en-GB"
                ],
                "name": "France",
                "defaultLanguageTag": "fr-FR"
            }
        },
        {
            "id": "ga",
            "type": "storefronts",
            "href": "/v1/storefronts/ga",
            "attributes": {
                "supportedLanguageTags": [
                    "fr-FR",
                    "en-GB"
                ],
                "name": "Gabon",
                "defaultLanguageTag": "fr-FR"
            }
        },
        {
            "id": "gm",
            "type": "storefronts",
            "href": "/v1/storefronts/gm",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Gambia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ge",
            "type": "storefronts",
            "href": "/v1/storefronts/ge",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Georgia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "de",
            "type": "storefronts",
            "href": "/v1/storefronts/de",
            "attributes": {
                "supportedLanguageTags": [
                    "de-DE",
                    "en-GB"
                ],
                "name": "Germany",
                "defaultLanguageTag": "de-DE"
            }
        },
        {
            "id": "gh",
            "type": "storefronts",
            "href": "/v1/storefronts/gh",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Ghana",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "gr",
            "type": "storefronts",
            "href": "/v1/storefronts/gr",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "el"
                ],
                "name": "Greece",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "gd",
            "type": "storefronts",
            "href": "/v1/storefronts/gd",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Grenada",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "gt",
            "type": "storefronts",
            "href": "/v1/storefronts/gt",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "Guatemala",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "gw",
            "type": "storefronts",
            "href": "/v1/storefronts/gw",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Guinea-Bissau",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "gy",
            "type": "storefronts",
            "href": "/v1/storefronts/gy",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Guyana",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "hn",
            "type": "storefronts",
            "href": "/v1/storefronts/hn",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "Honduras",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "hk",
            "type": "storefronts",
            "href": "/v1/storefronts/hk",
            "attributes": {
                "supportedLanguageTags": [
                    "zh-Hant-HK",
                    "en-GB",
                    "zh-Hant-TW"
                ],
                "name": "Hong Kong",
                "defaultLanguageTag": "zh-Hant-HK"
            }
        },
        {
            "id": "hu",
            "type": "storefronts",
            "href": "/v1/storefronts/hu",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "hu"
                ],
                "name": "Hungary",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "is",
            "type": "storefronts",
            "href": "/v1/storefronts/is",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Iceland",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "in",
            "type": "storefronts",
            "href": "/v1/storefronts/in",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "hi"
                ],
                "name": "India",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "id",
            "type": "storefronts",
            "href": "/v1/storefronts/id",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "id"
                ],
                "name": "Indonesia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "iq",
            "type": "storefronts",
            "href": "/v1/storefronts/iq",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "ar"
                ],
                "name": "Iraq",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ie",
            "type": "storefronts",
            "href": "/v1/storefronts/ie",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Ireland",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "il",
            "type": "storefronts",
            "href": "/v1/storefronts/il",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "he"
                ],
                "name": "Israel",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "it",
            "type": "storefronts",
            "href": "/v1/storefronts/it",
            "attributes": {
                "supportedLanguageTags": [
                    "it",
                    "en-GB"
                ],
                "name": "Italy",
                "defaultLanguageTag": "it"
            }
        },
        {
            "id": "jm",
            "type": "storefronts",
            "href": "/v1/storefronts/jm",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Jamaica",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "jp",
            "type": "storefronts",
            "href": "/v1/storefronts/jp",
            "attributes": {
                "supportedLanguageTags": [
                    "ja",
                    "en-US"
                ],
                "name": "Japan",
                "defaultLanguageTag": "ja"
            }
        },
        {
            "id": "jo",
            "type": "storefronts",
            "href": "/v1/storefronts/jo",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "ar"
                ],
                "name": "Jordan",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "kz",
            "type": "storefronts",
            "href": "/v1/storefronts/kz",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Kazakhstan",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ke",
            "type": "storefronts",
            "href": "/v1/storefronts/ke",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Kenya",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "kr",
            "type": "storefronts",
            "href": "/v1/storefronts/kr",
            "attributes": {
                "supportedLanguageTags": [
                    "ko",
                    "en-GB"
                ],
                "name": "Korea, Republic of",
                "defaultLanguageTag": "ko"
            }
        },
        {
            "id": "xk",
            "type": "storefronts",
            "href": "/v1/storefronts/xk",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Kosovo",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "kw",
            "type": "storefronts",
            "href": "/v1/storefronts/kw",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "ar"
                ],
                "name": "Kuwait",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "kg",
            "type": "storefronts",
            "href": "/v1/storefronts/kg",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Kyrgyzstan",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "la",
            "type": "storefronts",
            "href": "/v1/storefronts/la",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Lao People's Democratic Republic",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "lv",
            "type": "storefronts",
            "href": "/v1/storefronts/lv",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Latvia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "lb",
            "type": "storefronts",
            "href": "/v1/storefronts/lb",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR",
                    "ar"
                ],
                "name": "Lebanon",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "lr",
            "type": "storefronts",
            "href": "/v1/storefronts/lr",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Liberia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ly",
            "type": "storefronts",
            "href": "/v1/storefronts/ly",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "ar"
                ],
                "name": "Libya",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "lt",
            "type": "storefronts",
            "href": "/v1/storefronts/lt",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Lithuania",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "lu",
            "type": "storefronts",
            "href": "/v1/storefronts/lu",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR",
                    "de-DE"
                ],
                "name": "Luxembourg",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "mo",
            "type": "storefronts",
            "href": "/v1/storefronts/mo",
            "attributes": {
                "supportedLanguageTags": [
                    "zh-Hant-HK",
                    "en-GB",
                    "zh-Hant-TW"
                ],
                "name": "Macao",
                "defaultLanguageTag": "zh-Hant-HK"
            }
        },
        {
            "id": "mg",
            "type": "storefronts",
            "href": "/v1/storefronts/mg",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Madagascar",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "mw",
            "type": "storefronts",
            "href": "/v1/storefronts/mw",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Malawi",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "my",
            "type": "storefronts",
            "href": "/v1/storefronts/my",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "ms"
                ],
                "name": "Malaysia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "mv",
            "type": "storefronts",
            "href": "/v1/storefronts/mv",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Maldives",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ml",
            "type": "storefronts",
            "href": "/v1/storefronts/ml",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Mali",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "mt",
            "type": "storefronts",
            "href": "/v1/storefronts/mt",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Malta",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "mr",
            "type": "storefronts",
            "href": "/v1/storefronts/mr",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR",
                    "ar"
                ],
                "name": "Mauritania",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "mu",
            "type": "storefronts",
            "href": "/v1/storefronts/mu",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Mauritius",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "mx",
            "type": "storefronts",
            "href": "/v1/storefronts/mx",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "Mexico",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "fm",
            "type": "storefronts",
            "href": "/v1/storefronts/fm",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Micronesia, Federated States of",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "md",
            "type": "storefronts",
            "href": "/v1/storefronts/md",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Moldova",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "mn",
            "type": "storefronts",
            "href": "/v1/storefronts/mn",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Mongolia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "me",
            "type": "storefronts",
            "href": "/v1/storefronts/me",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "hr"
                ],
                "name": "Montenegro",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ms",
            "type": "storefronts",
            "href": "/v1/storefronts/ms",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Montserrat",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ma",
            "type": "storefronts",
            "href": "/v1/storefronts/ma",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR",
                    "ar"
                ],
                "name": "Morocco",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "mz",
            "type": "storefronts",
            "href": "/v1/storefronts/mz",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Mozambique",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "mm",
            "type": "storefronts",
            "href": "/v1/storefronts/mm",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Myanmar",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "na",
            "type": "storefronts",
            "href": "/v1/storefronts/na",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Namibia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "nr",
            "type": "storefronts",
            "href": "/v1/storefronts/nr",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Nauru",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "np",
            "type": "storefronts",
            "href": "/v1/storefronts/np",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Nepal",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "nl",
            "type": "storefronts",
            "href": "/v1/storefronts/nl",
            "attributes": {
                "supportedLanguageTags": [
                    "nl",
                    "en-GB"
                ],
                "name": "Netherlands",
                "defaultLanguageTag": "nl"
            }
        },
        {
            "id": "nz",
            "type": "storefronts",
            "href": "/v1/storefronts/nz",
            "attributes": {
                "supportedLanguageTags": [
                    "en-AU",
                    "en-GB"
                ],
                "name": "New Zealand",
                "defaultLanguageTag": "en-AU"
            }
        },
        {
            "id": "ni",
            "type": "storefronts",
            "href": "/v1/storefronts/ni",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "Nicaragua",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "ne",
            "type": "storefronts",
            "href": "/v1/storefronts/ne",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Niger",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ng",
            "type": "storefronts",
            "href": "/v1/storefronts/ng",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Nigeria",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "mk",
            "type": "storefronts",
            "href": "/v1/storefronts/mk",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "North Macedonia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "no",
            "type": "storefronts",
            "href": "/v1/storefronts/no",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "nb"
                ],
                "name": "Norway",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "om",
            "type": "storefronts",
            "href": "/v1/storefronts/om",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "ar"
                ],
                "name": "Oman",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "pk",
            "type": "storefronts",
            "href": "/v1/storefronts/pk",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Pakistan",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "pw",
            "type": "storefronts",
            "href": "/v1/storefronts/pw",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Palau",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "pa",
            "type": "storefronts",
            "href": "/v1/storefronts/pa",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "Panama",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "pg",
            "type": "storefronts",
            "href": "/v1/storefronts/pg",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Papua New Guinea",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "py",
            "type": "storefronts",
            "href": "/v1/storefronts/py",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "Paraguay",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "pe",
            "type": "storefronts",
            "href": "/v1/storefronts/pe",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "Peru",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "ph",
            "type": "storefronts",
            "href": "/v1/storefronts/ph",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Philippines",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "pl",
            "type": "storefronts",
            "href": "/v1/storefronts/pl",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "pl"
                ],
                "name": "Poland",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "pt",
            "type": "storefronts",
            "href": "/v1/storefronts/pt",
            "attributes": {
                "supportedLanguageTags": [
                    "pt-PT",
                    "en-GB"
                ],
                "name": "Portugal",
                "defaultLanguageTag": "pt-PT"
            }
        },
        {
            "id": "qa",
            "type": "storefronts",
            "href": "/v1/storefronts/qa",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "ar"
                ],
                "name": "Qatar",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "cg",
            "type": "storefronts",
            "href": "/v1/storefronts/cg",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Republic of the Congo",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ro",
            "type": "storefronts",
            "href": "/v1/storefronts/ro",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "ro"
                ],
                "name": "Romania",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ru",
            "type": "storefronts",
            "href": "/v1/storefronts/ru",
            "attributes": {
                "supportedLanguageTags": [
                    "ru",
                    "en-GB",
                    "uk"
                ],
                "name": "Russia",
                "defaultLanguageTag": "ru"
            }
        },
        {
            "id": "rw",
            "type": "storefronts",
            "href": "/v1/storefronts/rw",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Rwanda",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "sa",
            "type": "storefronts",
            "href": "/v1/storefronts/sa",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "ar"
                ],
                "name": "Saudi Arabia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "sn",
            "type": "storefronts",
            "href": "/v1/storefronts/sn",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Senegal",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "rs",
            "type": "storefronts",
            "href": "/v1/storefronts/rs",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "hr"
                ],
                "name": "Serbia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "sc",
            "type": "storefronts",
            "href": "/v1/storefronts/sc",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Seychelles",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "sl",
            "type": "storefronts",
            "href": "/v1/storefronts/sl",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Sierra Leone",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "sg",
            "type": "storefronts",
            "href": "/v1/storefronts/sg",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "zh-Hans-CN"
                ],
                "name": "Singapore",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "sk",
            "type": "storefronts",
            "href": "/v1/storefronts/sk",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "sk"
                ],
                "name": "Slovakia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "si",
            "type": "storefronts",
            "href": "/v1/storefronts/si",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Slovenia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "sb",
            "type": "storefronts",
            "href": "/v1/storefronts/sb",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Solomon Islands",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "za",
            "type": "storefronts",
            "href": "/v1/storefronts/za",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "South Africa",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "es",
            "type": "storefronts",
            "href": "/v1/storefronts/es",
            "attributes": {
                "supportedLanguageTags": [
                    "es-ES",
                    "en-GB",
                    "ca"
                ],
                "name": "Spain",
                "defaultLanguageTag": "es-ES"
            }
        },
        {
            "id": "lk",
            "type": "storefronts",
            "href": "/v1/storefronts/lk",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Sri Lanka",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "kn",
            "type": "storefronts",
            "href": "/v1/storefronts/kn",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "St. Kitts and Nevis",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "lc",
            "type": "storefronts",
            "href": "/v1/storefronts/lc",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "St. Lucia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "vc",
            "type": "storefronts",
            "href": "/v1/storefronts/vc",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "St. Vincent and The Grenadines",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "sr",
            "type": "storefronts",
            "href": "/v1/storefronts/sr",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "nl"
                ],
                "name": "Suriname",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "se",
            "type": "storefronts",
            "href": "/v1/storefronts/se",
            "attributes": {
                "supportedLanguageTags": [
                    "sv",
                    "en-GB"
                ],
                "name": "Sweden",
                "defaultLanguageTag": "sv"
            }
        },
        {
            "id": "ch",
            "type": "storefronts",
            "href": "/v1/storefronts/ch",
            "attributes": {
                "supportedLanguageTags": [
                    "de-CH",
                    "de-DE",
                    "en-GB",
                    "fr-FR",
                    "it"
                ],
                "name": "Switzerland",
                "defaultLanguageTag": "de-CH"
            }
        },
        {
            "id": "st",
            "type": "storefronts",
            "href": "/v1/storefronts/st",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "São Tomé and Príncipe",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "tw",
            "type": "storefronts",
            "href": "/v1/storefronts/tw",
            "attributes": {
                "supportedLanguageTags": [
                    "zh-Hant-TW",
                    "en-GB"
                ],
                "name": "Taiwan",
                "defaultLanguageTag": "zh-Hant-TW"
            }
        },
        {
            "id": "tj",
            "type": "storefronts",
            "href": "/v1/storefronts/tj",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Tajikistan",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "tz",
            "type": "storefronts",
            "href": "/v1/storefronts/tz",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Tanzania",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "th",
            "type": "storefronts",
            "href": "/v1/storefronts/th",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "th"
                ],
                "name": "Thailand",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "to",
            "type": "storefronts",
            "href": "/v1/storefronts/to",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Tonga",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "tt",
            "type": "storefronts",
            "href": "/v1/storefronts/tt",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Trinidad and Tobago",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "tn",
            "type": "storefronts",
            "href": "/v1/storefronts/tn",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR",
                    "ar"
                ],
                "name": "Tunisia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "tr",
            "type": "storefronts",
            "href": "/v1/storefronts/tr",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "tr"
                ],
                "name": "Turkey",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "tm",
            "type": "storefronts",
            "href": "/v1/storefronts/tm",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Turkmenistan",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "tc",
            "type": "storefronts",
            "href": "/v1/storefronts/tc",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Turks and Caicos",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ae",
            "type": "storefronts",
            "href": "/v1/storefronts/ae",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "ar"
                ],
                "name": "UAE",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ug",
            "type": "storefronts",
            "href": "/v1/storefronts/ug",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Uganda",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ua",
            "type": "storefronts",
            "href": "/v1/storefronts/ua",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "uk",
                    "ru"
                ],
                "name": "Ukraine",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "gb",
            "type": "storefronts",
            "href": "/v1/storefronts/gb",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "United Kingdom",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "us",
            "type": "storefronts",
            "href": "/v1/storefronts/us",
            "attributes": {
                "supportedLanguageTags": [
                    "en-US",
                    "es-MX",
                    "ar",
                    "ru",
                    "zh-Hans-CN",
                    "fr-FR",
                    "ko",
                    "pt-BR",
                    "vi",
                    "zh-Hant-TW"
                ],
                "name": "United States",
                "defaultLanguageTag": "en-US"
            }
        },
        {
            "id": "uy",
            "type": "storefronts",
            "href": "/v1/storefronts/uy",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "es-MX"
                ],
                "name": "Uruguay",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "uz",
            "type": "storefronts",
            "href": "/v1/storefronts/uz",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Uzbekistan",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "vu",
            "type": "storefronts",
            "href": "/v1/storefronts/vu",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "fr-FR"
                ],
                "name": "Vanuatu",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ve",
            "type": "storefronts",
            "href": "/v1/storefronts/ve",
            "attributes": {
                "supportedLanguageTags": [
                    "es-MX",
                    "en-GB"
                ],
                "name": "Venezuela",
                "defaultLanguageTag": "es-MX"
            }
        },
        {
            "id": "vn",
            "type": "storefronts",
            "href": "/v1/storefronts/vn",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "vi"
                ],
                "name": "Vietnam",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "ye",
            "type": "storefronts",
            "href": "/v1/storefronts/ye",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB",
                    "ar"
                ],
                "name": "Yemen",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "zm",
            "type": "storefronts",
            "href": "/v1/storefronts/zm",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Zambia",
                "defaultLanguageTag": "en-GB"
            }
        },
        {
            "id": "zw",
            "type": "storefronts",
            "href": "/v1/storefronts/zw",
            "attributes": {
                "supportedLanguageTags": [
                    "en-GB"
                ],
                "name": "Zimbabwe",
                "defaultLanguageTag": "en-GB"
            }
        }
    ]
}

Here's a small script for extracting a mapping from country to supported languages:

const res = await fetch(
    'https://amp-api.apps.apple.com/v1/storefronts?platform=web&additionalPlatforms=iphone%2Cappletv%2Cipad%2Cmac%2Cwatch',
    {
        method: 'GET',
        headers: {
            authorization:
                'Bearer eyJraWQiOiJGNDdEWk4xOEYwIiwiYWxnIjoiRVMyNTYifQ.eyJpc3MiOiJBUzI4UjdHMTdNIiwiaWF0IjoxNjczOTY5ODk4LCJleHAiOjE2NzY1NjE4OTgsIm1pZCI6IklWZWVBT3ZaNGFsalM4YytqazVLTjVmV2ErQT0ifQ.q6v3eGHwYL6lAk07a2OKgjz0d9VEM_jNkbXV717GgsNewX5TY98rgPTzcDztkZ4FnXWZgSH-8HxDlxQXXUSB-w',
        },
    }
)
    .then((response) => response.json())

const allowedLanguages = res.data.reduce(
    (acc, cur) => ({ ...acc, [cur.id.toUpperCase()]: cur.attributes.supportedLanguageTags }),
    {}
);
console.log(JSON.stringify(allowedLanguages, null, 2));

Doesn't work in the browser because the API has restrictive CORS headers. Result:

{
  "AF": [
    "en-GB"
  ],
  "AL": [
    "en-GB"
  ],
  "DZ": [
    "en-GB",
    "fr-FR",
    "ar"
  ],
  "AO": [
    "en-GB"
  ],
  "AI": [
    "en-GB"
  ],
  "AG": [
    "en-GB"
  ],
  "AR": [
    "es-MX",
    "en-GB"
  ],
  "AM": [
    "en-GB"
  ],
  "AU": [
    "en-AU",
    "en-GB"
  ],
  "AT": [
    "de-DE",
    "en-GB"
  ],
  "AZ": [
    "en-GB"
  ],
  "BS": [
    "en-GB"
  ],
  "BH": [
    "en-GB",
    "ar"
  ],
  "BB": [
    "en-GB"
  ],
  "BY": [
    "en-GB"
  ],
  "BE": [
    "en-GB",
    "fr-FR",
    "nl"
  ],
  "BZ": [
    "en-GB",
    "es-MX"
  ],
  "BJ": [
    "en-GB",
    "fr-FR"
  ],
  "BM": [
    "en-GB"
  ],
  "BT": [
    "en-GB"
  ],
  "BO": [
    "es-MX",
    "en-GB"
  ],
  "BA": [
    "en-GB",
    "hr"
  ],
  "BW": [
    "en-GB"
  ],
  "BR": [
    "pt-BR",
    "en-GB"
  ],
  "VG": [
    "en-GB"
  ],
  "BN": [
    "en-GB"
  ],
  "BG": [
    "en-GB"
  ],
  "BF": [
    "en-GB",
    "fr-FR"
  ],
  "KH": [
    "en-GB",
    "fr-FR"
  ],
  "CM": [
    "fr-FR",
    "en-GB"
  ],
  "CA": [
    "en-CA",
    "fr-CA"
  ],
  "CV": [
    "en-GB"
  ],
  "KY": [
    "en-GB"
  ],
  "TD": [
    "en-GB",
    "fr-FR"
  ],
  "CL": [
    "es-MX",
    "en-GB"
  ],
  "CN": [
    "zh-Hans-CN",
    "en-GB"
  ],
  "CO": [
    "es-MX",
    "en-GB"
  ],
  "CR": [
    "es-MX",
    "en-GB"
  ],
  "HR": [
    "en-GB",
    "hr"
  ],
  "CY": [
    "en-GB",
    "el",
    "tr"
  ],
  "CZ": [
    "en-GB",
    "cs"
  ],
  "CI": [
    "fr-FR",
    "en-GB"
  ],
  "CD": [
    "en-GB",
    "fr-FR"
  ],
  "DK": [
    "en-GB",
    "da"
  ],
  "DM": [
    "en-GB"
  ],
  "DO": [
    "es-MX",
    "en-GB"
  ],
  "EC": [
    "es-MX",
    "en-GB"
  ],
  "EG": [
    "en-GB",
    "fr-FR",
    "ar"
  ],
  "SV": [
    "es-MX",
    "en-GB"
  ],
  "EE": [
    "en-GB"
  ],
  "SZ": [
    "en-GB"
  ],
  "FJ": [
    "en-GB"
  ],
  "FI": [
    "en-GB",
    "fi"
  ],
  "FR": [
    "fr-FR",
    "en-GB"
  ],
  "GA": [
    "fr-FR",
    "en-GB"
  ],
  "GM": [
    "en-GB"
  ],
  "GE": [
    "en-GB"
  ],
  "DE": [
    "de-DE",
    "en-GB"
  ],
  "GH": [
    "en-GB"
  ],
  "GR": [
    "en-GB",
    "el"
  ],
  "GD": [
    "en-GB"
  ],
  "GT": [
    "es-MX",
    "en-GB"
  ],
  "GW": [
    "en-GB",
    "fr-FR"
  ],
  "GY": [
    "en-GB",
    "fr-FR"
  ],
  "HN": [
    "es-MX",
    "en-GB"
  ],
  "HK": [
    "zh-Hant-HK",
    "en-GB",
    "zh-Hant-TW"
  ],
  "HU": [
    "en-GB",
    "hu"
  ],
  "IS": [
    "en-GB"
  ],
  "IN": [
    "en-GB",
    "hi"
  ],
  "ID": [
    "en-GB",
    "id"
  ],
  "IQ": [
    "en-GB",
    "ar"
  ],
  "IE": [
    "en-GB"
  ],
  "IL": [
    "en-GB",
    "he"
  ],
  "IT": [
    "it",
    "en-GB"
  ],
  "JM": [
    "en-GB"
  ],
  "JP": [
    "ja",
    "en-US"
  ],
  "JO": [
    "en-GB",
    "ar"
  ],
  "KZ": [
    "en-GB"
  ],
  "KE": [
    "en-GB"
  ],
  "KR": [
    "ko",
    "en-GB"
  ],
  "XK": [
    "en-GB"
  ],
  "KW": [
    "en-GB",
    "ar"
  ],
  "KG": [
    "en-GB"
  ],
  "LA": [
    "en-GB",
    "fr-FR"
  ],
  "LV": [
    "en-GB"
  ],
  "LB": [
    "en-GB",
    "fr-FR",
    "ar"
  ],
  "LR": [
    "en-GB"
  ],
  "LY": [
    "en-GB",
    "ar"
  ],
  "LT": [
    "en-GB"
  ],
  "LU": [
    "en-GB",
    "fr-FR",
    "de-DE"
  ],
  "MO": [
    "zh-Hant-HK",
    "en-GB",
    "zh-Hant-TW"
  ],
  "MG": [
    "en-GB",
    "fr-FR"
  ],
  "MW": [
    "en-GB"
  ],
  "MY": [
    "en-GB",
    "ms"
  ],
  "MV": [
    "en-GB"
  ],
  "ML": [
    "en-GB",
    "fr-FR"
  ],
  "MT": [
    "en-GB"
  ],
  "MR": [
    "en-GB",
    "fr-FR",
    "ar"
  ],
  "MU": [
    "en-GB",
    "fr-FR"
  ],
  "MX": [
    "es-MX",
    "en-GB"
  ],
  "FM": [
    "en-GB"
  ],
  "MD": [
    "en-GB"
  ],
  "MN": [
    "en-GB"
  ],
  "ME": [
    "en-GB",
    "hr"
  ],
  "MS": [
    "en-GB"
  ],
  "MA": [
    "en-GB",
    "fr-FR",
    "ar"
  ],
  "MZ": [
    "en-GB"
  ],
  "MM": [
    "en-GB"
  ],
  "NA": [
    "en-GB"
  ],
  "NR": [
    "en-GB"
  ],
  "NP": [
    "en-GB"
  ],
  "NL": [
    "nl",
    "en-GB"
  ],
  "NZ": [
    "en-AU",
    "en-GB"
  ],
  "NI": [
    "es-MX",
    "en-GB"
  ],
  "NE": [
    "en-GB",
    "fr-FR"
  ],
  "NG": [
    "en-GB"
  ],
  "MK": [
    "en-GB"
  ],
  "NO": [
    "en-GB",
    "nb"
  ],
  "OM": [
    "en-GB",
    "ar"
  ],
  "PK": [
    "en-GB"
  ],
  "PW": [
    "en-GB"
  ],
  "PA": [
    "es-MX",
    "en-GB"
  ],
  "PG": [
    "en-GB"
  ],
  "PY": [
    "es-MX",
    "en-GB"
  ],
  "PE": [
    "es-MX",
    "en-GB"
  ],
  "PH": [
    "en-GB"
  ],
  "PL": [
    "en-GB",
    "pl"
  ],
  "PT": [
    "pt-PT",
    "en-GB"
  ],
  "QA": [
    "en-GB",
    "ar"
  ],
  "CG": [
    "en-GB",
    "fr-FR"
  ],
  "RO": [
    "en-GB",
    "ro"
  ],
  "RU": [
    "ru",
    "en-GB",
    "uk"
  ],
  "RW": [
    "en-GB",
    "fr-FR"
  ],
  "SA": [
    "en-GB",
    "ar"
  ],
  "SN": [
    "en-GB",
    "fr-FR"
  ],
  "RS": [
    "en-GB",
    "hr"
  ],
  "SC": [
    "en-GB",
    "fr-FR"
  ],
  "SL": [
    "en-GB"
  ],
  "SG": [
    "en-GB",
    "zh-Hans-CN"
  ],
  "SK": [
    "en-GB",
    "sk"
  ],
  "SI": [
    "en-GB"
  ],
  "SB": [
    "en-GB"
  ],
  "ZA": [
    "en-GB"
  ],
  "ES": [
    "es-ES",
    "en-GB",
    "ca"
  ],
  "LK": [
    "en-GB"
  ],
  "KN": [
    "en-GB"
  ],
  "LC": [
    "en-GB"
  ],
  "VC": [
    "en-GB"
  ],
  "SR": [
    "en-GB",
    "nl"
  ],
  "SE": [
    "sv",
    "en-GB"
  ],
  "CH": [
    "de-CH",
    "de-DE",
    "en-GB",
    "fr-FR",
    "it"
  ],
  "ST": [
    "en-GB"
  ],
  "TW": [
    "zh-Hant-TW",
    "en-GB"
  ],
  "TJ": [
    "en-GB"
  ],
  "TZ": [
    "en-GB"
  ],
  "TH": [
    "en-GB",
    "th"
  ],
  "TO": [
    "en-GB"
  ],
  "TT": [
    "en-GB",
    "fr-FR"
  ],
  "TN": [
    "en-GB",
    "fr-FR",
    "ar"
  ],
  "TR": [
    "en-GB",
    "tr"
  ],
  "TM": [
    "en-GB"
  ],
  "TC": [
    "en-GB"
  ],
  "AE": [
    "en-GB",
    "ar"
  ],
  "UG": [
    "en-GB"
  ],
  "UA": [
    "en-GB",
    "uk",
    "ru"
  ],
  "GB": [
    "en-GB"
  ],
  "US": [
    "en-US",
    "es-MX",
    "ar",
    "ru",
    "zh-Hans-CN",
    "fr-FR",
    "ko",
    "pt-BR",
    "vi",
    "zh-Hant-TW"
  ],
  "UY": [
    "en-GB",
    "es-MX"
  ],
  "UZ": [
    "en-GB"
  ],
  "VU": [
    "en-GB",
    "fr-FR"
  ],
  "VE": [
    "es-MX",
    "en-GB"
  ],
  "VN": [
    "en-GB",
    "vi"
  ],
  "YE": [
    "en-GB",
    "ar"
  ],
  "ZM": [
    "en-GB"
  ],
  "ZW": [
    "en-GB"
  ]
}
baltpeter commented 1 year ago

Next up, we want to figure out the fields, extend, and include parameters. Clearly, the influence what information is included in the response. At least at first glance, it seems like they all accept the same values but maybe they behave differently?

Maybe the API reference for the App Store Connect API is helpful. That API seems very similar. According to that:

That doesn't tell us too much. But it gives us a list of values to try. And notably, all possible values for include are also possible for fields but not the other way around:

const fields = "appClips, appCustomProductPages, appEvents, appInfos, appStoreVersions, availableInNewTerritories, availableTerritories, betaAppLocalizations, betaAppReviewDetail, betaGroups, betaLicenseAgreement, betaTesters, builds, bundleId, ciProduct, contentRightsDeclaration, customerReviews, endUserLicenseAgreement, gameCenterEnabledVersions, inAppPurchases, inAppPurchasesV2, isOrEverWasMadeForKids, name, perfPowerMetrics, preOrder, preReleaseVersions, pricePoints, prices, primaryLocale, promotedPurchases, reviewSubmissions, sku, subscriptionGracePeriod, subscriptionGroups, subscriptionStatusUrl, subscriptionStatusUrlForSandbox, subscriptionStatusUrlVersion, subscriptionStatusUrlVersionForSandbox".split(', ');
const include = "appClips, appCustomProductPages, appEvents, appInfos, appStoreVersions, availableTerritories, betaAppLocalizations, betaAppReviewDetail, betaGroups, betaLicenseAgreement, builds, ciProduct, endUserLicenseAgreement, gameCenterEnabledVersions, inAppPurchases, inAppPurchasesV2, preOrder, preReleaseVersions, prices, promotedPurchases, reviewSubmissions, subscriptionGracePeriod, subscriptionGroups".split(', ');

const includeNotInFields = include.filter(v => !fields.includes(v));
// []
const fieldsNotInInclude = fields.filter(v => !include.includes(v));
// [ "availableInNewTerritories", "betaTesters", "bundleId", "contentRightsDeclaration", "customerReviews", "isOrEverWasMadeForKids", "name", "perfPowerMetrics", "pricePoints", "primaryLocale", "sku", "subscriptionStatusUrl", "subscriptionStatusUrlForSandbox", "subscriptionStatusUrlVersion", "subscriptionStatusUrlVersionForSandbox" ]
baltpeter commented 1 year ago

OK, from playing around a little, the API description is actually helpful after all (but the listed values aren't?). Here's a very minimal API response (https://amp-api.apps.apple.com/v1/catalog/DE/apps/284882215?platform=web&additionalPlatforms=iphone,appletv,ipad,mac,watch&l=en-GB&fields=artistName):

{
    "data": [
        {
            "id": "284882215",
            "type": "apps",
            "href": "/v1/catalog/de/apps/284882215?l=en-GB",
            "attributes": {
                "artistName": "Meta Platforms, Inc."
            },
            "relationships": {
                "genres": {
                    "href": "/v1/catalog/de/apps/284882215/genres?l=en-GB",
                    "data": [
                        {
                            "id": "6005",
                            "type": "genres",
                            "href": "/v1/catalog/de/genres/6005?l=en-GB"
                        }
                    ]
                },
                "developer": {
                    "href": "/v1/catalog/de/apps/284882215/developer?l=en-GB",
                    "data": [
                        {
                            "id": "284882218",
                            "type": "developers",
                            "href": "/v1/catalog/de/developers/284882218?l=en-GB"
                        }
                    ]
                }
            }
        }
    ]
}

The response (more correctly, each returned result in data, but since we're requesting the data for a single app, there is only ever one result) has two sections: attributes and relationships.

These do what their names imply: attributes can include all kinds of metadata (like the developer name in this case), and relationships has links to other entities in the API that are somehow related to the respective app (like its genres and developer in this case).

And importantly, we use fields to specify which attributes we want and include to specify which relationships we want.

baltpeter commented 1 year ago

And I'm pretty sure I've figured out extend as well:

Combining fields and extend seems to ignore what you specified in extend and only returns the attributes specified in fields. Curiously, when requesting an app's privacy labels, the iOS App Store sets:

extend:              customArtwork
fields:              privacyDetails,artistName,privacyPolicyUrl

I don't know why they use that extends parameter. The response doesn't contain the customArtwork data. shrug

Anyway, that doesn't really matter for our purposes. We'll just only use fields and have the user explicitly request the attributes they want.

baltpeter commented 1 year ago

OK, what values can we provide for fields and include?

I have found these values for fields and confirmed them to work:

Additionally, I found found these fields values but haven't been able to confirm they actually work:


And these are the include values I have found and confirmed to work:

baltpeter commented 1 year ago

Going back to the platform parameter: That seems to mostly (only?) influence what's included in $.data[0].attributes.platformAttributes.

For example, if we request https://amp-api.apps.apple.com/v1/catalog/DE/apps/284882215?platform=web&additionalPlatforms=iphone,appletv,ipad,mac,watch&l=en-GB&fields=externalVersionId,isAppleWatchSupported, the platformAttributes are:

{
    "appletvos": {
        "externalVersionId": 850317086,
        "isAppleWatchSupported": false
    },
    "ios": {
        "externalVersionId": 854345153,
        "isAppleWatchSupported": false
    }
}

But if we remove appletv (https://amp-api.apps.apple.com/v1/catalog/DE/apps/284882215?platform=web&additionalPlatforms=iphone,ipad,mac,watch&l=en-GB&fields=externalVersionId,isAppleWatchSupported):

{
    "ios": {
        "externalVersionId": 854345153,
        "isAppleWatchSupported": false
    }
}

Annoyingly, the request parameters aren't the same as the response fields. -.-

From what I can tell, this is the mapping (request -> response):

From some very limited testing, it doesn't seem to matter whether you specify iphone, ipad or watch. If I take an iPad-only app and use iphone or watch as the platform, I get the same platformAttributes as with ipad.

baltpeter commented 1 year ago

Just for reference, there are also other endpoints for fetching app details. I am aware of at least the two following ones.

Most prominently, there is the iTunes Search API, which is already well documented by Apple themselves and actually meant for public consumption. It doesn't support fetching privacy labels as far as I know.


In addition, the internal API of App Store Marketing Tools can also be used to search for apps and fetch some details about them.

Request for searching:

curl --request GET \
  --url 'https://tools.applemediaservices.com/api/apple-media/apps/US/search.json?types=apps%2Capp-bundles&term=facebook&limit=1&l=en-US&platform=iphone&additionalPlatforms=iphone%2Cmac%2Cappletv%2Cipad%2Cwatch%2Cweb'

Response:

{
    "apps": {
        "href": "/v1/catalog/us/search?bubble%5Bapps%5D=apps&l=en-US&term=facebook",
        "data": [
            {
                "id": "284882215",
                "type": "apps",
                "href": "/v1/catalog/us/apps/284882215",
                "attributes": {
                    "supportsArcade": false,
                    "familyShareEnabledDate": "0001-04-23T00:00:00Z",
                    "isFirstPartyHideableApp": false,
                    "contentRatingsBySystem": {
                        "appsApple": {
                            "name": "12+",
                            "value": 300,
                            "rank": 3,
                            "advisories": [
                                "Infrequent/Mild Sexual Content and Nudity",
                                "Infrequent/Mild Profanity or Crude Humor",
                                "Infrequent/Mild Mature/Suggestive Themes",
                                "Infrequent/Mild Alcohol, Tobacco, or Drug Use or References"
                            ]
                        }
                    },
                    "deviceFamilies": [
                        "tvos",
                        "iphone",
                        "ipad",
                        "ipod"
                    ],
                    "chartPositions": {
                        "appStore": {
                            "position": 2,
                            "genreName": "Social Networking",
                            "genre": 6005,
                            "chart": "top-free",
                            "chartLink": "https://apps.apple.com/us/charts/iphone/social-networking-apps/6005"
                        }
                    },
                    "usesLocationBackgroundMode": false,
                    "url": "https://apps.apple.com/us/app/facebook/id284882215",
                    "userRating": {
                        "value": 2.3,
                        "ratingCount": 1357931,
                        "ratingCountList": [
                            798646,
                            77291,
                            74322,
                            84994,
                            322678
                        ],
                        "ariaLabelForRatings": "2.3 stars"
                    },
                    "genreDisplayName": "Social Networking",
                    "name": "Facebook",
                    "isPreorder": false,
                    "isIOSBinaryMacOSCompatible": false,
                    "artistName": "Meta Platforms, Inc.",
                    "reviewsRestricted": false,
                    "sellerLabel": "Seller",
                    "hasEula": true,
                    "platformAttributes": {
                        "appletvos": {
                            "seller": "Meta Platforms, Inc.",
                            "copyright": "© 2022 Meta",
                            "minimumMacOSVersion": "11.0",
                            "isStandaloneWithCompanionForWatchOS": false,
                            "isAppleWatchSupported": false,
                            "is32bitOnly": false,
                            "hasSafariExtension": false,
                            "languageList": [
                                "English",
                                "Czech",
                                "Danish",
                                "Dutch",
                                "Finnish",
                                "French",
                                "German",
                                "Greek",
                                "Hindi",
                                "Hungarian",
                                "Indonesian",
                                "Italian",
                                "Japanese",
                                "Korean",
                                "Malay",
                                "Norwegian Bokmål",
                                "Polish",
                                "Portuguese",
                                "Romanian",
                                "Russian",
                                "Simplified Chinese",
                                "Spanish",
                                "Swedish",
                                "Thai",
                                "Traditional Chinese",
                                "Turkish",
                                "Vietnamese"
                            ],
                            "requiresGameController": false,
                            "requiredCapabilities": "arm64 ",
                            "offers": [
                                {
                                    "buyParams": "productType=C&price=0&salableAdamId=284882215&pricingParameters=STDQ&pg=default&appExtVrsId=850317086",
                                    "type": "get",
                                    "priceFormatted": "$0.00",
                                    "price": 0.0,
                                    "currencyCode": "USD",
                                    "assets": [
                                        {
                                            "flavor": "iosSoftware",
                                            "size": 44467200
                                        }
                                    ]
                                },
                                {
                                    "buyParams": "productType=C&price=0&salableAdamId=284882215&pricingParameters=SWUPD&pg=default&appExtVrsId=850317086",
                                    "type": "update",
                                    "priceFormatted": "$0.00",
                                    "price": 0.0,
                                    "currencyCode": "USD",
                                    "assets": [
                                        {
                                            "flavor": "iosSoftware",
                                            "size": 44467200
                                        }
                                    ]
                                }
                            ],
                            "requires32bit": false,
                            "supportedLocales": [
                                {
                                    "name": "English",
                                    "tag": "en-US"
                                },
                                {
                                    "name": "Czech",
                                    "tag": "cs"
                                },
                                {
                                    "name": "Danish",
                                    "tag": "da"
                                },
                                {
                                    "name": "Dutch",
                                    "tag": "nl"
                                },
                                {
                                    "name": "Finnish",
                                    "tag": "fi"
                                },
                                {
                                    "name": "French",
                                    "tag": "fr-FR"
                                },
                                {
                                    "name": "German",
                                    "tag": "de-DE"
                                },
                                {
                                    "name": "Greek",
                                    "tag": "el"
                                },
                                {
                                    "name": "Hindi",
                                    "tag": "hi"
                                },
                                {
                                    "name": "Hungarian",
                                    "tag": "hu"
                                },
                                {
                                    "name": "Indonesian",
                                    "tag": "id"
                                },
                                {
                                    "name": "Italian",
                                    "tag": "it"
                                },
                                {
                                    "name": "Japanese",
                                    "tag": "ja"
                                },
                                {
                                    "name": "Korean",
                                    "tag": "ko"
                                },
                                {
                                    "name": "Malay",
                                    "tag": "ms"
                                },
                                {
                                    "name": "Norwegian Bokmål",
                                    "tag": "nb"
                                },
                                {
                                    "name": "Polish",
                                    "tag": "pl"
                                },
                                {
                                    "name": "Portuguese",
                                    "tag": "pt-PT"
                                },
                                {
                                    "name": "Romanian",
                                    "tag": "ro"
                                },
                                {
                                    "name": "Russian",
                                    "tag": "ru"
                                },
                                {
                                    "name": "Simplified Chinese",
                                    "tag": "zh-Hans-CN"
                                },
                                {
                                    "name": "Spanish",
                                    "tag": "es-ES"
                                },
                                {
                                    "name": "Swedish",
                                    "tag": "sv"
                                },
                                {
                                    "name": "Thai",
                                    "tag": "th"
                                },
                                {
                                    "name": "Traditional Chinese",
                                    "tag": "zh-Hant-HK"
                                },
                                {
                                    "name": "Turkish",
                                    "tag": "tr"
                                },
                                {
                                    "name": "Vietnamese",
                                    "tag": "vi"
                                }
                            ],
                            "isGameCenterEnabled": false,
                            "isSiriSupported": false,
                            "releaseDate": "2019-02-05",
                            "minimumOSVersion": "13.0",
                            "hasInAppPurchases": true,
                            "bundleId": "com.facebook.Facebook",
                            "hasMessagesExtension": false,
                            "supportsGameController": false,
                            "artwork": {
                                "width": 1280,
                                "height": 768,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/b9/26/84/b92684e5-8b03-497e-c310-0e33638f1f15/App_Icon_-_Small-marketing.lsr/{w}x{h}{c}.{f}",
                                "bgColor": "0155c1",
                                "textColor1": "fdfbf8",
                                "textColor2": "aaccf9",
                                "textColor3": "cadaed",
                                "textColor4": "88b4ee"
                            },
                            "hasFamilyShareableInAppPurchases": false,
                            "isHiddenFromSpringboard": false,
                            "isStandaloneForWatchOS": false,
                            "isDeliveredInIOSAppForWatchOS": false,
                            "hasPrivacyPolicyText": true,
                            "editorialArtwork": {
                                "originalFlowcaseBrick": {
                                    "width": 3200,
                                    "height": 600,
                                    "url": "https://is1-ssl.mzstatic.com/image/thumb/Features5/v4/c8/ed/1f/c8ed1f60-2d29-efbd-ea9f-5c8e0d6dde47/source/{w}x{h}{c}.{f}",
                                    "bgColor": "ffffff",
                                    "textColor1": "1a2743",
                                    "textColor2": "451937",
                                    "textColor3": "475269",
                                    "textColor4": "6a475f"
                                },
                                "storeFlowcase": {
                                    "width": 4320,
                                    "height": 1080,
                                    "url": "https://is1-ssl.mzstatic.com/image/thumb/Features118/v4/87/b3/cf/87b3cf1b-1d41-d685-ba94-6aa23a502614/source/{w}x{h}{c}.{f}",
                                    "bgColor": "ffffff",
                                    "textColor1": "010303",
                                    "textColor2": "1a2844",
                                    "textColor3": "343535",
                                    "textColor4": "485369"
                                },
                                "fullscreenBackground": {
                                    "width": 4320,
                                    "height": 2160,
                                    "url": "https://is1-ssl.mzstatic.com/image/thumb/Features124/v4/e2/e5/af/e2e5af56-290d-97be-c087-2b3b4a284a83/source/{w}x{h}{c}.{f}",
                                    "bgColor": "2b4b8d",
                                    "textColor1": "d6def1",
                                    "textColor2": "dbd0a2",
                                    "textColor3": "b4c1dd",
                                    "textColor4": "b8b69e"
                                },
                                "contentLogo": {
                                    "width": 2400,
                                    "height": 390,
                                    "url": "https://is1-ssl.mzstatic.com/image/thumb/Features114/v4/ba/c9/28/bac928f0-b92d-d455-b6ad-3735bb4e9691/source/{w}x{h}{c}.{f}",
                                    "bgColor": "000000",
                                    "textColor1": "ffffff",
                                    "textColor2": "d5d5d5",
                                    "textColor3": "cbcbcb",
                                    "textColor4": "aaaaaa"
                                },
                                "brandLogo": {
                                    "width": 1080,
                                    "height": 1080,
                                    "url": "https://is4-ssl.mzstatic.com/image/thumb/Features116/v4/37/1e/f0/371ef0b1-ce56-e476-1355-a92b5808bf5a/source/{w}x{h}{c}.{f}",
                                    "bgColor": "000000",
                                    "textColor1": "f2f2f2",
                                    "textColor2": "e5e5e5",
                                    "textColor3": "c1c1c1",
                                    "textColor4": "b7b7b7"
                                },
                                "contentLogoTrimmed": {
                                    "width": 2115,
                                    "height": 386,
                                    "url": "https://is3-ssl.mzstatic.com/image/thumb/Features113/v4/bc/12/95/bc129552-eac9-a790-26dd-e3f3b1897bc1/source/{w}x{h}{c}.{f}",
                                    "bgColor": "000000",
                                    "textColor1": "ffffff",
                                    "textColor2": "d6d6d6",
                                    "textColor3": "cbcbcb",
                                    "textColor4": "ababab"
                                }
                            },
                            "supportsPassbook": false,
                            "requirementsString": "Requires tvOS 13.0 or later.",
                            "externalVersionId": 850317086
                        },
                        "ios": {
                            "seller": "Meta Platforms, Inc.",
                            "copyright": "© 2022 Meta",
                            "minimumMacOSVersion": "11.0",
                            "isStandaloneWithCompanionForWatchOS": false,
                            "isAppleWatchSupported": false,
                            "is32bitOnly": false,
                            "hasSafariExtension": false,
                            "languageList": [
                                "English",
                                "Arabic",
                                "Croatian",
                                "Czech",
                                "Danish",
                                "Dutch",
                                "Finnish",
                                "French",
                                "German",
                                "Greek",
                                "Hebrew",
                                "Hindi",
                                "Hungarian",
                                "Indonesian",
                                "Italian",
                                "Japanese",
                                "Korean",
                                "Malay",
                                "Norwegian Bokmål",
                                "Polish",
                                "Portuguese",
                                "Romanian",
                                "Russian",
                                "Simplified Chinese",
                                "Slovak",
                                "Spanish",
                                "Swedish",
                                "Thai",
                                "Traditional Chinese",
                                "Turkish",
                                "Ukrainian",
                                "Vietnamese"
                            ],
                            "requiresGameController": false,
                            "requiredCapabilities": "arm64 ",
                            "offers": [
                                {
                                    "buyParams": "productType=C&price=0&salableAdamId=284882215&pricingParameters=STDQ&pg=default&appExtVrsId=854345153",
                                    "type": "get",
                                    "priceFormatted": "$0.00",
                                    "price": 0.0,
                                    "currencyCode": "USD",
                                    "assets": [
                                        {
                                            "flavor": "iosSoftware",
                                            "size": 314289152
                                        }
                                    ]
                                },
                                {
                                    "buyParams": "productType=C&price=0&salableAdamId=284882215&pricingParameters=SWUPD&pg=default&appExtVrsId=854345153",
                                    "type": "update",
                                    "priceFormatted": "$0.00",
                                    "price": 0.0,
                                    "currencyCode": "USD",
                                    "assets": [
                                        {
                                            "flavor": "iosSoftware",
                                            "size": 314289152
                                        }
                                    ]
                                }
                            ],
                            "requires32bit": false,
                            "supportedLocales": [
                                {
                                    "name": "English",
                                    "tag": "en-US"
                                },
                                {
                                    "name": "Arabic",
                                    "tag": "ar"
                                },
                                {
                                    "name": "Croatian",
                                    "tag": "hr"
                                },
                                {
                                    "name": "Czech",
                                    "tag": "cs"
                                },
                                {
                                    "name": "Danish",
                                    "tag": "da"
                                },
                                {
                                    "name": "Dutch",
                                    "tag": "nl"
                                },
                                {
                                    "name": "Finnish",
                                    "tag": "fi"
                                },
                                {
                                    "name": "French",
                                    "tag": "fr-FR"
                                },
                                {
                                    "name": "German",
                                    "tag": "de-DE"
                                },
                                {
                                    "name": "Greek",
                                    "tag": "el"
                                },
                                {
                                    "name": "Hebrew",
                                    "tag": "he"
                                },
                                {
                                    "name": "Hindi",
                                    "tag": "hi"
                                },
                                {
                                    "name": "Hungarian",
                                    "tag": "hu"
                                },
                                {
                                    "name": "Indonesian",
                                    "tag": "id"
                                },
                                {
                                    "name": "Italian",
                                    "tag": "it"
                                },
                                {
                                    "name": "Japanese",
                                    "tag": "ja"
                                },
                                {
                                    "name": "Korean",
                                    "tag": "ko"
                                },
                                {
                                    "name": "Malay",
                                    "tag": "ms"
                                },
                                {
                                    "name": "Norwegian Bokmål",
                                    "tag": "nb"
                                },
                                {
                                    "name": "Polish",
                                    "tag": "pl"
                                },
                                {
                                    "name": "Portuguese",
                                    "tag": "pt-PT"
                                },
                                {
                                    "name": "Romanian",
                                    "tag": "ro"
                                },
                                {
                                    "name": "Russian",
                                    "tag": "ru"
                                },
                                {
                                    "name": "Simplified Chinese",
                                    "tag": "zh-Hans-CN"
                                },
                                {
                                    "name": "Slovak",
                                    "tag": "sk"
                                },
                                {
                                    "name": "Spanish",
                                    "tag": "es-ES"
                                },
                                {
                                    "name": "Swedish",
                                    "tag": "sv"
                                },
                                {
                                    "name": "Thai",
                                    "tag": "th"
                                },
                                {
                                    "name": "Traditional Chinese",
                                    "tag": "zh-Hant-HK"
                                },
                                {
                                    "name": "Turkish",
                                    "tag": "tr"
                                },
                                {
                                    "name": "Ukrainian",
                                    "tag": "uk"
                                },
                                {
                                    "name": "Vietnamese",
                                    "tag": "vi"
                                }
                            ],
                            "isGameCenterEnabled": false,
                            "isSiriSupported": true,
                            "releaseDate": "2019-02-05",
                            "minimumOSVersion": "13.4",
                            "hasInAppPurchases": true,
                            "bundleId": "com.facebook.Facebook",
                            "hasMessagesExtension": false,
                            "supportsGameController": false,
                            "artwork": {
                                "width": 1024,
                                "height": 1024,
                                "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple113/v4/45/ab/be/45abbeac-3a7e-aa86-c1c5-007c09df6d7c/Icon-Production-0-1x_U007emarketing-0-7-0-85-220.png/{w}x{h}{c}.{f}",
                                "bgColor": "18aeff",
                                "textColor1": "141516",
                                "textColor2": "161616",
                                "textColor3": "153445",
                                "textColor4": "173545"
                            },
                            "hasFamilyShareableInAppPurchases": false,
                            "isHiddenFromSpringboard": false,
                            "isStandaloneForWatchOS": false,
                            "isDeliveredInIOSAppForWatchOS": false,
                            "hasPrivacyPolicyText": true,
                            "editorialArtwork": {
                                "originalFlowcaseBrick": {
                                    "width": 3200,
                                    "height": 600,
                                    "url": "https://is1-ssl.mzstatic.com/image/thumb/Features5/v4/c8/ed/1f/c8ed1f60-2d29-efbd-ea9f-5c8e0d6dde47/source/{w}x{h}{c}.{f}",
                                    "bgColor": "ffffff",
                                    "textColor1": "1a2743",
                                    "textColor2": "451937",
                                    "textColor3": "475269",
                                    "textColor4": "6a475f"
                                },
                                "storeFlowcase": {
                                    "width": 4320,
                                    "height": 1080,
                                    "url": "https://is1-ssl.mzstatic.com/image/thumb/Features118/v4/87/b3/cf/87b3cf1b-1d41-d685-ba94-6aa23a502614/source/{w}x{h}{c}.{f}",
                                    "bgColor": "ffffff",
                                    "textColor1": "010303",
                                    "textColor2": "1a2844",
                                    "textColor3": "343535",
                                    "textColor4": "485369"
                                },
                                "fullscreenBackground": {
                                    "width": 4320,
                                    "height": 2160,
                                    "url": "https://is1-ssl.mzstatic.com/image/thumb/Features124/v4/e2/e5/af/e2e5af56-290d-97be-c087-2b3b4a284a83/source/{w}x{h}{c}.{f}",
                                    "bgColor": "2b4b8d",
                                    "textColor1": "d6def1",
                                    "textColor2": "dbd0a2",
                                    "textColor3": "b4c1dd",
                                    "textColor4": "b8b69e"
                                },
                                "contentLogo": {
                                    "width": 2400,
                                    "height": 390,
                                    "url": "https://is1-ssl.mzstatic.com/image/thumb/Features114/v4/ba/c9/28/bac928f0-b92d-d455-b6ad-3735bb4e9691/source/{w}x{h}{c}.{f}",
                                    "bgColor": "000000",
                                    "textColor1": "ffffff",
                                    "textColor2": "d5d5d5",
                                    "textColor3": "cbcbcb",
                                    "textColor4": "aaaaaa"
                                },
                                "brandLogo": {
                                    "width": 1080,
                                    "height": 1080,
                                    "url": "https://is4-ssl.mzstatic.com/image/thumb/Features116/v4/37/1e/f0/371ef0b1-ce56-e476-1355-a92b5808bf5a/source/{w}x{h}{c}.{f}",
                                    "bgColor": "000000",
                                    "textColor1": "f2f2f2",
                                    "textColor2": "e5e5e5",
                                    "textColor3": "c1c1c1",
                                    "textColor4": "b7b7b7"
                                },
                                "contentLogoTrimmed": {
                                    "width": 2115,
                                    "height": 386,
                                    "url": "https://is3-ssl.mzstatic.com/image/thumb/Features113/v4/bc/12/95/bc129552-eac9-a790-26dd-e3f3b1897bc1/source/{w}x{h}{c}.{f}",
                                    "bgColor": "000000",
                                    "textColor1": "ffffff",
                                    "textColor2": "d6d6d6",
                                    "textColor3": "cbcbcb",
                                    "textColor4": "ababab"
                                }
                            },
                            "supportsPassbook": false,
                            "requirementsString": "Requires iOS 13.4 or later. Compatible with iPhone, iPad, and iPod touch.",
                            "externalVersionId": 854345153
                        }
                    }
                },
                "relationships": {
                    "developer": {
                        "href": "/v1/catalog/us/apps/284882215/developer",
                        "data": [
                            {
                                "id": "284882218",
                                "type": "developers",
                                "href": "/v1/catalog/us/developers/284882218"
                            }
                        ]
                    },
                    "genres": {
                        "href": "/v1/catalog/us/apps/284882215/genres",
                        "data": [
                            {
                                "id": "6005",
                                "type": "genres",
                                "href": "/v1/catalog/us/genres/6005",
                                "attributes": {
                                    "parentName": "App Store",
                                    "name": "Social Networking",
                                    "url": "https://itunes.apple.com/us/genre/id6005",
                                    "parentId": "36"
                                }
                            }
                        ]
                    }
                }
            }
        ]
    },
    "app-bundles": {
        "href": "/v1/catalog/us/search?bubble%5Bapp-bundles%5D=app-bundles&l=en-US&term=facebook",
        "data": [
            {
                "id": "1023120329",
                "type": "app-bundles",
                "href": "/v1/catalog/us/app-bundles/1023120329",
                "attributes": {
                    "seller": "KISSAPP, S.L.",
                    "copyright": "© KissApp",
                    "screenshotsByType": {
                        "iphone6+": [
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/PurpleSource112/v4/5d/bc/14/5dbc1440-18e8-fb65-6f12-41605ddfa338/4bfe9c75-6d61-4070-9897-6cb2b8279475_1_iphone5_en.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "151515",
                                "textColor2": "343434",
                                "textColor3": "444444",
                                "textColor4": "5c5c5c"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/28/e7/1c/28e71c48-be86-2384-0d12-cf897f713339/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "151515",
                                "textColor3": "333333",
                                "textColor4": "444444"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple122/v4/c6/b3/84/c6b38486-1b10-987a-ffd9-983cc6186f36/mzl.chxxrkbm.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "2d2d2d",
                                "textColor3": "333333",
                                "textColor4": "575757"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple118/v4/1a/2e/0c/1a2e0c6f-dd5d-8e23-e121-5e18541629f8/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "fbfffd",
                                "textColor1": "3a1b00",
                                "textColor2": "472405",
                                "textColor3": "614932",
                                "textColor4": "6b5036"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple128/v4/79/1f/c2/791fc239-8ad4-0195-6673-a0ab319e8af4/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "2d1301",
                                "textColor3": "333333",
                                "textColor4": "574234"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple128/v4/4c/f0/2e/4cf02ec2-8a06-58b3-47d7-6d9bf03f2b25/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "fffffd",
                                "textColor1": "000000",
                                "textColor2": "252525",
                                "textColor3": "333332",
                                "textColor4": "505050"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple125/v4/88/76/b5/8876b5d4-63d0-03c3-cdff-1d1144bc6a3f/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "151515",
                                "textColor3": "333333",
                                "textColor4": "434343"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple115/v4/a0/94/57/a09457de-3c0f-6430-10b7-e8c3447622e7/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "411e1e",
                                "textColor3": "333333",
                                "textColor4": "674b4b"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple115/v4/06/55/78/0655788d-5035-4e62-2d51-cbc0d5bd87a4/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "323232",
                                "textColor3": "333333",
                                "textColor4": "5b5b5b"
                            }
                        ],
                        "ipad": [
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple122/v4/cb/01/86/cb018635-d387-74b6-e2cf-bb5ba06264c4/mzl.yxqeozfc.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "2d2d2d",
                                "textColor3": "333333",
                                "textColor4": "575757"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/88/dc/dc/88dcdc8e-357b-f40f-c3cd-845c297a029b/mzl.fwgxcayg.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "0a0a0a",
                                "textColor2": "542227",
                                "textColor3": "3b3b3b",
                                "textColor4": "764e52"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is1-ssl.mzstatic.com/image/thumb/Purple112/v4/2f/15/24/2f1524ca-4bda-8ca3-8f85-d5b311163f89/mzl.xrhmmfci.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "feffff",
                                "textColor1": "000000",
                                "textColor2": "5d1200",
                                "textColor3": "333333",
                                "textColor4": "7d4233"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple118/v4/13/2d/f2/132df27d-292b-018b-8149-d36d3b58b05b/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "fcfffd",
                                "textColor1": "0d0c0d",
                                "textColor2": "442a00",
                                "textColor3": "3d3d3d",
                                "textColor4": "695432"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple128/v4/f0/46/c2/f046c2d0-39a8-f0ee-8726-d5372ae4af3d/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "feffff",
                                "textColor1": "000000",
                                "textColor2": "412917",
                                "textColor3": "333333",
                                "textColor4": "675445"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple118/v4/e6/d7/c4/e6d7c4bc-f418-8e54-9f06-3e35e6c951d2/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "f5faff",
                                "textColor1": "000000",
                                "textColor2": "232323",
                                "textColor3": "313233",
                                "textColor4": "4d4e4f"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple125/v4/7a/91/dd/7a91dd8c-0874-95f0-e7ac-6519195825be/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "161616",
                                "textColor3": "333333",
                                "textColor4": "444444"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple125/v4/74/b4/12/74b41214-926b-76a1-0887-cc5bc5f5a123/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "421e1d",
                                "textColor3": "333333",
                                "textColor4": "674b4a"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple125/v4/1e/79/c3/1e79c32d-db50-2c9a-e83c-38469c7f5eed/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "2c1207",
                                "textColor3": "333333",
                                "textColor4": "564139"
                            }
                        ],
                        "iphone6": [
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/PurpleSource112/v4/5d/bc/14/5dbc1440-18e8-fb65-6f12-41605ddfa338/4bfe9c75-6d61-4070-9897-6cb2b8279475_1_iphone5_en.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "151515",
                                "textColor2": "343434",
                                "textColor3": "444444",
                                "textColor4": "5c5c5c"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/28/e7/1c/28e71c48-be86-2384-0d12-cf897f713339/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "151515",
                                "textColor3": "333333",
                                "textColor4": "444444"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple122/v4/c6/b3/84/c6b38486-1b10-987a-ffd9-983cc6186f36/mzl.chxxrkbm.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "2d2d2d",
                                "textColor3": "333333",
                                "textColor4": "575757"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple118/v4/1a/2e/0c/1a2e0c6f-dd5d-8e23-e121-5e18541629f8/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "fbfffd",
                                "textColor1": "3a1b00",
                                "textColor2": "472405",
                                "textColor3": "614932",
                                "textColor4": "6b5036"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple128/v4/79/1f/c2/791fc239-8ad4-0195-6673-a0ab319e8af4/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "2d1301",
                                "textColor3": "333333",
                                "textColor4": "574234"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple128/v4/4c/f0/2e/4cf02ec2-8a06-58b3-47d7-6d9bf03f2b25/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "fffffd",
                                "textColor1": "000000",
                                "textColor2": "252525",
                                "textColor3": "333332",
                                "textColor4": "505050"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple125/v4/88/76/b5/8876b5d4-63d0-03c3-cdff-1d1144bc6a3f/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "151515",
                                "textColor3": "333333",
                                "textColor4": "434343"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple115/v4/a0/94/57/a09457de-3c0f-6430-10b7-e8c3447622e7/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "411e1e",
                                "textColor3": "333333",
                                "textColor4": "674b4b"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple115/v4/06/55/78/0655788d-5035-4e62-2d51-cbc0d5bd87a4/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "323232",
                                "textColor3": "333333",
                                "textColor4": "5b5b5b"
                            }
                        ],
                        "ipad_10_5": [
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple122/v4/cb/01/86/cb018635-d387-74b6-e2cf-bb5ba06264c4/mzl.yxqeozfc.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "2d2d2d",
                                "textColor3": "333333",
                                "textColor4": "575757"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/88/dc/dc/88dcdc8e-357b-f40f-c3cd-845c297a029b/mzl.fwgxcayg.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "0a0a0a",
                                "textColor2": "542227",
                                "textColor3": "3b3b3b",
                                "textColor4": "764e52"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is1-ssl.mzstatic.com/image/thumb/Purple112/v4/2f/15/24/2f1524ca-4bda-8ca3-8f85-d5b311163f89/mzl.xrhmmfci.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "feffff",
                                "textColor1": "000000",
                                "textColor2": "5d1200",
                                "textColor3": "333333",
                                "textColor4": "7d4233"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple118/v4/13/2d/f2/132df27d-292b-018b-8149-d36d3b58b05b/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "fcfffd",
                                "textColor1": "0d0c0d",
                                "textColor2": "442a00",
                                "textColor3": "3d3d3d",
                                "textColor4": "695432"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple128/v4/f0/46/c2/f046c2d0-39a8-f0ee-8726-d5372ae4af3d/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "feffff",
                                "textColor1": "000000",
                                "textColor2": "412917",
                                "textColor3": "333333",
                                "textColor4": "675445"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple118/v4/e6/d7/c4/e6d7c4bc-f418-8e54-9f06-3e35e6c951d2/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "f5faff",
                                "textColor1": "000000",
                                "textColor2": "232323",
                                "textColor3": "313233",
                                "textColor4": "4d4e4f"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple125/v4/7a/91/dd/7a91dd8c-0874-95f0-e7ac-6519195825be/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "161616",
                                "textColor3": "333333",
                                "textColor4": "444444"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple125/v4/74/b4/12/74b41214-926b-76a1-0887-cc5bc5f5a123/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "421e1d",
                                "textColor3": "333333",
                                "textColor4": "674b4a"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple125/v4/1e/79/c3/1e79c32d-db50-2c9a-e83c-38469c7f5eed/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "2c1207",
                                "textColor3": "333333",
                                "textColor4": "564139"
                            }
                        ],
                        "ipadPro": [
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple122/v4/cb/01/86/cb018635-d387-74b6-e2cf-bb5ba06264c4/mzl.yxqeozfc.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "2d2d2d",
                                "textColor3": "333333",
                                "textColor4": "575757"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/88/dc/dc/88dcdc8e-357b-f40f-c3cd-845c297a029b/mzl.fwgxcayg.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "0a0a0a",
                                "textColor2": "542227",
                                "textColor3": "3b3b3b",
                                "textColor4": "764e52"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is1-ssl.mzstatic.com/image/thumb/Purple112/v4/2f/15/24/2f1524ca-4bda-8ca3-8f85-d5b311163f89/mzl.xrhmmfci.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "feffff",
                                "textColor1": "000000",
                                "textColor2": "5d1200",
                                "textColor3": "333333",
                                "textColor4": "7d4233"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple118/v4/13/2d/f2/132df27d-292b-018b-8149-d36d3b58b05b/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "fcfffd",
                                "textColor1": "0d0c0d",
                                "textColor2": "442a00",
                                "textColor3": "3d3d3d",
                                "textColor4": "695432"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple128/v4/f0/46/c2/f046c2d0-39a8-f0ee-8726-d5372ae4af3d/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "feffff",
                                "textColor1": "000000",
                                "textColor2": "412917",
                                "textColor3": "333333",
                                "textColor4": "675445"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple118/v4/e6/d7/c4/e6d7c4bc-f418-8e54-9f06-3e35e6c951d2/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "f5faff",
                                "textColor1": "000000",
                                "textColor2": "232323",
                                "textColor3": "313233",
                                "textColor4": "4d4e4f"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple125/v4/7a/91/dd/7a91dd8c-0874-95f0-e7ac-6519195825be/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "161616",
                                "textColor3": "333333",
                                "textColor4": "444444"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple125/v4/74/b4/12/74b41214-926b-76a1-0887-cc5bc5f5a123/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "421e1d",
                                "textColor3": "333333",
                                "textColor4": "674b4a"
                            },
                            {
                                "width": 2048,
                                "height": 2732,
                                "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple125/v4/1e/79/c3/1e79c32d-db50-2c9a-e83c-38469c7f5eed/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "2c1207",
                                "textColor3": "333333",
                                "textColor4": "564139"
                            }
                        ],
                        "iphone": [
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/PurpleSource112/v4/5d/bc/14/5dbc1440-18e8-fb65-6f12-41605ddfa338/4bfe9c75-6d61-4070-9897-6cb2b8279475_1_iphone5_en.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "151515",
                                "textColor2": "343434",
                                "textColor3": "444444",
                                "textColor4": "5c5c5c"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/28/e7/1c/28e71c48-be86-2384-0d12-cf897f713339/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "151515",
                                "textColor3": "333333",
                                "textColor4": "444444"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple122/v4/c6/b3/84/c6b38486-1b10-987a-ffd9-983cc6186f36/mzl.chxxrkbm.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "2d2d2d",
                                "textColor3": "333333",
                                "textColor4": "575757"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple118/v4/1a/2e/0c/1a2e0c6f-dd5d-8e23-e121-5e18541629f8/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "fbfffd",
                                "textColor1": "3a1b00",
                                "textColor2": "472405",
                                "textColor3": "614932",
                                "textColor4": "6b5036"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple128/v4/79/1f/c2/791fc239-8ad4-0195-6673-a0ab319e8af4/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "2d1301",
                                "textColor3": "333333",
                                "textColor4": "574234"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple128/v4/4c/f0/2e/4cf02ec2-8a06-58b3-47d7-6d9bf03f2b25/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "fffffd",
                                "textColor1": "000000",
                                "textColor2": "252525",
                                "textColor3": "333332",
                                "textColor4": "505050"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple125/v4/88/76/b5/8876b5d4-63d0-03c3-cdff-1d1144bc6a3f/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "151515",
                                "textColor3": "333333",
                                "textColor4": "434343"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple115/v4/a0/94/57/a09457de-3c0f-6430-10b7-e8c3447622e7/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "411e1e",
                                "textColor3": "333333",
                                "textColor4": "674b4b"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple115/v4/06/55/78/0655788d-5035-4e62-2d51-cbc0d5bd87a4/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "323232",
                                "textColor3": "333333",
                                "textColor4": "5b5b5b"
                            }
                        ],
                        "iphone5": [
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/PurpleSource112/v4/5d/bc/14/5dbc1440-18e8-fb65-6f12-41605ddfa338/4bfe9c75-6d61-4070-9897-6cb2b8279475_1_iphone5_en.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "151515",
                                "textColor2": "343434",
                                "textColor3": "444444",
                                "textColor4": "5c5c5c"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/28/e7/1c/28e71c48-be86-2384-0d12-cf897f713339/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "151515",
                                "textColor3": "333333",
                                "textColor4": "444444"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple122/v4/c6/b3/84/c6b38486-1b10-987a-ffd9-983cc6186f36/mzl.chxxrkbm.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "2d2d2d",
                                "textColor3": "333333",
                                "textColor4": "575757"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple118/v4/1a/2e/0c/1a2e0c6f-dd5d-8e23-e121-5e18541629f8/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "fbfffd",
                                "textColor1": "3a1b00",
                                "textColor2": "472405",
                                "textColor3": "614932",
                                "textColor4": "6b5036"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple128/v4/79/1f/c2/791fc239-8ad4-0195-6673-a0ab319e8af4/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "2d1301",
                                "textColor3": "333333",
                                "textColor4": "574234"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple128/v4/4c/f0/2e/4cf02ec2-8a06-58b3-47d7-6d9bf03f2b25/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "fffffd",
                                "textColor1": "000000",
                                "textColor2": "252525",
                                "textColor3": "333332",
                                "textColor4": "505050"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple125/v4/88/76/b5/8876b5d4-63d0-03c3-cdff-1d1144bc6a3f/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "151515",
                                "textColor3": "333333",
                                "textColor4": "434343"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple115/v4/a0/94/57/a09457de-3c0f-6430-10b7-e8c3447622e7/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "411e1e",
                                "textColor3": "333333",
                                "textColor4": "674b4b"
                            },
                            {
                                "width": 1242,
                                "height": 2208,
                                "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple115/v4/06/55/78/0655788d-5035-4e62-2d51-cbc0d5bd87a4/pr_source.jpg/{w}x{h}{c}.{f}",
                                "bgColor": "ffffff",
                                "textColor1": "000000",
                                "textColor2": "323232",
                                "textColor3": "333333",
                                "textColor4": "5b5b5b"
                            }
                        ]
                    },
                    "familyShareEnabledDate": "0001-04-23T00:00:00Z",
                    "description": {
                        "standard": "Best Stickers and Emoji pack of all AppStore.  Four apps for the price of three (3x2). You take an app FREE if you order this pack so cool.\n\nThe pack consists of: \n\n- Emoji for iOS: thousands of Emoji in one app. \n\n- Stickers Emoji: Thousands of Stickers for WhatsApp. \n\n- Stickers for WeChat: Thousands of Stickers for WeChat. \n\nWhat do you expect to buy this pack? Do not forget that all updates that are made of the 3 apps will be free for you."
                    },
                    "deviceFamilies": [
                        "iphone",
                        "ipad",
                        "ipod"
                    ],
                    "reviewsRestricted": false,
                    "languageList": [
                        "English"
                    ],
                    "hasEula": false,
                    "regularPriceFormatted": "$4.97",
                    "offers": [
                        {
                            "buyParams": "productType=ASB&price=3990&salableAdamId=1023120329&pricingParameters=STDQ&pg=default&playlistId=1023120329",
                            "type": "buy",
                            "priceFormatted": "$3.99",
                            "price": 3.99,
                            "currencyCode": "USD",
                            "assets": [
                                {
                                    "flavor": "iosSoftware",
                                    "size": 94470179
                                }
                            ]
                        }
                    ],
                    "isGameCenterEnabled": false,
                    "hasInAppPurchases": true,
                    "contentRatingsBySystem": {
                        "appsApple": {
                            "name": "4+",
                            "value": 100,
                            "rank": 1
                        }
                    },
                    "artwork": {
                        "width": 1024,
                        "height": 1024,
                        "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple122/v4/bf/f2/84/bff28423-3bd0-76ff-f171-b0d159551890/mzabit.449703179475136140.png/{w}x{h}{c}.{f}",
                        "bgColor": "000000",
                        "textColor1": "f8fafe",
                        "textColor2": "83fd71",
                        "textColor3": "c6c8cb",
                        "textColor4": "69ca5a"
                    },
                    "privacyPolicyUrl": "http://kissappsl.com/pages/privacy-policy/",
                    "videoPreviewsByType": {},
                    "url": "https://apps.apple.com/us/app-bundle/stickers-and-emoji-for-facebook-wechat-and-whatsapp-pack-ii/id1023120329",
                    "userRating": {
                        "value": 0.0,
                        "ratingCount": 0,
                        "ratingCountList": [
                            0,
                            0,
                            0,
                            0,
                            0
                        ],
                        "ariaLabelForRatings": "0 stars"
                    },
                    "editorialArtwork": {},
                    "genreDisplayName": "Lifestyle",
                    "name": "Stickers and Emoji for Facebook, WeChat and WhatsApp Pack II",
                    "artistName": "KISSAPP, S.L.",
                    "sellerLabel": "Seller",
                    "requirementsString": "Requires iOS 11.0 or later. Compatible with iPhone, iPad, and iPod touch.",
                    "platformAttributes": {
                        "ios": {
                            "requirementsString": "Requires iOS 11.0 or later. Compatible with iPhone, iPad, and iPod touch.",
                            "screenshotsByType": {
                                "iphone6+": [
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/PurpleSource112/v4/5d/bc/14/5dbc1440-18e8-fb65-6f12-41605ddfa338/4bfe9c75-6d61-4070-9897-6cb2b8279475_1_iphone5_en.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "151515",
                                        "textColor2": "343434",
                                        "textColor3": "444444",
                                        "textColor4": "5c5c5c"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/28/e7/1c/28e71c48-be86-2384-0d12-cf897f713339/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "151515",
                                        "textColor3": "333333",
                                        "textColor4": "444444"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple122/v4/c6/b3/84/c6b38486-1b10-987a-ffd9-983cc6186f36/mzl.chxxrkbm.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "2d2d2d",
                                        "textColor3": "333333",
                                        "textColor4": "575757"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple118/v4/1a/2e/0c/1a2e0c6f-dd5d-8e23-e121-5e18541629f8/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "fbfffd",
                                        "textColor1": "3a1b00",
                                        "textColor2": "472405",
                                        "textColor3": "614932",
                                        "textColor4": "6b5036"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple128/v4/79/1f/c2/791fc239-8ad4-0195-6673-a0ab319e8af4/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "2d1301",
                                        "textColor3": "333333",
                                        "textColor4": "574234"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple128/v4/4c/f0/2e/4cf02ec2-8a06-58b3-47d7-6d9bf03f2b25/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "fffffd",
                                        "textColor1": "000000",
                                        "textColor2": "252525",
                                        "textColor3": "333332",
                                        "textColor4": "505050"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple125/v4/88/76/b5/8876b5d4-63d0-03c3-cdff-1d1144bc6a3f/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "151515",
                                        "textColor3": "333333",
                                        "textColor4": "434343"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple115/v4/a0/94/57/a09457de-3c0f-6430-10b7-e8c3447622e7/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "411e1e",
                                        "textColor3": "333333",
                                        "textColor4": "674b4b"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple115/v4/06/55/78/0655788d-5035-4e62-2d51-cbc0d5bd87a4/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "323232",
                                        "textColor3": "333333",
                                        "textColor4": "5b5b5b"
                                    }
                                ],
                                "ipad": [
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple122/v4/cb/01/86/cb018635-d387-74b6-e2cf-bb5ba06264c4/mzl.yxqeozfc.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "2d2d2d",
                                        "textColor3": "333333",
                                        "textColor4": "575757"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/88/dc/dc/88dcdc8e-357b-f40f-c3cd-845c297a029b/mzl.fwgxcayg.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "0a0a0a",
                                        "textColor2": "542227",
                                        "textColor3": "3b3b3b",
                                        "textColor4": "764e52"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is1-ssl.mzstatic.com/image/thumb/Purple112/v4/2f/15/24/2f1524ca-4bda-8ca3-8f85-d5b311163f89/mzl.xrhmmfci.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "feffff",
                                        "textColor1": "000000",
                                        "textColor2": "5d1200",
                                        "textColor3": "333333",
                                        "textColor4": "7d4233"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple118/v4/13/2d/f2/132df27d-292b-018b-8149-d36d3b58b05b/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "fcfffd",
                                        "textColor1": "0d0c0d",
                                        "textColor2": "442a00",
                                        "textColor3": "3d3d3d",
                                        "textColor4": "695432"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple128/v4/f0/46/c2/f046c2d0-39a8-f0ee-8726-d5372ae4af3d/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "feffff",
                                        "textColor1": "000000",
                                        "textColor2": "412917",
                                        "textColor3": "333333",
                                        "textColor4": "675445"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple118/v4/e6/d7/c4/e6d7c4bc-f418-8e54-9f06-3e35e6c951d2/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "f5faff",
                                        "textColor1": "000000",
                                        "textColor2": "232323",
                                        "textColor3": "313233",
                                        "textColor4": "4d4e4f"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple125/v4/7a/91/dd/7a91dd8c-0874-95f0-e7ac-6519195825be/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "161616",
                                        "textColor3": "333333",
                                        "textColor4": "444444"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple125/v4/74/b4/12/74b41214-926b-76a1-0887-cc5bc5f5a123/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "421e1d",
                                        "textColor3": "333333",
                                        "textColor4": "674b4a"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple125/v4/1e/79/c3/1e79c32d-db50-2c9a-e83c-38469c7f5eed/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "2c1207",
                                        "textColor3": "333333",
                                        "textColor4": "564139"
                                    }
                                ],
                                "iphone6": [
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/PurpleSource112/v4/5d/bc/14/5dbc1440-18e8-fb65-6f12-41605ddfa338/4bfe9c75-6d61-4070-9897-6cb2b8279475_1_iphone5_en.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "151515",
                                        "textColor2": "343434",
                                        "textColor3": "444444",
                                        "textColor4": "5c5c5c"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/28/e7/1c/28e71c48-be86-2384-0d12-cf897f713339/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "151515",
                                        "textColor3": "333333",
                                        "textColor4": "444444"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple122/v4/c6/b3/84/c6b38486-1b10-987a-ffd9-983cc6186f36/mzl.chxxrkbm.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "2d2d2d",
                                        "textColor3": "333333",
                                        "textColor4": "575757"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple118/v4/1a/2e/0c/1a2e0c6f-dd5d-8e23-e121-5e18541629f8/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "fbfffd",
                                        "textColor1": "3a1b00",
                                        "textColor2": "472405",
                                        "textColor3": "614932",
                                        "textColor4": "6b5036"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple128/v4/79/1f/c2/791fc239-8ad4-0195-6673-a0ab319e8af4/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "2d1301",
                                        "textColor3": "333333",
                                        "textColor4": "574234"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple128/v4/4c/f0/2e/4cf02ec2-8a06-58b3-47d7-6d9bf03f2b25/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "fffffd",
                                        "textColor1": "000000",
                                        "textColor2": "252525",
                                        "textColor3": "333332",
                                        "textColor4": "505050"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple125/v4/88/76/b5/8876b5d4-63d0-03c3-cdff-1d1144bc6a3f/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "151515",
                                        "textColor3": "333333",
                                        "textColor4": "434343"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple115/v4/a0/94/57/a09457de-3c0f-6430-10b7-e8c3447622e7/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "411e1e",
                                        "textColor3": "333333",
                                        "textColor4": "674b4b"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple115/v4/06/55/78/0655788d-5035-4e62-2d51-cbc0d5bd87a4/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "323232",
                                        "textColor3": "333333",
                                        "textColor4": "5b5b5b"
                                    }
                                ],
                                "ipad_10_5": [
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple122/v4/cb/01/86/cb018635-d387-74b6-e2cf-bb5ba06264c4/mzl.yxqeozfc.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "2d2d2d",
                                        "textColor3": "333333",
                                        "textColor4": "575757"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/88/dc/dc/88dcdc8e-357b-f40f-c3cd-845c297a029b/mzl.fwgxcayg.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "0a0a0a",
                                        "textColor2": "542227",
                                        "textColor3": "3b3b3b",
                                        "textColor4": "764e52"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is1-ssl.mzstatic.com/image/thumb/Purple112/v4/2f/15/24/2f1524ca-4bda-8ca3-8f85-d5b311163f89/mzl.xrhmmfci.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "feffff",
                                        "textColor1": "000000",
                                        "textColor2": "5d1200",
                                        "textColor3": "333333",
                                        "textColor4": "7d4233"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple118/v4/13/2d/f2/132df27d-292b-018b-8149-d36d3b58b05b/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "fcfffd",
                                        "textColor1": "0d0c0d",
                                        "textColor2": "442a00",
                                        "textColor3": "3d3d3d",
                                        "textColor4": "695432"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple128/v4/f0/46/c2/f046c2d0-39a8-f0ee-8726-d5372ae4af3d/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "feffff",
                                        "textColor1": "000000",
                                        "textColor2": "412917",
                                        "textColor3": "333333",
                                        "textColor4": "675445"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple118/v4/e6/d7/c4/e6d7c4bc-f418-8e54-9f06-3e35e6c951d2/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "f5faff",
                                        "textColor1": "000000",
                                        "textColor2": "232323",
                                        "textColor3": "313233",
                                        "textColor4": "4d4e4f"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple125/v4/7a/91/dd/7a91dd8c-0874-95f0-e7ac-6519195825be/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "161616",
                                        "textColor3": "333333",
                                        "textColor4": "444444"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple125/v4/74/b4/12/74b41214-926b-76a1-0887-cc5bc5f5a123/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "421e1d",
                                        "textColor3": "333333",
                                        "textColor4": "674b4a"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple125/v4/1e/79/c3/1e79c32d-db50-2c9a-e83c-38469c7f5eed/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "2c1207",
                                        "textColor3": "333333",
                                        "textColor4": "564139"
                                    }
                                ],
                                "ipadPro": [
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple122/v4/cb/01/86/cb018635-d387-74b6-e2cf-bb5ba06264c4/mzl.yxqeozfc.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "2d2d2d",
                                        "textColor3": "333333",
                                        "textColor4": "575757"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/88/dc/dc/88dcdc8e-357b-f40f-c3cd-845c297a029b/mzl.fwgxcayg.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "0a0a0a",
                                        "textColor2": "542227",
                                        "textColor3": "3b3b3b",
                                        "textColor4": "764e52"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is1-ssl.mzstatic.com/image/thumb/Purple112/v4/2f/15/24/2f1524ca-4bda-8ca3-8f85-d5b311163f89/mzl.xrhmmfci.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "feffff",
                                        "textColor1": "000000",
                                        "textColor2": "5d1200",
                                        "textColor3": "333333",
                                        "textColor4": "7d4233"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple118/v4/13/2d/f2/132df27d-292b-018b-8149-d36d3b58b05b/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "fcfffd",
                                        "textColor1": "0d0c0d",
                                        "textColor2": "442a00",
                                        "textColor3": "3d3d3d",
                                        "textColor4": "695432"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple128/v4/f0/46/c2/f046c2d0-39a8-f0ee-8726-d5372ae4af3d/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "feffff",
                                        "textColor1": "000000",
                                        "textColor2": "412917",
                                        "textColor3": "333333",
                                        "textColor4": "675445"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple118/v4/e6/d7/c4/e6d7c4bc-f418-8e54-9f06-3e35e6c951d2/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "f5faff",
                                        "textColor1": "000000",
                                        "textColor2": "232323",
                                        "textColor3": "313233",
                                        "textColor4": "4d4e4f"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple125/v4/7a/91/dd/7a91dd8c-0874-95f0-e7ac-6519195825be/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "161616",
                                        "textColor3": "333333",
                                        "textColor4": "444444"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple125/v4/74/b4/12/74b41214-926b-76a1-0887-cc5bc5f5a123/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "421e1d",
                                        "textColor3": "333333",
                                        "textColor4": "674b4a"
                                    },
                                    {
                                        "width": 2048,
                                        "height": 2732,
                                        "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple125/v4/1e/79/c3/1e79c32d-db50-2c9a-e83c-38469c7f5eed/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "2c1207",
                                        "textColor3": "333333",
                                        "textColor4": "564139"
                                    }
                                ],
                                "iphone": [
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/PurpleSource112/v4/5d/bc/14/5dbc1440-18e8-fb65-6f12-41605ddfa338/4bfe9c75-6d61-4070-9897-6cb2b8279475_1_iphone5_en.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "151515",
                                        "textColor2": "343434",
                                        "textColor3": "444444",
                                        "textColor4": "5c5c5c"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/28/e7/1c/28e71c48-be86-2384-0d12-cf897f713339/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "151515",
                                        "textColor3": "333333",
                                        "textColor4": "444444"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple122/v4/c6/b3/84/c6b38486-1b10-987a-ffd9-983cc6186f36/mzl.chxxrkbm.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "2d2d2d",
                                        "textColor3": "333333",
                                        "textColor4": "575757"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple118/v4/1a/2e/0c/1a2e0c6f-dd5d-8e23-e121-5e18541629f8/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "fbfffd",
                                        "textColor1": "3a1b00",
                                        "textColor2": "472405",
                                        "textColor3": "614932",
                                        "textColor4": "6b5036"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple128/v4/79/1f/c2/791fc239-8ad4-0195-6673-a0ab319e8af4/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "2d1301",
                                        "textColor3": "333333",
                                        "textColor4": "574234"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple128/v4/4c/f0/2e/4cf02ec2-8a06-58b3-47d7-6d9bf03f2b25/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "fffffd",
                                        "textColor1": "000000",
                                        "textColor2": "252525",
                                        "textColor3": "333332",
                                        "textColor4": "505050"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple125/v4/88/76/b5/8876b5d4-63d0-03c3-cdff-1d1144bc6a3f/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "151515",
                                        "textColor3": "333333",
                                        "textColor4": "434343"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple115/v4/a0/94/57/a09457de-3c0f-6430-10b7-e8c3447622e7/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "411e1e",
                                        "textColor3": "333333",
                                        "textColor4": "674b4b"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple115/v4/06/55/78/0655788d-5035-4e62-2d51-cbc0d5bd87a4/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "323232",
                                        "textColor3": "333333",
                                        "textColor4": "5b5b5b"
                                    }
                                ],
                                "iphone5": [
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/PurpleSource112/v4/5d/bc/14/5dbc1440-18e8-fb65-6f12-41605ddfa338/4bfe9c75-6d61-4070-9897-6cb2b8279475_1_iphone5_en.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "151515",
                                        "textColor2": "343434",
                                        "textColor3": "444444",
                                        "textColor4": "5c5c5c"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/28/e7/1c/28e71c48-be86-2384-0d12-cf897f713339/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "151515",
                                        "textColor3": "333333",
                                        "textColor4": "444444"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is2-ssl.mzstatic.com/image/thumb/Purple122/v4/c6/b3/84/c6b38486-1b10-987a-ffd9-983cc6186f36/mzl.chxxrkbm.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "2d2d2d",
                                        "textColor3": "333333",
                                        "textColor4": "575757"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple118/v4/1a/2e/0c/1a2e0c6f-dd5d-8e23-e121-5e18541629f8/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "fbfffd",
                                        "textColor1": "3a1b00",
                                        "textColor2": "472405",
                                        "textColor3": "614932",
                                        "textColor4": "6b5036"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple128/v4/79/1f/c2/791fc239-8ad4-0195-6673-a0ab319e8af4/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "2d1301",
                                        "textColor3": "333333",
                                        "textColor4": "574234"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple128/v4/4c/f0/2e/4cf02ec2-8a06-58b3-47d7-6d9bf03f2b25/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "fffffd",
                                        "textColor1": "000000",
                                        "textColor2": "252525",
                                        "textColor3": "333332",
                                        "textColor4": "505050"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple125/v4/88/76/b5/8876b5d4-63d0-03c3-cdff-1d1144bc6a3f/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "151515",
                                        "textColor3": "333333",
                                        "textColor4": "434343"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple115/v4/a0/94/57/a09457de-3c0f-6430-10b7-e8c3447622e7/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "411e1e",
                                        "textColor3": "333333",
                                        "textColor4": "674b4b"
                                    },
                                    {
                                        "width": 1242,
                                        "height": 2208,
                                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Purple115/v4/06/55/78/0655788d-5035-4e62-2d51-cbc0d5bd87a4/pr_source.jpg/{w}x{h}{c}.{f}",
                                        "bgColor": "ffffff",
                                        "textColor1": "000000",
                                        "textColor2": "323232",
                                        "textColor3": "333333",
                                        "textColor4": "5b5b5b"
                                    }
                                ]
                            },
                            "minimumOSVersion": "11.0"
                        }
                    }
                },
                "relationships": {
                    "genres": {
                        "href": "/v1/catalog/us/app-bundles/1023120329/genres",
                        "data": [
                            {
                                "id": "6012",
                                "type": "genres",
                                "href": "/v1/catalog/us/genres/6012",
                                "attributes": {
                                    "parentName": "App Store",
                                    "name": "Lifestyle",
                                    "url": "https://itunes.apple.com/us/genre/id6012",
                                    "parentId": "36"
                                }
                            }
                        ]
                    },
                    "developer": {
                        "href": "/v1/catalog/us/app-bundles/1023120329/developer",
                        "data": [
                            {
                                "id": "552812711",
                                "type": "developers",
                                "href": "/v1/catalog/us/developers/552812711"
                            }
                        ]
                    }
                }
            }
        ]
    }
}

Request for details about individual apps:

curl --request GET \
  --url 'https://tools.applemediaservices.com/api/apple-media/apps/US/apps/284882215?l=en-US&platform=iphone&additionalPlatforms=iphone%2Cmac%2Cappletv%2Cipad%2Cwatch%2Cweb'

Response:

{
    "id": "284882215",
    "type": "apps",
    "href": "/v1/catalog/us/apps/284882215?l=en-US",
    "attributes": {
        "supportsArcade": false,
        "familyShareEnabledDate": "0001-04-23T00:00:00Z",
        "isFirstPartyHideableApp": false,
        "contentRatingsBySystem": {
            "appsApple": {
                "name": "12+",
                "value": 300,
                "rank": 3,
                "advisories": [
                    "Infrequent/Mild Sexual Content and Nudity",
                    "Infrequent/Mild Profanity or Crude Humor",
                    "Infrequent/Mild Mature/Suggestive Themes",
                    "Infrequent/Mild Alcohol, Tobacco, or Drug Use or References"
                ]
            }
        },
        "deviceFamilies": [
            "tvos",
            "iphone",
            "ipad",
            "ipod"
        ],
        "chartPositions": {
            "appStore": {
                "position": 2,
                "genreName": "Social Networking",
                "genre": 6005,
                "chart": "top-free",
                "chartLink": "https://apps.apple.com/us/charts/iphone/social-networking-apps/6005"
            }
        },
        "url": "https://apps.apple.com/us/app/facebook/id284882215",
        "usesLocationBackgroundMode": false,
        "userRating": {
            "value": 2.3,
            "ratingCount": 1357931,
            "ratingCountList": [
                798646,
                77291,
                74322,
                84994,
                322678
            ],
            "ariaLabelForRatings": "2.3 stars"
        },
        "genreDisplayName": "Social Networking",
        "name": "Facebook",
        "isPreorder": false,
        "artistName": "Meta Platforms, Inc.",
        "isIOSBinaryMacOSCompatible": false,
        "reviewsRestricted": false,
        "sellerLabel": "Seller",
        "hasEula": true,
        "platformAttributes": {
            "appletvos": {
                "seller": "Meta Platforms, Inc.",
                "copyright": "© 2022 Meta",
                "minimumMacOSVersion": "11.0",
                "isStandaloneWithCompanionForWatchOS": false,
                "is32bitOnly": false,
                "isAppleWatchSupported": false,
                "languageList": [
                    "English",
                    "Czech",
                    "Danish",
                    "Dutch",
                    "Finnish",
                    "French",
                    "German",
                    "Greek",
                    "Hindi",
                    "Hungarian",
                    "Indonesian",
                    "Italian",
                    "Japanese",
                    "Korean",
                    "Malay",
                    "Norwegian Bokmål",
                    "Polish",
                    "Portuguese",
                    "Romanian",
                    "Russian",
                    "Simplified Chinese",
                    "Spanish",
                    "Swedish",
                    "Thai",
                    "Traditional Chinese",
                    "Turkish",
                    "Vietnamese"
                ],
                "hasSafariExtension": false,
                "requiresGameController": false,
                "requiredCapabilities": "arm64 ",
                "offers": [
                    {
                        "buyParams": "productType=C&price=0&salableAdamId=284882215&pricingParameters=STDQ&pg=default&appExtVrsId=850317086",
                        "type": "get",
                        "priceFormatted": "$0.00",
                        "price": 0.0,
                        "currencyCode": "USD",
                        "assets": [
                            {
                                "flavor": "iosSoftware",
                                "size": 44467200
                            }
                        ]
                    },
                    {
                        "buyParams": "productType=C&price=0&salableAdamId=284882215&pricingParameters=SWUPD&pg=default&appExtVrsId=850317086",
                        "type": "update",
                        "priceFormatted": "$0.00",
                        "price": 0.0,
                        "currencyCode": "USD",
                        "assets": [
                            {
                                "flavor": "iosSoftware",
                                "size": 44467200
                            }
                        ]
                    }
                ],
                "supportedLocales": [
                    {
                        "name": "English",
                        "tag": "en-US"
                    },
                    {
                        "name": "Czech",
                        "tag": "cs"
                    },
                    {
                        "name": "Danish",
                        "tag": "da"
                    },
                    {
                        "name": "Dutch",
                        "tag": "nl"
                    },
                    {
                        "name": "Finnish",
                        "tag": "fi"
                    },
                    {
                        "name": "French",
                        "tag": "fr-FR"
                    },
                    {
                        "name": "German",
                        "tag": "de-DE"
                    },
                    {
                        "name": "Greek",
                        "tag": "el"
                    },
                    {
                        "name": "Hindi",
                        "tag": "hi"
                    },
                    {
                        "name": "Hungarian",
                        "tag": "hu"
                    },
                    {
                        "name": "Indonesian",
                        "tag": "id"
                    },
                    {
                        "name": "Italian",
                        "tag": "it"
                    },
                    {
                        "name": "Japanese",
                        "tag": "ja"
                    },
                    {
                        "name": "Korean",
                        "tag": "ko"
                    },
                    {
                        "name": "Malay",
                        "tag": "ms"
                    },
                    {
                        "name": "Norwegian Bokmål",
                        "tag": "nb"
                    },
                    {
                        "name": "Polish",
                        "tag": "pl"
                    },
                    {
                        "name": "Portuguese",
                        "tag": "pt-PT"
                    },
                    {
                        "name": "Romanian",
                        "tag": "ro"
                    },
                    {
                        "name": "Russian",
                        "tag": "ru"
                    },
                    {
                        "name": "Simplified Chinese",
                        "tag": "zh-Hans-CN"
                    },
                    {
                        "name": "Spanish",
                        "tag": "es-ES"
                    },
                    {
                        "name": "Swedish",
                        "tag": "sv"
                    },
                    {
                        "name": "Thai",
                        "tag": "th"
                    },
                    {
                        "name": "Traditional Chinese",
                        "tag": "zh-Hant-HK"
                    },
                    {
                        "name": "Turkish",
                        "tag": "tr"
                    },
                    {
                        "name": "Vietnamese",
                        "tag": "vi"
                    }
                ],
                "requires32bit": false,
                "isGameCenterEnabled": false,
                "isSiriSupported": false,
                "releaseDate": "2019-02-05",
                "minimumOSVersion": "13.0",
                "hasInAppPurchases": true,
                "bundleId": "com.facebook.Facebook",
                "hasMessagesExtension": false,
                "artwork": {
                    "width": 1280,
                    "height": 768,
                    "url": "https://is4-ssl.mzstatic.com/image/thumb/Purple122/v4/b9/26/84/b92684e5-8b03-497e-c310-0e33638f1f15/App_Icon_-_Small-marketing.lsr/{w}x{h}{c}.{f}",
                    "bgColor": "0155c1",
                    "textColor1": "fdfbf8",
                    "textColor2": "aaccf9",
                    "textColor3": "cadaed",
                    "textColor4": "88b4ee"
                },
                "supportsGameController": false,
                "hasFamilyShareableInAppPurchases": false,
                "isHiddenFromSpringboard": false,
                "isStandaloneForWatchOS": false,
                "isDeliveredInIOSAppForWatchOS": false,
                "hasPrivacyPolicyText": true,
                "editorialArtwork": {
                    "originalFlowcaseBrick": {
                        "width": 3200,
                        "height": 600,
                        "url": "https://is1-ssl.mzstatic.com/image/thumb/Features5/v4/c8/ed/1f/c8ed1f60-2d29-efbd-ea9f-5c8e0d6dde47/source/{w}x{h}{c}.{f}",
                        "bgColor": "ffffff",
                        "textColor1": "1a2743",
                        "textColor2": "451937",
                        "textColor3": "475269",
                        "textColor4": "6a475f"
                    },
                    "storeFlowcase": {
                        "width": 4320,
                        "height": 1080,
                        "url": "https://is1-ssl.mzstatic.com/image/thumb/Features118/v4/87/b3/cf/87b3cf1b-1d41-d685-ba94-6aa23a502614/source/{w}x{h}{c}.{f}",
                        "bgColor": "ffffff",
                        "textColor1": "010303",
                        "textColor2": "1a2844",
                        "textColor3": "343535",
                        "textColor4": "485369"
                    },
                    "fullscreenBackground": {
                        "width": 4320,
                        "height": 2160,
                        "url": "https://is1-ssl.mzstatic.com/image/thumb/Features124/v4/e2/e5/af/e2e5af56-290d-97be-c087-2b3b4a284a83/source/{w}x{h}{c}.{f}",
                        "bgColor": "2b4b8d",
                        "textColor1": "d6def1",
                        "textColor2": "dbd0a2",
                        "textColor3": "b4c1dd",
                        "textColor4": "b8b69e"
                    },
                    "contentLogo": {
                        "width": 2400,
                        "height": 390,
                        "url": "https://is1-ssl.mzstatic.com/image/thumb/Features114/v4/ba/c9/28/bac928f0-b92d-d455-b6ad-3735bb4e9691/source/{w}x{h}{c}.{f}",
                        "bgColor": "000000",
                        "textColor1": "ffffff",
                        "textColor2": "d5d5d5",
                        "textColor3": "cbcbcb",
                        "textColor4": "aaaaaa"
                    },
                    "brandLogo": {
                        "width": 1080,
                        "height": 1080,
                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Features116/v4/37/1e/f0/371ef0b1-ce56-e476-1355-a92b5808bf5a/source/{w}x{h}{c}.{f}",
                        "bgColor": "000000",
                        "textColor1": "f2f2f2",
                        "textColor2": "e5e5e5",
                        "textColor3": "c1c1c1",
                        "textColor4": "b7b7b7"
                    },
                    "contentLogoTrimmed": {
                        "width": 2115,
                        "height": 386,
                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Features113/v4/bc/12/95/bc129552-eac9-a790-26dd-e3f3b1897bc1/source/{w}x{h}{c}.{f}",
                        "bgColor": "000000",
                        "textColor1": "ffffff",
                        "textColor2": "d6d6d6",
                        "textColor3": "cbcbcb",
                        "textColor4": "ababab"
                    }
                },
                "supportsPassbook": false,
                "requirementsString": "Requires tvOS 13.0 or later.",
                "externalVersionId": 850317086
            },
            "ios": {
                "seller": "Meta Platforms, Inc.",
                "copyright": "© 2022 Meta",
                "minimumMacOSVersion": "11.0",
                "isStandaloneWithCompanionForWatchOS": false,
                "is32bitOnly": false,
                "isAppleWatchSupported": false,
                "languageList": [
                    "English",
                    "Arabic",
                    "Croatian",
                    "Czech",
                    "Danish",
                    "Dutch",
                    "Finnish",
                    "French",
                    "German",
                    "Greek",
                    "Hebrew",
                    "Hindi",
                    "Hungarian",
                    "Indonesian",
                    "Italian",
                    "Japanese",
                    "Korean",
                    "Malay",
                    "Norwegian Bokmål",
                    "Polish",
                    "Portuguese",
                    "Romanian",
                    "Russian",
                    "Simplified Chinese",
                    "Slovak",
                    "Spanish",
                    "Swedish",
                    "Thai",
                    "Traditional Chinese",
                    "Turkish",
                    "Ukrainian",
                    "Vietnamese"
                ],
                "hasSafariExtension": false,
                "requiresGameController": false,
                "requiredCapabilities": "arm64 ",
                "offers": [
                    {
                        "buyParams": "productType=C&price=0&salableAdamId=284882215&pricingParameters=STDQ&pg=default&appExtVrsId=854345153",
                        "type": "get",
                        "priceFormatted": "$0.00",
                        "price": 0.0,
                        "currencyCode": "USD",
                        "assets": [
                            {
                                "flavor": "iosSoftware",
                                "size": 314289152
                            }
                        ]
                    },
                    {
                        "buyParams": "productType=C&price=0&salableAdamId=284882215&pricingParameters=SWUPD&pg=default&appExtVrsId=854345153",
                        "type": "update",
                        "priceFormatted": "$0.00",
                        "price": 0.0,
                        "currencyCode": "USD",
                        "assets": [
                            {
                                "flavor": "iosSoftware",
                                "size": 314289152
                            }
                        ]
                    }
                ],
                "supportedLocales": [
                    {
                        "name": "English",
                        "tag": "en-US"
                    },
                    {
                        "name": "Arabic",
                        "tag": "ar"
                    },
                    {
                        "name": "Croatian",
                        "tag": "hr"
                    },
                    {
                        "name": "Czech",
                        "tag": "cs"
                    },
                    {
                        "name": "Danish",
                        "tag": "da"
                    },
                    {
                        "name": "Dutch",
                        "tag": "nl"
                    },
                    {
                        "name": "Finnish",
                        "tag": "fi"
                    },
                    {
                        "name": "French",
                        "tag": "fr-FR"
                    },
                    {
                        "name": "German",
                        "tag": "de-DE"
                    },
                    {
                        "name": "Greek",
                        "tag": "el"
                    },
                    {
                        "name": "Hebrew",
                        "tag": "he"
                    },
                    {
                        "name": "Hindi",
                        "tag": "hi"
                    },
                    {
                        "name": "Hungarian",
                        "tag": "hu"
                    },
                    {
                        "name": "Indonesian",
                        "tag": "id"
                    },
                    {
                        "name": "Italian",
                        "tag": "it"
                    },
                    {
                        "name": "Japanese",
                        "tag": "ja"
                    },
                    {
                        "name": "Korean",
                        "tag": "ko"
                    },
                    {
                        "name": "Malay",
                        "tag": "ms"
                    },
                    {
                        "name": "Norwegian Bokmål",
                        "tag": "nb"
                    },
                    {
                        "name": "Polish",
                        "tag": "pl"
                    },
                    {
                        "name": "Portuguese",
                        "tag": "pt-PT"
                    },
                    {
                        "name": "Romanian",
                        "tag": "ro"
                    },
                    {
                        "name": "Russian",
                        "tag": "ru"
                    },
                    {
                        "name": "Simplified Chinese",
                        "tag": "zh-Hans-CN"
                    },
                    {
                        "name": "Slovak",
                        "tag": "sk"
                    },
                    {
                        "name": "Spanish",
                        "tag": "es-ES"
                    },
                    {
                        "name": "Swedish",
                        "tag": "sv"
                    },
                    {
                        "name": "Thai",
                        "tag": "th"
                    },
                    {
                        "name": "Traditional Chinese",
                        "tag": "zh-Hant-HK"
                    },
                    {
                        "name": "Turkish",
                        "tag": "tr"
                    },
                    {
                        "name": "Ukrainian",
                        "tag": "uk"
                    },
                    {
                        "name": "Vietnamese",
                        "tag": "vi"
                    }
                ],
                "requires32bit": false,
                "isGameCenterEnabled": false,
                "isSiriSupported": true,
                "releaseDate": "2019-02-05",
                "minimumOSVersion": "13.4",
                "hasInAppPurchases": true,
                "bundleId": "com.facebook.Facebook",
                "hasMessagesExtension": false,
                "artwork": {
                    "width": 1024,
                    "height": 1024,
                    "url": "https://is5-ssl.mzstatic.com/image/thumb/Purple113/v4/45/ab/be/45abbeac-3a7e-aa86-c1c5-007c09df6d7c/Icon-Production-0-1x_U007emarketing-0-7-0-85-220.png/{w}x{h}{c}.{f}",
                    "bgColor": "18aeff",
                    "textColor1": "141516",
                    "textColor2": "161616",
                    "textColor3": "153445",
                    "textColor4": "173545"
                },
                "supportsGameController": false,
                "hasFamilyShareableInAppPurchases": false,
                "isHiddenFromSpringboard": false,
                "isStandaloneForWatchOS": false,
                "isDeliveredInIOSAppForWatchOS": false,
                "hasPrivacyPolicyText": true,
                "editorialArtwork": {
                    "originalFlowcaseBrick": {
                        "width": 3200,
                        "height": 600,
                        "url": "https://is1-ssl.mzstatic.com/image/thumb/Features5/v4/c8/ed/1f/c8ed1f60-2d29-efbd-ea9f-5c8e0d6dde47/source/{w}x{h}{c}.{f}",
                        "bgColor": "ffffff",
                        "textColor1": "1a2743",
                        "textColor2": "451937",
                        "textColor3": "475269",
                        "textColor4": "6a475f"
                    },
                    "storeFlowcase": {
                        "width": 4320,
                        "height": 1080,
                        "url": "https://is1-ssl.mzstatic.com/image/thumb/Features118/v4/87/b3/cf/87b3cf1b-1d41-d685-ba94-6aa23a502614/source/{w}x{h}{c}.{f}",
                        "bgColor": "ffffff",
                        "textColor1": "010303",
                        "textColor2": "1a2844",
                        "textColor3": "343535",
                        "textColor4": "485369"
                    },
                    "fullscreenBackground": {
                        "width": 4320,
                        "height": 2160,
                        "url": "https://is1-ssl.mzstatic.com/image/thumb/Features124/v4/e2/e5/af/e2e5af56-290d-97be-c087-2b3b4a284a83/source/{w}x{h}{c}.{f}",
                        "bgColor": "2b4b8d",
                        "textColor1": "d6def1",
                        "textColor2": "dbd0a2",
                        "textColor3": "b4c1dd",
                        "textColor4": "b8b69e"
                    },
                    "contentLogo": {
                        "width": 2400,
                        "height": 390,
                        "url": "https://is1-ssl.mzstatic.com/image/thumb/Features114/v4/ba/c9/28/bac928f0-b92d-d455-b6ad-3735bb4e9691/source/{w}x{h}{c}.{f}",
                        "bgColor": "000000",
                        "textColor1": "ffffff",
                        "textColor2": "d5d5d5",
                        "textColor3": "cbcbcb",
                        "textColor4": "aaaaaa"
                    },
                    "brandLogo": {
                        "width": 1080,
                        "height": 1080,
                        "url": "https://is4-ssl.mzstatic.com/image/thumb/Features116/v4/37/1e/f0/371ef0b1-ce56-e476-1355-a92b5808bf5a/source/{w}x{h}{c}.{f}",
                        "bgColor": "000000",
                        "textColor1": "f2f2f2",
                        "textColor2": "e5e5e5",
                        "textColor3": "c1c1c1",
                        "textColor4": "b7b7b7"
                    },
                    "contentLogoTrimmed": {
                        "width": 2115,
                        "height": 386,
                        "url": "https://is3-ssl.mzstatic.com/image/thumb/Features113/v4/bc/12/95/bc129552-eac9-a790-26dd-e3f3b1897bc1/source/{w}x{h}{c}.{f}",
                        "bgColor": "000000",
                        "textColor1": "ffffff",
                        "textColor2": "d6d6d6",
                        "textColor3": "cbcbcb",
                        "textColor4": "ababab"
                    }
                },
                "supportsPassbook": false,
                "requirementsString": "Requires iOS 13.4 or later. Compatible with iPhone, iPad, and iPod touch.",
                "externalVersionId": 854345153
            }
        }
    },
    "relationships": {
        "genres": {
            "href": "/v1/catalog/us/apps/284882215/genres?l=en-US",
            "data": [
                {
                    "id": "6005",
                    "type": "genres",
                    "href": "/v1/catalog/us/genres/6005?l=en-US",
                    "attributes": {
                        "parentName": "App Store",
                        "name": "Social Networking",
                        "parentId": "36",
                        "url": "https://itunes.apple.com/us/genre/id6005"
                    }
                }
            ]
        },
        "developer": {
            "href": "/v1/catalog/us/apps/284882215/developer?l=en-US",
            "data": [
                {
                    "id": "284882218",
                    "type": "developers",
                    "href": "/v1/catalog/us/developers/284882218?l=en-US"
                }
            ]
        }
    }
}

Looks familiar, doesn't it? :D This seems to be a proxy for the media API we're using (and you can in fact also use the same parameters to change the response, I have tested that; so it does also support fetching privacy labels!), but conveniently enough without the need for a token.

Definitely good to keep in mind. But I don't think we should switch to that. Some random proxy for a single affiliate page seems a lot less stable than the internal API used by the App Store app (and Apple has changed a lot about the affiliate stuff in the past).

powerdot commented 1 year ago

Hey, @baltpeter What app are you use to take token as on your screenshots? Right like there https://github.com/tweaselORG/parse-tunes/issues/6#issuecomment-1385638063

baltpeter commented 1 year ago

@powerdot That's mitmweb (part of mitmproxy).

powerdot commented 1 year ago

@baltpeter Thank you!

Marranafa commented 1 year ago

The App Store on an iPhone uses the same endpoint as the website:

image

Hi @baltpeter, could you tell, how do you intercept traffic from the App Store on an iPhone?

baltpeter commented 1 year ago

@Marranafa I'm using mitmproxy in conjunction with SSL Kill Switch 2.

Marranafa commented 1 year ago

Thank you

baltpeter commented 1 year ago

@sam-redbox Not quite sure what you mean. The App Store requests the token on its own, I just recorded the traffic of it doing that.

tg-pgid0 commented 11 months ago

Hi, do you have the User-Agent header for iTunes' registered apple id?

zhixideyu commented 9 months ago

Excuse me,I want the specific parameters of the keyword search interface for the iOS 15 app store