Skip to main content

Python Instagram API SDK

Project description

Python Instagram Scraper API SDK


Library - wrapper over instagrapi scraper API.

Used by API: https://rapidapi.com/fama-official-instagram-scraper/api/instagram-scraper-api2

This library provides basic data retrieval features with instagram: Users, Posts, Comments, etc. Read more below.


Warning:

It’s just a wrapper on the API. If the API stops working, the library stops working.


Quick Access:


Get Started

Available features:

  • Get User info
  • Get User medias with pagination
  • Get User Followers with pagination
  • Get Media Post info
  • Get Media Post Comments with pagination
  • Get Media Posts by Tagged user
  • Get Media Posts by Hashtag
  • Get Similar Users
  • Search Users, Hashtags and Places
  • Get Media Post Likes with pagination

Coming soon:

  • Get User Following with pagination
  • Get User Stories
  • Get Story Info
  • Get User Highlights

Installation:

Pre-requirements:

  • Python >= 3.9v

With pip (https://pypi.org/project/scrapify-ig/):

pip install scrapify-ig

Usage:

Use the client object to use all possible library functions. Create client object:

from scrapify_ig import Client

TOKEN = "<RapidAPI Token>"

client = Client(token=TOKEN)

Now you are ready to use the library.

Get user information:

See examples/user_info.md for more details

user_info = client.get_user_info(username_or_id_or_url="nike", include_about=False, url_embed_safe=False)

# Returns: types.User instance

Get user media posts:

See examples/user_medias.md for more details

from scrapify_ig import types, exceptions

user_medias_chunk: types.MediaPostsChunk = client.get_user_medias_chunk(
    username_or_id_or_url="nike",
    url_embed_safe=False
)

# Returns: types.MediaPostsChunk.
# Posts are available in the data field: user_medias.data.

# To get the next chank, call again get_user_medias_chunk again and specify the pagination_token argument. 
# pagination_token is the object field types.MediaPostsChunk. 
# Example:

next_user_medias_chunk: types.MediaPostsChunk = client.get_user_medias_chunk(
    username_or_id_or_url="nike", 
    pagination_token=user_medias_chunk.pagination_token
)

# OR:
# You can use the interface .next_chunk:

next_users_medias_chunk: types.MediaPostsChunk = user_medias_chunk.next_chunk()

# Warning: 
# .next_chunk throws exceptions.NoNextPageError an error if there is no next page. 
# It is recommended to use first check that there is the following page. 
# Example:

if user_medias_chunk.has_next_chunk():
    next_users_medias_chunk: types.MediaPostsChunk = user_medias_chunk.next_chunk()

# OR:

try:
    next_users_medias_chunk: types.MediaPostsChunk = user_medias_chunk.next_chunk()
except exceptions.NoNextPageError:
    # do something
    pass

Get user followers:

from scrapify_ig import types

username = "nike"
user_followers_chunk: types.FollowersChunk = client.get_followers_chunk(username)

next_user_followers_chunk: types.FollowersChunk = client.get_followers_chunk(
    username, 
    pagination_token=user_followers_chunk.pagination_token
)

# Also works .next_chunk interface:

next_user_followers_chunk: types.FollowersChunk = user_followers_chunk.next_chunk()

Get Media Post info:

See examples/media_info.md for more details

from scrapify_ig import types

media_identifier = "Cx8yen-uS-d"  # media code, id or url

media_info: types.MediaPost = client.get_media_info(
    code_or_id_or_url=media_identifier,
    url_embed_safe=False
)

Get Media Post Comments:

from scrapify_ig import types, exceptions

media_identifier = "Cx8yen-uS-d"  # media code, id or url
media_comments_chunk: types.CommentsChunk = client.get_media_comments_chunk(
    code_or_id_or_url=media_identifier
)

# Also works .next_chunk interface:
if media_comments_chunk.has_next_chunk():
    next_media_comments_chunk: types.CommentsChunk = media_comments_chunk.next_chunk()


# Note:
# Comments have answers to comments. There are no answers to comments. 
# You need to call client.get_comment_thread_chunk to get answers to a specific comment.
# Example:

some_comment_with_child: types.CommentsChunkItem = media_comments_chunk.data.items[6]
child_comments_chunk: types.CommentsThreadChunk = some_comment_with_child.get_comment_thread_chunk(client)

# OR:
child_comments_chunk: types.CommentsThreadChunk = client.get_comment_thread_chunk(
    comment_id=some_comment_with_child.id
)

# Warning:
# If there is no child comment, the HTTPNotFoundError exception will be discarded
# use the .has_thread_comments method to prevent the error:

if some_comment_with_child.has_thread_comments():
    child_comments_chunk: types.CommentsThreadChunk = client.get_comment_thread_chunk(
        comment_id=some_comment_with_child.id
    )

# OR:
try:
    child_comments_chunk: types.CommentsThreadChunk = client.get_comment_thread_chunk(
        comment_id=some_comment_with_child.id
    )
except exceptions.HTTPNotFoundError:
    # do something
    pass

Get Media Posts by Tagged user:

from scrapify_ig import types

user_identifier = "nike"

tagged_posts_chunk: types.TaggedMediaPostsChunk = client.get_tagged_medias_chunk(
    username_or_id_or_url=user_identifier
)

# Also works .next_chunk interface:
if tagged_posts_chunk.has_next_chunk():
    next_tagged_posts_chunk: types.TaggedMediaPostsChunk = tagged_posts_chunk.next_chunk()

# OR:
next_tagged_posts_chunk: types.TaggedMediaPostsChunk = client.get_tagged_medias_chunk(
    username_or_id_or_url=user_identifier,
    pagination_token=tagged_posts_chunk.pagination_token
)

Get Media Posts by Hashtag:

from scrapify_ig import types

hashtag = "nike"

hashtag_medias_chunk: types.MediaPostsHashtagChunk = client.get_medias_by_hashtag_chunk(
    hashtag=hashtag
)

# Also works .next_chunk interface:
if hashtag_medias_chunk.has_next_chunk():
    next_hashtag_medias_chunk: types.MediaPostsHashtagChunk = hashtag_medias_chunk.next_chunk()

# OR:
next_hashtag_medias_chunk: types.MediaPostsHashtagChunk = client.get_medias_by_hashtag_chunk(
    hashtag=hashtag,
    pagination_token=hashtag_medias_chunk.pagination_token
)

Get Similar Users:

from scrapify_ig import types

user_identifier = "nike"

similar_accounts: types.SimilarAccounts = client.get_similar_accounts(
    username_or_id_or_url=user_identifier
)

# Note:
# pagination not allowed

Search Users, Hashtags and Places:

from scrapify_ig import types

search_query = "London"

search_result: types.SearchResult = client.search(search_query=search_query)

# Note:
# pagination not allowed

Get Media Post Likes with pagination:

from scrapify_ig import types

media_identifier = "Cx8yen-uS-d"  # media code, id or url

media_likes_chunk: types.LikesMediaPostsChunk = client.get_media_likes_chunk(
    code_or_id_or_url=media_identifier
)


# Also works .next_chunk interface:
if media_likes_chunk.has_next_chunk():
    media_likes_chunk: types.LikesMediaPostsChunk = media_likes_chunk.next_chunk()

Types:

  • user scrapify_ig.types for better typing. Also in this module you can see all available fields for each object

Errors and Issues:

If you notice an error or problem, please write about it here https://gitlab.com/oleksii.stulen.public/scrapify-ig/issues. Describe the problem as precisely as possible. What did you do, what did you want to get, how did you do it and so on. Thank you!


Author: Oleksii Stulen

Email: oleksii.stulen.workspace@gmail.com

Project details


Download files

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

Source Distribution

scrapify_ig-1.7.1.tar.gz (17.8 kB view details)

Uploaded Source

Built Distribution

scrapify_ig-1.7.1-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

Details for the file scrapify_ig-1.7.1.tar.gz.

File metadata

  • Download URL: scrapify_ig-1.7.1.tar.gz
  • Upload date:
  • Size: 17.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.11.5 Linux/6.5.5-1-MANJARO

File hashes

Hashes for scrapify_ig-1.7.1.tar.gz
Algorithm Hash digest
SHA256 55caf2f35d3193e422577754d27af509d2c28a20179db66d0d07c18dc13ec081
MD5 3731ece95a12643ea95814b2ee0f62c4
BLAKE2b-256 62ea83790c55549256caabdbe26f192a29d4bca4dd02a996c1bc4987eff3e08b

See more details on using hashes here.

File details

Details for the file scrapify_ig-1.7.1-py3-none-any.whl.

File metadata

  • Download URL: scrapify_ig-1.7.1-py3-none-any.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.11.5 Linux/6.5.5-1-MANJARO

File hashes

Hashes for scrapify_ig-1.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 eb389343b34896278f1c3b4d44a404d51b43be9397be2d9d25985eb59657a053
MD5 c9b42e624de6fa170baf93b55eebea1a
BLAKE2b-256 dd822b6d02946f7de8ae46eb39f8136e7b642fc77989474b90716c499080af07

See more details on using hashes here.

Supported by

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