InstaLoader
1 min read

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

sh
pip install instaloader
# or
pipx install instaloader

Usage

sh
# 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)

sh
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:

sh
--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