diff --git a/yt_dlp/extractor/instagram.py b/yt_dlp/extractor/instagram.py
index 4eca9eb92..c4036d096 100644
--- a/yt_dlp/extractor/instagram.py
+++ b/yt_dlp/extractor/instagram.py
@@ -234,7 +234,9 @@ class InstagramIE(InstagramBaseIE):
                 media, lambda x: x['edge_media_to_caption']['edges'][0]['node']['text'],
                 compat_str) or media.get('caption')
             title = media.get('title')
-            thumbnail = media.get('display_src') or media.get('display_url')
+            display_resources = media.get('display_resources')
+            if not display_resources:
+                display_resources = [{'src': media.get('display_src')}, {'src': media.get('display_url')}]
             duration = float_or_none(media.get('video_duration'))
             timestamp = int_or_none(media.get('taken_at_timestamp') or media.get('date'))
             uploader = try_get(media, lambda x: x['owner']['full_name'])
@@ -252,6 +254,12 @@ class InstagramIE(InstagramBaseIE):
             comment_count = get_count(
                 ('preview_comment', 'to_comment', 'to_parent_comment'), 'comment')
 
+            thumbnails = [{
+                'url': thumbnail['src'],
+                'width': thumbnail.get('config_width'),
+                'height': thumbnail.get('config_height'),
+            } for thumbnail in display_resources if thumbnail.get('src')]
+
             comments = []
             for comment in try_get(media, lambda x: x['edge_media_to_parent_comment']['edges']):
                 comment_dict = comment.get('node', {})
@@ -326,7 +334,7 @@ class InstagramIE(InstagramBaseIE):
             'title': title or 'Video by %s' % uploader_id,
             'description': description,
             'duration': duration,
-            'thumbnail': thumbnail,
+            'thumbnails': thumbnails,
             'timestamp': timestamp,
             'uploader_id': uploader_id,
             'uploader': uploader,