Are you looking at a CrowdTangle dashboard and finding that the image for the Instagram photo or video isn't there?
Unfortunately, you're right. Certain photo and video media attached to posts expire after a period of time.
Here's what happens:
When we first get a post, we store the link to the photo or video (e.g. "https://www.example.com/logo.jpg"), and then when you load up a dashboard, we send that link to the browser so it can download the picture and show it to you.
If Instagram changes the link, then when the browser tries to download the image, it will fail, and you'll get an error message.
When the browser fails to download the image, it breaks for you, and it also triggers an error for us. When we get that error, we go back to Instagram to get the updated image link.
As soon as we get the good data back, we refresh the image and show you the proper one.
What about the API?
Unfortunately, with the API, all we do is send text around, including the link text. Since no browser is attempting to download the actual image, and no error message comes back to us, we don't know to fix anything if it's an API link that's broken.