InstaLoader

CLI tool to download Instagram posts, stories, reels, profiles, and metadata. Written in Python. Can download public profiles without login; private profiles require authentication.

Install

pip install instaloader
# or
pipx install instaloader

Usage

# Download a public profile (posts + metadata)
instaloader <username>
 
# Download a single post by URL
instaloader -- -https://www.instagram.com/p/SHORTCODE/
 
# Stories (requires login)
instaloader --login <your_username> --stories <username>
 
# Highlights
instaloader --login <your_username> --highlights <username>
 
# Reels only
instaloader --post-filter "is_video" <username>
 
# Tagged posts
instaloader --tagged <username>
 
# Save to a specific directory
instaloader --dirname-pattern "/data/instagram/{profile}" <username>
 
# Only new posts (skip already downloaded)
instaloader --fast-update <username>

Login (for private profiles / stories)

instaloader --login <your_username>
# Saves session to ~/.config/instaloader/session-<username>
# Subsequent runs reuse the session automatically

File naming

Default pattern: {date_utc}_UTC_{shortcode} for posts.

Customizable with --filename-pattern:

--filename-pattern "{date:%Y-%m-%d}_{shortcode}"

Metadata

Each post downloads:

  • Image/video file
  • .json.xz with post metadata (caption, likes, comments, etc.)
  • .txt with caption