How To Download Multiple Instagram Photos and Video’s From An Account At Once? With Meta Data And Captions?

by Ultron

We all use Instagram on daily basis and there are times when we want to download Instagram photo/videos from an account well if you know there is no option to download directly download Instagram photos and videos and you have to either take a screenshot of each image or copy-paste the post URL to a downloader app. You can’t do this when you have multiple photos to download or sometimes even you want to download all the photos from an account. What to do in such cases?

In this article, I am going to tell you “How to download all photos and videos from an Instagram account ?”

Now some of you are from technical background and some if you have no idea about scripts and all, So I am going to tell you about everything in details and step by step so any one of you can use this script.


Features Of This Script:

  • Downloads public and private profiles pictures, hashtags, user’s stories, feeds and saved media and other uploads
  • Downloads comments, geotags and captions of each post
  • Automatically detects profile name on profile and changes and renames the target directory accordingly to it
  • All of these features are Highly Customizable



1] Install Python 3 If you don’t have it on your system, If you don’t know how to install python then simply google and download .exe file. Make sure you click “ADD TO PATH” option while doing the installation

2]Now Type the following command to download the script:

pip3 install instaloader

and to update the script:

pip3 install --upgrade instaloader

Alternatively You can also download the zip file from here: Instaloader Script

3] Now if you have downloaded the file extract it and launch your command prompt from that path, Simply open the folder location where “” is located.
– Now click on the path of that folder and type CMD! Done you’ll get command prompt from that location like shown in following image

Opening command prompt from path/specific location

4] Now that you have a script and location opened from Command Prompt, Its time to run the script

$ instaloader profile [profile ...]

If you are using a Windows Operating System type the following command & replace Profile with the exact same profile name whose photos you want to download.

Python instaloader profile [profile ...]

If you are facing issues run the following commands separately i.e. one after another: build install

Example: If I want to download the photos from a public account: tech_hacksaver then I’ll type the following arguments while running scripts.

instaloader profile tech_hacksaver

Done! Now all the photos and videos will be downloaded to your local device. If you are trying to download from a private account then simply add your username and password so that the script will log in to your account and then will be able to download all the data from that account.

instaloader --login=your_username profile [profile ...]

Now we talked about earlier that the script is Highly customizable to see what arguments can be provided type the following command to your terminal.

instaloader --help

This will give you all the commands and argument that can be accepted by the terminal

instaloader --stories profile username
instaloader --geotags profile username
instaloader --highlights profile username
instaloader --comments profile username
instaloader --tagged profile username
instaloader --help
instaloader [--comments] [--geotags] [--stories] [--highlights] [--tagged]
            [--login YOUR-USERNAME] [--fast-update]
            profile | "#hashtag" | %location_id | :stories | :feed | :saved
instaloader --help

Download pictures (or videos) along with their captions and other metadata from Instagram.

What to Download:
  Specify a list of targets. For each of these, Instaloader creates a folder and downloads all posts. The following
  targets are supported:

  profile               Download profile. If an already-downloaded profile has been renamed, Instaloader automatically
                        finds it by its unique ID and renames the folder likewise.
  @profile              Download all followees of profile. Requires --login. Consider using :feed rather than
  "#hashtag"            Download #hashtag.
  %location_id          Download %location_id. Requires --login.
  :feed                 Download pictures from your feed. Requires --login.
  :stories              Download the stories of your followees. Requires --login.
  :saved                Download the posts that you marked as saved. Requires --login.
  -- -shortcode         Download the post with the given shortcode
  filename.json[.xz]    Re-Download the given object.
  +args.txt             Read targets (and options) from given textfile.

What to Download of each Post:
  --no-pictures         Do not download post pictures. Cannot be used together with --fast-update. Implies --no-video-
                        thumbnails, does not imply --no-videos.
  -V, --no-videos       Do not download videos.
                        Do not download thumbnails of videos.
  -G, --geotags         Download geotags when available. Geotags are stored as a text file with the location's name
                        and a Google Maps link. This requires an additional request to the Instagram server for each
                        picture. Requires --login.
  -C, --comments        Download and update comments for each post. This requires an additional request to the
                        Instagram server for each post, which is why it is disabled by default.
  --no-captions         Do not create txt files.
  --post-metadata-txt POST_METADATA_TXT
                        Template to write in txt file for each Post.
  --storyitem-metadata-txt STORYITEM_METADATA_TXT
                        Template to write in txt file for each StoryItem.
  --no-metadata-json    Do not create a JSON file containing the metadata of each post.
  --no-compress-json    Do not xz compress JSON files, rather create pretty formatted JSONs.

What to Download of each Profile:
  --no-posts            Do not download regular posts.
  --no-profile-pic      Do not download profile picture.
  -s, --stories         Also download stories of each profile that is downloaded. Requires --login.
  --highlights          Also download highlights of each profile that is downloaded. Requires --login.
  --tagged              Also download posts where each profile is tagged.

Which Posts to Download:
  -F, --fast-update     For each target, stop when encountering the first already-downloaded picture. This flag is
                        recommended when you use Instaloader to update your personal Instagram archive.
  --post-filter filter, --only-if filter
                        Expression that, if given, must evaluate to True for each post to be downloaded. Must be a
                        syntactically valid python expression. Variables are evaluated to instaloader.Post attributes.
                        Example: --post-filter=viewer_has_liked.
  --storyitem-filter filter
                        Expression that, if given, must evaluate to True for each storyitem to be downloaded. Must be
                        a syntactically valid python expression. Variables are evaluated to instaloader.StoryItem
  -c COUNT, --count COUNT
                        Do not attempt to download more than COUNT posts. Applies only to #hashtag and :feed.

Login (Download Private Profiles):
  Instaloader can login to Instagram. This allows downloading private profiles. To login, pass the --login option.
  Your session cookie (not your password!) will be saved to a local file to be reused next time you want Instaloader
  to login.

                        Login name (profile name) for your Instagram account.
                        Path for loading and storing session key file. Defaults to
                        Password for your Instagram account. Without this option, you'll be prompted for your password
                        interactively if there is not yet a valid session file.

How to Download:
  --dirname-pattern DIRNAME_PATTERN
                        Name of directory where to store posts. {profile} is replaced by the profile name, {target} is
                        replaced by the target you specified, i.e. either :feed, #hashtag or the profile name.
                        Defaults to '{target}'.
  --filename-pattern FILENAME_PATTERN
                        Prefix of filenames, relative to the directory given with --dirname-pattern. {profile} is
                        replaced by the profile name,{target} is replaced by the target you specified, i.e. either
                        Maximum number of connection attempts until a request is aborted. Defaults to 3. If a
                        connection fails, it can be manually skipped by hitting CTRL+C. Set this to 0 to retry
  --commit-mode         Tries to ensure downloaded images avoid corruption in case of unexpected interruption. If the
                        last picture is corrupted, Instaloader will fix the picture the next time it is run. Requires
                        the JSON metadata to be saved.

Miscellaneous Options:
  -q, --quiet           Disable user interaction, i.e. do not print messages (except errors) and fail if login
                        credentials are needed but not given. This makes Instaloader suitable as a cron job.
  -h, --help            Show this help message and exit.
  --version             Show version number and exit.

Report issues at The complete documentation can be found at

You can find all the downloaded data on the same folder where your project is located with the same account name.

Please share this post with everyone and let them know how cool is this!

You may also like

Leave a Reply