Skip to content

l0z1ch/Ensta

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Ensta - Free Instagram API

PyPI PyPI - Python Version Downloads

Ensta uses a combination of Instagram's Web API & Mobile API making it a reliable choice over other third-party libraries. Also unlike other libraries, ensta always stays up-to-date.

Both authenticated & non-authenticated requests are supported.

Installation

Python 3.10 or later is required.

$ pip install ensta

Supported Actions

Tap on the headings to view code:

Proxy Support
from ensta import Host host = Host(username, password, proxy={"http": "http://1.2.3.4", "https": "https://1.2.3.4"})
Username Password Login
from ensta import Host host = Host(username, password) # Email can also be used
SessionData Login
from ensta import SessionHost # "session_data" is stored in "ensta-session.txt" file by default. # you can also get it using "host.session_data" host = SessionHost(session_data)
2FA Login

Authenticator App

from ensta import Host # The key you got from Instagram when setting up your Authenticator App key = "R65I7XTTHNHTQ2NKMQL36NCWKNUPBSDG" host = Host( username, # or email password, totp_token=key )

SMS Based

No need to configure anything. Ensta will automatically ask for SMS OTP in the runtime.

Upload Photo (Single Post)
from ensta import Host host = Host(username, password) upload = host.get_upload_id("Picture.jpg") host.upload_photo(upload, caption="Travelling πŸŒ†")
Upload Multiple Photos (Single Post)
from ensta import Host host = Host(username, password) upload1 = host.get_upload_id("First.jpg") upload2 = host.get_upload_id("Second.jpg") upload3 = host.get_upload_id("Third.jpg") host.upload_photos([upload1, upload2, upload3], caption="Travelling πŸŒ†")
Upload Reel
from ensta import Host host = Host(username, password) host.upload_reel( video_path="Video.mp4", thumbnail_path="Thumbnail.jpg", caption="Enjoying the winter! β›„" )
Check Username Availability
from ensta import Guest guest = Guest() print(guest.username_availability("theusernameiwant"))
Fetch Profile Data
from ensta import Host host = Host(username, password) profile = host.profile("leomessi") print(profile.full_name) print(profile.biography) print(profile.follower_count)
Username to UserID, and vice versa.
from ensta import Host host = Host(username, password) username = host.get_username(427553890) uid = host.get_uid("leomessi") print(username, uid)
Follow / Unfollow Users
from ensta import Host host = Host(username, password) print(host.follow("leomessi")) print(host.unfollow("leomessi"))
Generate Followers / Followings List
from ensta import Host host = Host(username, password) followers = host.followers("leomessi", count=100) # Want full list? Set count to '0' followings = host.followings("leomessi", count=100) # Want full list? Set count to '0' for user in followers: print(user.username) for user in followings: print(user.username)
Switch Account Type - Public/Private
from ensta import Host host = Host(username, password) print(host.switch_to_public_account()) print(host.switch_to_private_account())
Fetch Someone's Feed
from ensta import Host host = Host(username, password) posts = host.posts("leomessi", 100) # Want full list? Set count to '0' for post in posts: print(post.caption_text) print(post.like_count) 
Add Comment on Posts
from ensta import Host host = Host(username, password) post_id = host.get_post_id("https://www.instagram.com/p/Czr2yLmroCQ/") host.comment("Looks great!", post_id)
Like/Unlike Posts
from ensta import Host host = Host(username, password) post_id = host.get_post_id("https://www.instagram.com/p/Czr2yLmroCQ/") host.like(post_id) host.unlike(post_id)
Fetch Post's Likers
from ensta import Host host = Host(username, password) post_id = host.get_post_id("https://www.instagram.com/p/Czr2yLmroCQ/") likers = host.likers(post_id) for user in likers.users: print(user.username) print(user.profile_picture_url)
Change Profile Picture
from ensta import Mobile mobile = Mobile(username, password) mobile.change_profile_picture("image.jpg")
Edit Biography, Display Name
from ensta import Host host = Host(username, password) host.change_display_name("Lionel Messi") host.change_bio("Athlete")
Fetch Your Email, Gender, Birthday, etc.
from ensta import Host host = Host(username, password) me = host.private_info() print(me.email) print(me.gender) print(me.birthday)

Any missing feature? Please raise an issue.

Direct Messaging

Tap on the headings to view code:

Send Message (Text)
from ensta import Mobile mobile = Mobile(username, password) # Or use email direct = mobile.direct() direct.send_text("Hello", thread_id)
Send Message (Picture)
from ensta import Mobile mobile = Mobile(username, password) # Or use email direct = mobile.direct() media_id = direct.fb_upload_image("image.jpg") direct.send_photo(media_id, thread_id)

We'll implement more features soon.

Basic Usage

Host Class (Authenticated)

Requires login through username & password.

from ensta import Host host = Host(username, password) profile = host.profile("leomessi") print(profile.biography)
Guest Class (Non-Authenticated)

Doesn't require login, but has limited features.

from ensta import Guest guest = Guest() profile = guest.profile("leomessi") print(profile.biography)

Learn to use ensta

Discord Community

Ask questions, discuss upcoming features and meet other developers.

Support Me

If you wish to support my work, please consider visiting this link:

PayPal: @gitdiezo

Contributors

Contributors

Ensta-Powered Projects

  1. Mr. Tornado: An Instagram account which automatically updates it's biography to reflect the current weekday. (IST Timezone)
  2. Olgu's Ensta REST API: An unofficial Instagram REST API.

Legal

This is a third party library and not associated with Instagram. We're strictly against spam. You are liable for all the actions you take.

About

πŸ”₯ Fastest & Powerful Instagram Python API 2024

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%