Rinstapkg
Rinstapkg is an R package that connects to the Instagram API using tidy principles. Rinstapkg is short for the Real Instagram Package. With this package you can like, comment, follow, and slide into some DMs just like the real Instagram. You can also get tons of feed data: user feeds, timeline feeds, location feeds and more! All this comes without the need to register for an application. Here are some of the package highlights:
- OAuth 2.0 (Single Sign On) and Basic (Username-Password)
Authentication methods (
ig_auth()
) - Retrieve Feeds of different types:
ig_my_timeline()
,ig_get_user_feed()
,ig_get_hashtag_feed()
, and more!
- Retrieve Users, Tags, Comments, and Perform Searches:
ig_get_followers()
,ig_get_user_tags()
,ig_get_media_comments()
,ig_search_users()
, etc.
NOTE: With great power comes great responsibility. Use of this package means that you will not use it to spam, harass, or perform other nefarious acts.
Table of Contents
Installation
# install from CRAN
install.packages("Rinstapkg")
# get the latest version available on GitHub using the devtools package
# install.packages("devtools")
devtools::install_github("eric88tchong/Rinstapkg")
If you encounter a bug or issue, please file a minimal reproducible example on GitHub.
Usage
Authenticate
First, load the Rinstapkg package and log in. There are two ways to authenticate:
- OAuth 2.0
- Basic Username-Password
It is recommended to use OAuth 2.0 if you apply for and are approved for an Instagram App. This way multiple users can use your app without having to explicity share their credentials with you. If you do not have an approved app, you can still use this package by providing your username and password.
library(Rinstapkg)
# Using OAuth 2.0 authentication
ig_auth()
# Using Basic Username-Password authentication
ig_auth(username = "YOUR_USERNAME_OR_EMAIL_HERE",
password = "YOUR_PASSWORD_HERE")
After logging in with ig_auth()
, you can check your connectivity by
looking at the information returned about your timeline
(ig_my_timeline()
), inbox (ig_my_inbox()
), or recent activity
(ig_my_recent_activity()
). It should be information about you!
Timeline Feed
A simple function to start with is verifying that you can retrieve your
timeline as it would appear in the Instagramm app or online. This
function returns data that would appear in the authenticated user’s
timeline feed. By default, the data is returned as a tidy tbl_df
where
each row represents one post from the feed. If you prefer to work with a
list format, then just specify return_df=FALSE
as an argument.
timeline_results <- ig_my_timeline()
timeline_results
#> # A tibble: 16 x 37
#> taken_at pk id device_timestamp media_type code
#> <int> <dbl> <chr> <dbl> <int> <chr>
#> 1 1.56e9 2.03e18 2034… 155676208810893 1 Bw8V…
#> 2 1.56e9 2.02e18 2024… 155552010984491 1 BwXT…
#> 3 1.55e9 2.01e18 2012… 1554147789723231 1 Bvua…
#> 4 1.55e9 1.99e18 1994… 1551925346931404 1 BusL…
#> 5 1.55e9 1.99e18 1991… 1551641044183919 1 Bujt…
#> 6 1.55e9 1.99e18 1985… 1550918831604424 1 BuOL…
#> 7 1.55e9 1.98e18 1982… 1550540314361522 1 BuC6…
#> 8 1.55e9 1.98e18 1981… 155045410572131 1 BuAV…
#> 9 1.55e9 1.98e18 1981… 1550455167737230 1 BuAW…
#> 10 1.55e9 1.98e18 1976… 1549857235614429 1 Btui…
#> 11 1.55e9 1.97e18 1973… 1549464013913359 1 Bti0…
#> 12 1.55e9 1.97e18 1972… 1549402375783967 1 Btg_…
#> 13 1.55e9 1.97e18 1968… 1548890866357063 1 BtRv…
#> 14 1.55e9 1.97e18 1969… 1548970299424940 1 BtUG…
#> 15 1.55e9 1.97e18 1969… 1548961006833604 1 BtT0…
#> 16 1.55e9 1.97e18 1969… 1548955131255990 1 BtTp…
#> # … with 31 more variables: client_cache_key <chr>, filter_type <int>,
#> # image_versions2 <list>, original_width <int>, original_height <int>,
#> # location <list>, lat <dbl>, lng <dbl>, user <list>,
#> # can_viewer_reshare <lgl>, caption_is_edited <lgl>,
#> # direct_reply_to_author_enabled <lgl>, comment_likes_enabled <lgl>,
#> # comment_threading_enabled <lgl>, has_more_comments <lgl>,
#> # max_num_visible_preview_comments <int>,
#> # can_view_more_preview_comments <lgl>, comment_count <int>,
#> # inline_composer_display_condition <chr>, like_count <int>,
#> # has_liked <lgl>, likers <list>, photo_of_you <lgl>, caption <list>,
#> # can_viewer_save <lgl>, organic_tracking_token <chr>, preview <chr>,
#> # next_max_id <dbl>, preview_comments <list>, usertags <list>,
#> # has_viewer_saved <lgl>
Get Followers
With the ig_get_followers()
function you can retrieve a tbl_df
of
all the users that follow a particular user. Just provide the user_id
of the account whose followers you would like to get. NOTE: The
Instagram APIs use Ids to retrieve information so instead of giving the
account’s username (typically starting with an @symbol), you need to
first grab the user_id
of that account using the username, then supply
it to the ig_get_followers()
function.
# Get Justin's Biebers beliebers!
# Side Note: A belieber is a HUGE Justin Bieber fan.
bieber_user_id <- ig_get_user_id("justinbieber")
follower_results <- ig_get_followers(bieber_user_id)
follower_results
#> # A tibble: 2,196 x 9
#> pk username full_name is_private profile_pic_url is_verified
#> <dbl> <chr> <chr> <lgl> <chr> <lgl>
#> 1 1.42e10 joaooos… j@ TRUE https://instag… FALSE
#> 2 1.41e10 shevele… Шевелев … FALSE https://sconte… FALSE
#> 3 7.16e 9 microbi… Ashish D… FALSE https://sconte… FALSE
#> 4 6.95e 9 __its_p…