First, load the Rinstapkg package and log in. There are two ways to authenticate:
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. Note that the OAuth credentials will be stored in locally cached file entitled “.httr-oauth-Rinstapkg” in the current working directory.
If you do not have an approved app, you can still use this package by providing your username and password.
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!
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>
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,198 x 9
#> pk username full_name is_private profile_pic_url profile_pic_id
#> <dbl> <chr> <chr> <lgl> <chr> <chr>
#> 1 2.07e 9 leasmami LeAs MaMi TRUE https://sconte… 1830052145585…
#> 2 8.59e 9 _rodrig… SRTA. RO… FALSE https://sconte… 2049594173313…
#> 3 7.16e 9 ramfam_… 3shit💰Da… FALSE https://sconte… 1720535502326…
#> 4 4.22e 9 smarck_… Marco Pe… FALSE https://sconte… 1992154923319…
#> 5 1.79e 8 valeria… VALERIA … FALSE https://sconte… 2048321227919…
#> 6 1.47e10 amababa… amababa FALSE https://sconte… 2063841347500…
#> 7 1.47e10 avocado… Avocado … FALSE https://sconte… 2064066587381…
#> 8 8.51e 9 holy_pl… "" FALSE https://sconte… 2036652619575…
#> 9 4.30e 9 chavaa_… Chava Gu… FALSE https://sconte… 2059168557461…
#> 10 2.54e 9 jb_car_… FFM Cars… FALSE https://sconte… 1431378289334…
#> # … with 2,188 more rows, and 3 more variables: is_verified <lgl>,
#> # has_anonymous_profile_picture <lgl>, latest_reel_media <int>
In the example above you’ll notice that we didn’t retrieve all 100M+ followers that Justin Bieber has. By default the function only returns the top 10 pages of followers, but you can set the max_pages
argument equal to Inf
to return all of them. Caution: This might take awhile!
With the ig_get_following()
function you can retrieve a tbl_df
of all the users that a particular user is following. For example, Justin Bieber follows ~100 users. Who are those lucky few?
following_results <- ig_get_following(bieber_user_id)
following_results
#> # A tibble: 178 x 10
#> pk username full_name is_private profile_pic_url profile_pic_id
#> <dbl> <chr> <chr> <lgl> <chr> <chr>
#> 1 6.96e 9 redcarp… 💕 ZaZa 💕… FALSE https://sconte… 2035788434706…
#> 2 2.16e 8 officia… Brandon … FALSE https://sconte… 2027136821162…
#> 3 2.91e 7 nickcan… NICK CAN… FALSE https://sconte… 1896844691930…
#> 4 4.28e 7 bertsho… Bert Wei… FALSE https://sconte… <NA>
#> 5 5.50e 8 benjami… Business… FALSE https://sconte… 2028127917154…
#> 6 1.89e 8 nickjon… Nick Jon… FALSE https://sconte… 2041658194653…
#> 7 8.01e 9 lalalal… LISA FALSE https://sconte… 2017225651148…
#> 8 1.86e 8 teddysp… Ed Sheer… FALSE https://sconte… 2050041949683…
#> 9 1.11e10 hdwg1 "" TRUE https://sconte… <NA>
#> 10 2.98e 7 kriskli… Kristin … FALSE https://sconte… 2061217361650…
#> # … with 168 more rows, and 4 more variables: is_verified <lgl>,
#> # has_anonymous_profile_picture <lgl>, latest_reel_media <int>,
#> # is_favorite <lgl>