PAGES
← all tools
◆ Reconnaissance & OSINT

instaloader

v4.16 open-source

Instaloader is a tool to download pictures or videos along with their captions and other metadata from Instagram.

Summary

Instaloader is an open-source command-line tool, free to use, that downloads pictures, videos, and metadata from Instagram, covering public and private profiles, hashtags, stories, feeds, and saved media, along with comments, geotags, and captions. It runs from a terminal via pip install, works as a Python module for scripting, and can be scheduled as a cronjob for repeated updates, which suits OSINTOSINTOpen-source intelligence, collecting and analyzing information from publicly available sources. Investigators use it to learn about people, infrastructure or threats. investigators and researchers doing social-media data collection rather than casual users wanting a GUIGUIA graphical user interface, controls such as windows, buttons and menus. It lets people use software visually rather than entering commands.. It fills the recon niche for Instagram-specific scraping, a gap that general-purpose OSINT frameworks typically leave to dedicated downloaders. First committed in 2016 and still active, with 75 contributors and a release just 26 days ago, it continues to see steady maintenance.

Instaloader is a tool to download pictures or videos along with their captions and other metadata from Instagram.

How instaloader helps

What has an Instagram account posted, and can I get all of it onto my own disk?

pulls every picture and video from a public or private profile along with the profile picture, and resumes where it left off if the run was interrupted before finishing

Has a profile posted anything new since the last time I checked?

compares against the local copy and fetches only media newer than what was already downloaded, stopping as soon as it reaches an already-downloaded post

Who is talking about a post, and where was it taken?

retrieves the comments, geotags and captions attached to each post alongside the media itself

What did an account's stories, highlights, and saved posts contain before they disappeared?

downloads stories, highlights, tagged posts and saved media in addition to regular profile posts, capturing content that is otherwise temporary

Did an account I'm tracking change its username?

detects when a profile's name has changed and renames the local target directory to match, so the archive stays linked to the same account

What is everyone posting under a hashtag or at a location right now?

downloads the posts associated with a given hashtag or location identifier as its own target, separate from profile downloads

all 19 features, with the evidence for each →

Languages

Not documented

Features

19 capabilities · 1 backed by code, an API document or a real run

Built from instaloader's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

What instaloader offers you

  • Command-line interface2
  • JSON data export1
  • Multi-factor authentication1
  • Python scripting support1
  • Scripting language support1
All capabilities 19 capabilities
Reels downloading verified Downloads Instagram Reels videos from a target profile. 10 releases · 3 other sources · first seen Sep 2016

release 10 total

  • Hashtag.get_posts_resumable() method added to support resumable downloads for hashtags v4.9 · Mar 2022 · source · release history
  • Adds -shortcode target to download a single Instagram post directly v4.1 · Sep 2018 · source · release history
  • Adds Instaloader.download_profiles() method for efficient batch downloading of multiple profiles and their stories, replacing the deprecated download_profile() v4.1 · Sep 2018 · source · release history
  • Supports new target :saved to download media marked as saved v3.3 · Mar 2018 · source · release history
  • Sidecar posts now include video files in the download, not just images. v3.0 · Sep 2017 · source · release history
  • Adds the :stories target to download a specific user's stories. v2.2 · Aug 2017 · source · release history

command line

example

  • Programmatically resume a hashtag download using the NodeIterator pattern from instaloader import Instaloader, Hashtag L = Instaloader() hashtag = Hashtag.from_name(L.context, 'tech') for post in hashtag.get_posts_resumable(): L.download_post(post, target='#tech') v4.9 · Mar 2022 · source
  • Download all media the logged-in user has saved to their account. instaloader :saved v3.3 · Mar 2018 · source
Browser cookie integration shipped Load authentication cookies directly from the system browser to streamline login. 5 releases · 3 other sources · first seen May 2018

Also counts toward: Command-line interface

release

  • Extends --load-cookies to support additional browser cookie files v4.12 · Jun 2024 · source · release history
  • Adds --load-cookies CLI flag to load cookies from browser v4.11 · Mar 2024 · source · release history
  • Adds the --request-timeout CLI flag to configure request timeouts v4.3 · Mar 2020 · source · release history
  • Adds --storyitem-filter CLI option to filter stories using the same logic as --only-if for posts v4.0 · May 2018 · source · release history
  • Adds datetime object support in post/story filters to allow date comparisons v4.0 · May 2018 · source · release history

