Skip to main content
Donate to the Python Software Foundation or Purchase a PyCharm License to Benefit the PSF! Donate Now

Instagram Python Bot

Project description ๐Ÿค– ๐ŸŒŸ is an extremely light instagram bot that uses the undocumented Web API. Unlike other bots, does not require Selenium or a WebDriver. Instead, it interacts with the API over simple HTTP Requests. It runs on most systems, including Raspberry Pi.

Donate Chat on Telegram Latest version on Supported Python versions


  • Python v3.6 or greater
  • Pip v18 or greater

Quick Start ๐Ÿš€

  • Make sure you have Python 3.6 or above installed

    • python3 --version

On Windows you might have to use python without the version (3) suffix. Experienced users should use virtualenv.

When you first run instabot-py a file called config.ini will be created in your current directory, along with an SQLite DB, and an error.log.

After the initial configuration, you can manually edit config.ini with a text editor. Restart the bot for changes to take effect.

The %username%.db file contains a record of the posts the bot has liked, and the users it has followed/unfollowed.

The %username%.session file stores your session with Instagram to avoid re-logins each time you start the bot.

Upgrade โฌ†๏ธ

  • python3 -m pip install instabot-py --no-cache-dir --upgrade

Install methods

Recommended: From PyPi: (Stable)

  • python3 -m pip install instabot-py

From sources: (Bleeding edge)

  • python3 -m pip install git+


Parameter Type Description Default value
login str Your instagram username
password str Your instagram password
start_at_h int Start program at the hour 0
start_at_m int Start program at the min 0
end_at_h int End program at the hour 23
end_at_m int End program at the min 59
database_name str change the name of database file to use multiple account "follows_db.db"
session_file str change the name of session file so to avoid having to login every time. Set False to disable. "username.session"
like_per_day int Number of photos to like per day (over 1000 may cause throttling) 1000
media_max_like int Maximum number of likes on photos to like (set to 0 to disable) 0
media_min_like int Minimum number of likes on photos to like (set to 0 to disable) 0
follow_per_day int Users to follow per day 0
follow_time int Seconds to wait before unfollowing 5 * 60 * 60
user_min_follow int Check user before following them if they have X minimum of followers. Set 0 to disable 0
user_max_follow int Check user before following them if they have X maximum of followers. Set 0 to disable 0
follow_time_enabled bool Whether to wait seconds set in follow_time before unfollowing True
unfollow_per_day int Users to unfollow per day 0
unfollow_recent_feed bool If enabled, will populate database with users from recent feed and unfollow if they meet the conditions. Disable if you only want the bot to unfollow people it has previously followed. True
unlike_per_day int Number of media to unlike that the bot has previously liked. Set to 0 to disable. 0
time_till_unlike int How long to wait after liking media before unliking them. 3 * 24 * 60 * 60 (3 days)
comments_per_day int Comments to post per day 0
comment_list [[str]] List of word lists for comment generation. @username@ will be replaced by the media owner's username [['this', 'your'], ['photo', 'picture', 'pic', 'shot'], ['is', 'looks', 'is really'], ['great', 'super', 'good'], ['.', '...', '!', '!!']]
tag_list [str] Tags to use for finding posts by hasthag or location(l:locationid from e.g. ['cat', 'car', 'dog', 'l:212999109']
tag_blacklist [str] Tags to ignore when liking posts []
user_blacklist {str: str} Users whose posts to ignore. Example: {"username": "", "username2": ""} type only the key and leave value empty -- it will be populated with userids on startup. {}
max_like_for_one_tag int How many media of a given tag to like at once (out of 21) 5
unfollow_break_min int Minimum seconds to break between unfollows 15
unfollow_break_max int Maximum seconds to break between unfollows 30
log_mod int Logging target (0 log to console, 1 log to file, 2 no log.) 0
proxy str Access instagram through a proxy. (host:port or user:password@host:port)
unfollow_not_following bool Unfollow Condition: Unfollow those who do not follow you back True
unfollow_inactive bool Unfollow Condition: Unfollow those who have not posted in a while (inactive) True
unfollow_probably_fake bool Unfollow Condition: Unfollow accounts which skewed follow/follower ratio (probably fake) True
unfollow_selebgram bool Unfollow Condition: Unfollow (celebrity) accounts with too many followers and not enough following False
unfollow_everyone bool Unfollow Condition: Will unfollow everyone in unfollow queue (wildcard condition) False


Method Description
get_media_id_by_tag(tag) Add photos with a given tag to like queue
like_all_exist_media(num) Like some number of media in queue
auto_mod() Automatically loop through tags and like photos
unlike(id) Unlike media, given its ID.
comment(id, comment) Write a comment on the media with a given ID.
follow(id) Follow the user with the given ID.
unfollow(id) Unfollow the user with the given ID.
logout() Log out of Instagram.


Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
instabot_py-0.4.7-py3-none-any.whl (37.6 kB) Copy SHA256 hash SHA256 Wheel py3
instabot-py-0.4.7.tar.gz (32.6 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page