Skip to main content

🔥 Fastest & Simplest Python Package For Instagram Automation

Project description

Ensta - Free Instagram API

PyPI PyPI - Python Version Downloads

Instagram

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)
Block/Unblock User
from ensta import Mobile

mobile = Mobile(username, password)

mobile.block(123456789)  # Use UserID
mobile.unblock(123456789)  # Use UserID

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.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

ensta-5.1.5.tar.gz (36.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ensta-5.1.5-py3-none-any.whl (44.0 kB view details)

Uploaded Python 3

File details

Details for the file ensta-5.1.5.tar.gz.

File metadata

  • Download URL: ensta-5.1.5.tar.gz
  • Upload date:
  • Size: 36.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for ensta-5.1.5.tar.gz
Algorithm Hash digest
SHA256 7d11780ec95de5bfb1edd6ff948026a7aeff4b1a5f51c7fab38f3df53b84322e
MD5 66c9ae5c001368f35b9f10a313ab2f7d
BLAKE2b-256 e0c74d017e8ec9f29a75cd2c35ef5bfcce1e59818ff9ceed38db91f0a447cc77

See more details on using hashes here.

File details

Details for the file ensta-5.1.5-py3-none-any.whl.

File metadata

  • Download URL: ensta-5.1.5-py3-none-any.whl
  • Upload date:
  • Size: 44.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for ensta-5.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 c3fba5e539db826bba6920921ac0cf6e0c24e281ef8b99dfc2fa1c79500e684f
MD5 df52d95a5c2569fe4880b9e0d4a26e81
BLAKE2b-256 45ae5891baa01d07b79684d1265a3864525edf8c0f6868b8e6389b2e8b568a8b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page