Nodes/ComfyUI-InstagramDownloader/Instagram Downloader
ComfyUI Node

Instagram Downloader

This node scrapes Instagram profiles into your ComfyUI output folder

By rohitsainier·Created 2 years ago·Updated 2 years ago· 22
Instagram Downloader
    • download_path
    username
    download_pathdownloads
    profile_pic_onlyfalse

    The name is not a lie. Instagram Downloader is a thin wrapper around the Python library instaloader that pulls every public post from an Instagram profile and drops it into a folder inside your ComfyUI output directory. No API key, no token, no Instagram developer account - it just scrapes the public endpoints the same way the instaloader CLI does, and hands you back a path.

    Why would you want that inside ComfyUI? Because a surprising amount of "real photo" work starts with reference material. You grab a handful of someone's public posts and suddenly you've got inputs for ControlNet depth/pose matching, img2img restyling, face-swap, or a candidate set for a LoRA dataset. The KB's LoRA training essay keeps hammering one line: dataset curation beats every other knob. This node is a (very blunt) curation tool - it gets the raw material into a folder where you can sort it. It's a small one-person MIT pack by Rohit Saini, so temper expectations, but for "I want that account's photos in my graph" it does exactly one job and does it.

    How it works

    Under the hood it creates ComfyUI/output/<download_path>/<username>, then calls instaloader with download_pictures=True, download_videos=True, save_metadata=False. The profile's posts land in that folder, images and videos jumbled together, alongside caption .txt files. That mess is deliberate - the sibling node, Media Organizer, is what tidies it.

    The inputs that matter

    You'll set exactly one of these most of the time:

    • username - the Instagram handle, no @. The node appends it to the folder path, so two usernames never collide.
    • download_path - defaults to downloads, resolved relative to ComfyUI's output directory. You can also pass an absolute path; the join just works out.
    • profile_pic_only - a boolean, default false. Flip it on and you get just the avatar instead of the full post history. Handy for quick identity-reference work.

    The single output, download_path, is a STRING giving the folder it wrote to. Wire it straight into the Media Organizer's input_path.

    Installing it

    Via ComfyUI Manager, search for "Instagram Downloader". Or the manual route:

    cd ComfyUI/custom_nodes
    git clone https://github.com/rohitsainier/ComfyUI-InstagramDownloader
    cd ComfyUI-InstagramDownloader
    pip install -r requirements.txt
    

    Then restart ComfyUI. The only dependency is instaloader>=4.10.0 - no model downloads, no weights, nothing heavy. This is one of those rare nodes that won't fight your Python environment.

    Where people get burned

    The big one isn't the node, it's Instagram. Anonymous scraping has been getting locked down for years, and instaloader increasingly runs into Login required for profiles it used to read freely. There's no login field on this node, so if a profile refuses to download, it's Instagram blocking anonymous access, not a config mistake on your end. Your options are limited: only use public accounts, don't hammer them, and accept that some will just fail.

    Two more things worth knowing before you queue a big profile. First, this node runs synchronously in ComfyUI's server process - downloading a large account will freeze the UI and the whole queue until it finishes. Keep targets small. Second, private profiles never work, full stop. And the README mentions a "Cleanup" node that doesn't exist in the shipped code - there are only two nodes in this pack, so don't go hunting for the third.

    Categoryinstagram

    Inputs (3)

    NameTypeDefaultDescription
    usernameSTRING
    download_pathSTRINGdownloads
    profile_pic_onlyBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    download_pathSTRING