docs

  • None else # Check Firefox 147+ XDG path, then legacy ~/.config/mozilla/firefox/*/cookies.sqlite \ seen Sep 2026 · source

example

  • Set a custom timeout for requests to handle slow networks or rate limits. instaloader --login=myuser --request-timeout=30 profile_name v4.3 · Mar 2020 · source
  • Download only Instagram stories uploaded in the last 24 hours using datetime filtering. instaloader --login=USERNAME --storyitem-filter="datetime.now() - timedelta(hours=24) < item.date" v4.0 · May 2018 · source
Session persistence shipped Enable saving and loading session state via a Python dictionary. 7 releases · 1 other source · first seen Sep 2018

Also counts toward: Multi-factor authentication

release 7 total

  • Enables saving and loading session state via Python dict v4.10 · Jul 2023 · source · release history
  • Adds load_structure() function for loading data structures directly from Python objects v4.8 · Aug 2021 · source · release history
  • Adds --abort-on CLI flag to abort and save resume information on specific HTTP errors v4.7 · Mar 2021 · source · release history
  • Session files are stored in the platform's persistent config directory by default (e.g., ~/.config/instaloader) instead of a volatile temporary directory. v4.4.4 · Jun 2020 · source · release history
  • Introduces the TopSearchResults class for searching profiles, hashtags, and locations v4.3 · Mar 2020 · source · release history
  • Adds support for login with two-factor authentication (2FA) v4.2 · Dec 2018 · source · release history

example

  • Abort the download if you encounter common HTTP errors like redirects or rate limiting, saving state for later. instaloader --login=YOUR_USERNAME --abort-on=302,400,429 PROFILE v4.7 · Mar 2021 · source
Selective content download shipped Control which types of media are downloaded by excluding specific formats or filtering by tags. 5 releases · 3 other sources · first seen Feb 2018

release

  • Adds --slide parameter to allow selecting range of media to download from a sidecar post v4.6 · Jan 2021 · source · release history
  • Adds --no-pictures option to prevent picture downloads while retaining other metadata v4.1 · Sep 2018 · source · release history
  • Adds --tagged option to download posts where a profile is tagged, using Instaloader.download_tagged() method v4.1 · Sep 2018 · source · release history
  • Adds --no-profile-pic flag to disable profile picture downloading v3.2.2 · Feb 2018 · source · release history
  • Adds --no-video-thumbnails flag to exclude video thumbnails from output v3.2.2 · Feb 2018 · source · release history

example

  • Download only the second and third images from a carousel post. instaloader --slide=2:3 <profile> v4.6 · Jan 2021 · source
  • Save only video files without the generated thumbnail images. instaloader --no-video-thumbnails <profile> <post_date> v3.2.2 · Feb 2018 · source
  • Download posts but skip the profile picture assets to save space. instaloader --login=<user> --no-profile-pic <profile> v3.2.2 · Feb 2018 · source
Download volume limiting shipped Limit the number of profiles downloaded in a single execution cycle. 3 releases · 3 other sources · first seen Sep 2017

release

  • Adds max_count parameter to download_profiles to limit the number of profiles downloaded in a single call. v4.13 · Aug 2024 · source · release history
  • Adds --max-connection-attempts parameter to control retry limits for failing connections v3.1 · Oct 2017 · source · release history
  • --only-if <expression>: New CLI flag to filter which posts are downloaded based on a Python expression evaluated against each post's metadata. v3.0 · Sep 2017 · source · release history

example

  • Update only new posts in a fast CI environment without storing previous media. instaloader --latest-stamps <profile> v4.8 · Aug 2021 · source
  • Limit connection retries to 3 attempts before failing a download gracefully instaloader --max-connection-attempts=3 PROFILE v3.1 · Oct 2017 · source
  • Use the new --only-if flag to filter posts by date range during download. instaloader --login=YOUR_USERNAME '--created > 2023-01-01' profile v3.0 · Sep 2017 · source
