Why My App Store Link Returned 404 and the Page Showed 2018 Screenshots
By Nesim Razon, independent Android developer · 2026-11-16
One of my apps, a lottery results app for Turkey, has been on the App Store since 2018. This month it finally got a modern iPhone version. Two things then surprised me: the store link did not work for most people, and the approved page still showed the old 2018 screenshots. Both turned out to have simple causes. This is what I saw, and everything below is what happened in my case, not a general rule about how Apple works.
The link that showed "not found"
I needed the app's store link for an ad network's "link your app" form, and I also wanted it on my website. I used the generic form, apps.apple.com/app/id<ID>. When I opened it from my own phone it worked. When I tested it from other places, and when the ad network's form tried to find the app, it said the app could not be found.
As far as I can tell, that generic link sends each visitor to the store of their own region. My app was available only in the Turkey storefront. For a visitor whose store region was somewhere else, the page they landed on had no such app, so they got a 404.
The fix: put the country in the link
The country-specific form, apps.apple.com/tr/app/id<ID>, worked for everyone I tried it with, because it points to the one storefront where the app exists. The ad network's form also found the app once I used that link.
On my website I added a small setting. An app's entry in the config can be written as "tr:<ID>" instead of just "<ID>", and the build then produces the country-specific link. Entries without a prefix still produce the generic link. It is a tiny change, but it keeps me from fixing the same thing by hand on every page.
A quick way to check which storefronts have your app
Apple has a public lookup endpoint: itunes.apple.com/lookup?id=<ID>&country=<cc>. For each two-letter country code it returns a JSON with resultCount. In my checks the value was 1 where the app was listed and 0 where it was not. It takes seconds to loop over a list of countries and see where you stand, with no login.
I ran it for a second, brand-new app of mine too. It appeared in about half of the storefronts I tried: the United States, the United Kingdom, Canada, Australia, Turkey and a few more. It did not appear in the EU countries yet.
Absence can mean different things
The missing EU storefronts matched something I saw in App Store Connect, a compliance item called "Digital Services Act" with the status "In Review", covering 27 countries and regions. It is about trader verification. So for that app the gap was most likely a compliance review, which is not something I can fix by changing a setting.
That is the point I took away. A result of 0 for a country can mean at least three different things:
- The country is not selected in the app's availability settings.
- The release is still propagating and has not reached that storefront yet.
- A compliance review is pending for that region.
The second surprise: 2018 screenshots
After the new version was approved and live, I opened the store page and the screenshots were still the old ones from 2018. I checked the lookup API again. Its screenshotUrls list contained seven images, all in the older, narrower 9:16 shape. My new 6.9-inch set was not in it.
In App Store Connect, the Media Manager showed why. My new screenshots sat in the section that is required for the newest phones, "iPhone with Dynamic Island (medium display)". But the old sets from earlier versions were still present under other device sizes, such as "iPhone with Face ID (medium display)" and "iPhone with Home Button (large display)". In my case the page was using those older sets, not the new one.
Fixing it needed a new version
The screenshots of a version that is already live could not be edited. So I created version 4.0.1, deleted the old sets there, and kept only the new one.
A new version also needs a build with that version number, so I had to build and upload a new binary just to change the pictures. It is a slow way to replace screenshots, but I did not find another option for a live version.
I am describing this as it worked for me. I did not test whether other sizes behave the same way for every listing.
What I would do differently
Two small habits come out of this. First, when I add a modern iPhone version to an old listing, I now clear every old device-size set before submitting, not only the section that looks required. Second, after any release I check the real public page and the lookup API, not only the App Store Connect screens, because they showed me different things.
For links, I now use the country form whenever an app is not available worldwide, and I run the lookup for a handful of countries before sending a link to anyone, including an ad network.
Frequently asked questions
Why did my App Store link show "not found" for some people?
In my case the generic link sent each visitor to their own storefront, and the app was available only in one country. For everyone else the page had no such app. The country-specific link worked.
How can I check which countries list my app?
Open itunes.apple.com/lookup?id=<ID>&country=<cc> with a two-letter country code. In my checks, resultCount 1 meant the app was listed there and 0 meant it was not.
Does a result of 0 always mean the app is blocked?
No. It can mean the country is not selected in availability, the release is still propagating, or a compliance review is pending. I saw the last one with a Digital Services Act item in review.
Why did the store page still show old screenshots after the update?
In my case old screenshot sets under other device sizes were still attached and the page used them. I had to delete them in a new version, 4.0.1, and upload a new build.
More from the blog
- App Store Review Guideline 2.1 "Information Needed": What I Sent
- App Store Screenshots Without a Phone: Robolectric, a Fake Image Loader and a Headless Browser
- One QR Code for Two App Stores: A Tiny Redirect Page
- Rewriting for Kotlin Multiplatform Without Changing Behavior: Old Code as a Test Oracle
- A Serverless Remote List for "More Games": One JSON File on GitHub Pages
- Debugging an iPhone From Windows Over USB: Screenshots and Logs With Python