Scrape entire Instagram profiles with concurrent downloads, smart rate limiting, and zero duplicates.
# Install with Homebrew
brew tap marcusziade/tap
brew install igscraper
# Run
igscraper username
╭──────────────────────────────────────────────╮
│ ◆ IGScraper v2.0.0 │
╰──────────────────────────────────────────────╯
▸ Scraping: @marcusziade
▸ Profile: 1,337 photos • Public
Progress
╔══════════════════════════════════════════╗
║████████████████████████████████░░░░░░░░░░║
╚══════════════════════════════════════════╝ 78%
┌─────────────────┬─────────────────────────┐
│ 1044/1,337 photos │
│ Speed │ 25.1 photos/min │
│ Time left │ 11m 41s │
│ Workers │ 5 concurrent │
│ Size │ 2.61 GB │
└─────────────────┴─────────────────────────┘
Downloaded │ Status: ● Downloading high quality originals...
Built for nerds who need reliable Instagram data extraction
3-5x faster with configurable worker pools
Avoid bans with intelligent request throttling
Checkpoint system for interrupted downloads
Extract your Instagram session cookies from browser DevTools
IGSCRAPER_SESSION_ID="your_session"
IGSCRAPER_CSRF_TOKEN="your_token"
Set up via .env, YAML, or command line flags
download:
concurrent: 5
timeout: 30s
Download with style using the TUI or simple progress bar
igscraper --tui username
# or quiet mode
igscraper -q username
Multiple ways to configure:
# .igscraper.yaml
download:
concurrent_downloads: 5
rate_limit:
requests_per_minute: 60