Skip to content

imago get instagram.com/<user>/

imago archive Instagram profiles completely

Drop a profile URL. Walk away. Every photo, video, and carousel slide lands on disk. Watch the profiles you care about and backfill weekly without duplicates. Built for humans and coding agents.

  • One-command login — reads your session from the browser
  • Photos, videos/reels, every carousel slide
  • Watchlist + weekly sync skips what you already have
  • Agent-native: --json, guide, file logs, exit codes
Terminal running imago: 'imago auth login' reads the session from the browser, then 'imago get instagram.com/natgeo' saves photos and videos, ending with 'done · +1571 new · fail=0'.

install + first archive

paru -S imago                    # Arch (AUR) · or a binary from Releases
cargo install --git https://github.com/guitaripod/imago
imago auth login                 # reads your logged-in browser session
imago get https://www.instagram.com/natgeo/
imago watch add natgeo
# cron weekly:
imago watch sync --json

Why imago

Everything on the grid

Images, videos, reels, and full carousel albums. Each asset lands as its own file with a stable key so re-runs never re-download.

Walk away

Auto-resumes interrupted jobs, resumes truncated videos, and waits out soft rate limits. A checkpoint or dead session stops with a clear re-auth message instead of spinning — and the final report tells you exactly how many posts it got.

Watchlist

imago watch add <user> then imago watch sync on a cron. Incremental early-stop when a page is already known; --full when you want a re-scan.

Built for agents

imago guide is the playbook. --json on every command. Logs under $XDG_DATA_HOME/imago/logs. Stable exit codes for scripts and coding agents.

Your session, your disk

imago auth login reads the session straight from your logged-in browser (Chrome, Chromium, Brave, Vivaldi, Edge, Opera) — no devtools copy-paste, no shared cloud, no Meta app review. Media stays in ./downloads/<user>/ on your machine.

Honest CLI

No fake flags. No half-wired config. What the guide says is what the binary does.

Agent contract

Exit codes: 0 ok · 1 usage · 2 auth dead · 3 partial · 10 unexpected

JSON: --json on every command · playbook: imago guide

Logs: $XDG_DATA_HOME/imago/logs/imago.log

FAQ

Is this legal / allowed by Instagram?

imago is a personal archival tool that uses your own logged-in session, the same way a browser does. You are responsible for complying with Instagram’s terms and local law. Don’t run it as a bulk commercial scraper.

How does login work?

Log into Instagram in your browser, then run imago auth login — it reads and decrypts the session cookies from your browser profile automatically (Chrome, Chromium, Brave, Vivaldi, Edge, Opera). No manual copy-paste. On a headless box you can still pass --session-id / --csrf-token by hand.

Why do I need to log in at all?

Anonymous requests only return a profile’s first 12 posts — Instagram gates deeper pagination behind a logged-in session. imago reuses your own session, exactly like your browser does; it never sees your password.

Does it download stories?

Not in v1. Profile grid media only (including reels that appear on the grid). Stories and highlights are a different surface.

What about duplicates?

Disk is truth. Existing shortcode / shortcode_NN files are skipped. Watch sync early-stops when an entire page is already known.