Comment engagement data shipped Retrieve the list of profiles that liked a specific post comment. 5 releases · 1 other source · first seen Sep 2017

release

  • Adds PostComment.likes property yielding profiles that liked a comment v4.11 · Mar 2024 · source · release history
  • Extends post properties available via --only-if and --metadata-json with caption_mentions and tagged_users fields v3.1 · Oct 2017 · source · release history
  • Adds --metadata-json flag to export post properties as JSON output v3.1 · Oct 2017 · source · release history
  • --no-captions: New CLI option to exclude post captions from the downloaded metadata file. v3.0 · Sep 2017 · source · release history
  • --no-geotags: New CLI option to exclude geolocation data from the downloaded metadata file. v3.0 · Sep 2017 · source · release history

example

  • Export full post metadata including mentions and tagged users to a file for downstream analysis instaloader --login=USER --metadata-json > posts.json v3.1 · Oct 2017 · source
Profile metadata access shipped Retrieve profile-level information such as external bio links and follower counts programmatically. 3 releases · 1 other source · first seen May 2018

Also counts toward: Python scripting support, Scripting language support

release

  • Profile.from_id() now works anonymously even for private profiles v4.2.2 · Feb 2019 · source · release history
  • Include iphone_struct information in saved profile JSON v4.2.2 · Feb 2019 · source · release history
  • Adds followers, followees and external_url properties to the Profile class for programmatic access to profile metadata v4.0.2 · May 2018 · source · release history

example

  • Access external bio link and follower count from a Profile object in Python scripts profile = loader.get_profile('instagram') print(profile.external_url) print(profile.followers) v4.0.2 · May 2018 · source
Post metadata export shipped Save post and storyitem metadata to text files or JSON files for external analysis. 3 releases · 1 other source · first seen May 2018

Also counts toward: JSON data export

release

  • Allow formatting owner_profile attributes in --post-metadata-txt, --storyitem-metadata-txt, --filename-pattern (e.g., {owner_profile.full_name}) v4.0.7 · Aug 2018 · source · release history
  • Adds --post-metadata-txt and --storyitem-metadata-txt options to customize content written to txt files alongside posts or stories v4.0 · May 2018 · source · release history
  • Adds saving of Post and StoryItem JSON files that can later be used to extract further metadata v4.0 · May 2018 · source · release history

example

  • Save post metadata to a text file including both caption and location. instaloader --login=USERNAME --post-metadata-txt="{caption}\nLocation: {location}" v4.0 · May 2018 · source
Download resume control shipped Control how the tool handles existing local files when resuming or re-running a download. 1 release · 2 other sources · first seen Aug 2020

Also counts toward: Command-line interface

release

  • Supports {filename} token in --filename-pattern config to save content using original filenames v4.6 · Jan 2021 · source · release history

example

  • Resistively download content by resuming an interrupted session automatically. instaloader profile <username> --resume-prefix=<session_name> v4.5 · Aug 2020 · source
  • Update local copy, stop at first existing instaloader --fast-update profile [profile ...]
Highlight cover downloading shipped Download cover images for Instagram Highlights. 2 releases · first seen Mar 2020

release

  • Adds a progress counter to the Retrieving highlights log line for better visibility into highlight retrieval progress.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ v4.16 · Oct 2026 · source · release history
  • Enables downloading highlight cover pictures when downloading highlights v4.3 · Mar 2020 · source · release history
Video play count retrieval shipped Retrieve the number of times a video post has been played. 1 release · 1 other source · first seen Nov 2025

release

  • Adds Post.video_play_count property to retrieve video play counts from posts. v4.15 · Nov 2025 · source · release history

example

  • Access video play counts when iterating over a profile's posts in a script. from instaloader import Instaloader, Profile L = Instaloader() profile = Profile.from_username(L.context, "<username>") for post in profile.get_posts(): if post.is_video: print(post.shortcode,… v4.15 · Nov 2025 · source
Hashtag following tracking shipped Retrieve the list of hashtags a specific Instagram profile is following. 1 release · 1 other source · first seen Jul 2023

release

  • Adds Profile method get_followed_hashtags() for retrieving followed hashtags v4.10 · Jul 2023 · source · release history

