id = "instaloader"
name = "Instaloader"
homepage = "https://instaloader.github.io/"
description = "A tool to download pictures and metadata from Instagram."
executables = ["instaloader"]
[dotfiles]
paths = ["[configHome]/instaloader/latest-stamps.ini"]
exclude = []
secret = ["[configHome]/instaloader/session-*"]
side_effect = false
[commands]
format = 1
label = "Download Instagram content"
description = "Download posts and optional extras from profiles or hashtags. Session handling, filename patterns and passwords are outside this form."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.source]]
id = "help"
kind = "manual"
url = "https://instaloader.github.io/cli-options.html"
revision = "2026-10-27"
evidence = """
--no-pictures
--no-videos, -V
--geotags, -G
--comments, -C
--stories, -s
--highlights
--tagged
--reels
--igtv
--fast-update, -F
--post-filter filter, --only-if filter
--count COUNT, -c
--login YOUR-USERNAME, -l YOUR-USERNAME
--quiet, -q
--no-metadata-json
--no-captions
"""
[[commands.field]]
id = "targets"
label = "Profiles, hashtags or posts"
description = "Profile names, #hashtags, :feed, @following, -shortcode"
type = "string"
position = 0
multiple = true
min = 1
sources = ["help"]
[[commands.field]]
id = "login"
label = "Login username"
type = "string"
option = ["--login", "-l"]
sources = ["help"]
[[commands.field]]
id = "stories"
label = "Stories"
type = "boolean"
option = ["--stories", "-s"]
sources = ["help"]
[[commands.field]]
id = "highlights"
label = "Highlights"
type = "boolean"
option = ["--highlights"]
sources = ["help"]
[[commands.field]]
id = "tagged"
label = "Tagged posts"
type = "boolean"
option = ["--tagged"]
sources = ["help"]
[[commands.field]]
id = "reels"
label = "Reels"
type = "boolean"
option = ["--reels"]
sources = ["help"]
[[commands.field]]
id = "igtv"
label = "IGTV videos"
type = "boolean"
option = ["--igtv"]
sources = ["help"]
[[commands.field]]
id = "fast_update"
label = "Stop at first already-downloaded post"
type = "boolean"
option = ["--fast-update", "-F"]
sources = ["help"]
[[commands.field]]
id = "count"
label = "Max posts"
type = "integer"
option = ["--count", "-c"]
sources = ["help"]
[[commands.field]]
id = "post_filter"
label = "Post filter expression"
type = "string"
option = ["--post-filter", "--only-if"]
sources = ["help"]
[[commands.field]]
id = "no_pictures"
label = "Skip pictures"
type = "boolean"
option = ["--no-pictures"]
sources = ["help"]
[[commands.field]]
id = "no_videos"
label = "Skip videos"
type = "boolean"
option = ["--no-videos", "-V"]
sources = ["help"]
[[commands.field]]
id = "geotags"
label = "Download geotags"
type = "boolean"
option = ["--geotags", "-G"]
sources = ["help"]
[[commands.field]]
id = "comments"
label = "Download comments"
type = "boolean"
option = ["--comments", "-C"]
sources = ["help"]
[[commands.field]]
id = "no_captions"
label = "Skip captions"
type = "boolean"
option = ["--no-captions"]
sources = ["help"]
[[commands.field]]
id = "quiet"
label = "Quiet"
type = "boolean"
option = ["--quiet", "-q"]
sources = ["help"]
[[commands.task]]
id = "profile"
label = "Download a profile"
fields = ["targets", "fast_update"]
required = ["targets"]
set = { fast_update = [true] }
[[commands.task]]
id = "profile_extras"
label = "Profile with stories and highlights"
fields = ["targets", "login", "stories", "highlights"]
required = ["targets", "login"]
set = { stories = [true], highlights = [true] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["targets", "login", "stories", "highlights", "tagged", "reels"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["igtv", "fast_update", "count", "post_filter", "no_pictures", "no_videos", "geotags", "comments", "no_captions", "quiet"]