example

  • Retrieve the list of hashtags a specific Instagram profile is following using the new method. from instaloader import Instaloader, Profile loader = Instaloader() profile = Profile.from_username(loader.context, 'instagram') hashtags = profile.get_followed_hashtags() v4.10 · Jul 2023 · source
Download integrity protection shipped Ensure downloaded files are not corrupted during unexpected interruptions by using commit mode. 2 releases · first seen Dec 2018

release

  • The --commit-mode flag is removed; downloaded data is now stored in a temporary file which is renamed when downloading has finished. v4.5 · Aug 2020 · source · release history
  • Adds --commit-mode flag to ensure pictures are not corrupted when Instaloader is unexpectedly interrupted v4.2 · Dec 2018 · source · release history
Rate limiting shipped Controls the frequency of requests to respect API limits, providing feedback when requests are deferred. 2 releases · first seen Aug 2018

release

  • Introduces a more flexible rate controller with adjustable defaults for query rate, allowing easier behavior customization. v4.5 · Aug 2020 · source · release history
  • Show %H:%M formatted time when a request is deferred due to rate controlling v4.0.7 · Aug 2018 · source · release history
Account discovery capabilities shipped Search for profiles, hashtags, and locations, and discover similar accounts to a target profile. 1 release · 1 other source · first seen May 2020

release

  • Adds Profile.get_similar_accounts() method in the instaloader module v4.4 · May 2020 · source · release history

example

  • Discover related profiles using the new API method on a Profile object. import instaloader L = instaloader.Instaloader() profile = instaloader.Profile.from_username(L.context, 'username') similar = profile.get_similar_accounts() v4.4 · May 2020 · source
Sponsored content identification shipped Identify sponsored posts and detect associated sponsor profiles. 1 release · 1 other source · first seen May 2020

release

  • Adds Post.sponsor_users and Post.is_sponsored properties in the instaloader module v4.4 · May 2020 · source · release history

example

  • Identify sponsored content by checking the new API attributes on downloaded posts. import instaloader L = instaloader.Instaloader() for post in instaloader.Post.get_metadata(L.context, post_shortcode): if post.is_sponsored: print(f'Sponsored by: {post.sponsor_users}') v4.4 · May 2020 · source
IGTV video downloading shipped Download IGTV videos from a target profile. 1 release · 1 other source · first seen Mar 2020

release

example

  • Download IGTV videos from a specific profile using the new flag. instaloader --login=myuser --igtv profile_name v4.3 · Mar 2020 · source
Differentiated exit codes shipped Returns specific exit codes for distinct failure modes to enable precise programmatic error handling. 1 release · first seen Jun 2024

release

  • Adds differentiated exit codes for various failure modes instead of a single code v4.12 · Jun 2024 · source · release history
Location-based downloading shipped Download posts associated with specific geographic locations using location IDs. 1 release · first seen Dec 2018

release

  • Supports downloading posts by location using %location_id v4.2 · Dec 2018 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for instaloader, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail instaloader puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

Show

28 entries

  1. October 20261
  2. November 20251
  3. November 20241
  4. August 20241
  5. June 20241
  6. March 20241
  7. July 20231
  8. March 20221
  9. August 20211
  10. March 20211
  11. January 20211
  12. August 20201
  13. June 20201
  14. May 20201
  15. March 20201
  16. February 20191
  17. December 20181
  18. September 20181
  19. August 20181
  20. May 20182
  21. March 20181
  22. February 20181
  23. October 20171
  24. September 20171
  25. August 20171
  26. April 20171
  27. September 20161
    Show

    28 entries

    Project health

    Issue, contributor and maintainer activity in instaloader/instaloader, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 13 +5 vs prior 12 months
    2. Maintainers 1 +0 joined · −0 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed 100% of issues opened, last 12 months
    5. Median time to close 183 days first maintainer reply 38 days
    6. Open backlog 44 of 2,384 issues ever filed
    1. Issues opened / month 3 · 0 communitymaintainers
    2. Open backlog 44
    3. Contributors / month 1
    4. Commits / month 1
    5. Stars 13,394
    Issue themes, last 12 months
    • bugs 39%
    • features 13%
    • questions 24%
    • other 24%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →