Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Retrieving more than 150 Instagram comments

The Problem

I would like to be able view all of the comments on any given piece of Instagram media, even if the media has over 150 comments. As of now, it is seemingly impossible to view more than the most recent 20 comments on a piece of media on the Instagram site and if one uses either the Instagram API Console or the Instagram API Libraries, the most recent 150 comments are returned with no options for pagination or viewing addition comments.

What I Have Tried

I first, of course, tried the documented media comment query in both the provided console and in my own environment. In both cases, a maximum of 150 comments were returned. Stumped, I began looking for more information online.

Having read over the Instagram API Documentation thoroughly, tested various endpoints in the Instagram API Console, and read various StackOverflow questions in the Instagram tag and Instagram API Google Group questions on several Instagram topics, I wondered if there was a chance of something being undocumented that I could try.

The user recent media endpoint documentation includes parameters for max_id and max_timestamp that allow for paging through the most recent media for any given user by retrieving the media that comes before said max_id or max_timestamp. Since each comment comes with created_time and id attributes, I attempted to add the parameters for max_id and max_timestamp (both on their own and together) for various comment IDs and timestamps in an attempt to page through comments. None of my attempts worked.

I am now at a standstill unless someone has another suggestion.

Specific Example

Using the Instagram API Console, I took the following steps in attempt to get all of the comments for this photo.

  1. Authenticated myself for an OAuth2 token
  2. Ran a user search query for coltonlhaynes to obtain the user id: 9610843
  3. Ran a user recent media query for user id: 9610843 to obtain the most recent media
  4. Gathered information about the most recent media (the above linked photo)
    • media id: 698057751201132903_9610843
    • comment count: 1375
  5. Ran a media comment query for media id: 698057751201132903_9610843 to obtain most recent comments
  6. Gathered information about the least recent comment
    • created time: 1397460230
    • comment id: 698269477955776593
  7. Ran a media comment query for media id: 698057751201132903_9610843 with the following additional query parameter strings in attempt to page through comments, but received the same results as step #6
    • ?max_timestamp=1397460230
    • ?max_id=698269477955776593
    • ?max_timestamp=1397460230&max_id=698269477955776593
    • ?max_id=698269477955776593&max_timestamp=1397460230

Please Note

To my knowledge, there is no solution to this issue, but since the Instagram Development Team has stated that they will no longer be monitoring the Google Group and will be monitoring StackOverflow instead, I'm putting this here.

like image 392
Ally Avatar asked Apr 14 '14 20:04

Ally


People also ask

Is there a limit on Instagram comments?

Instagram Comments limit It is about 180 to 200 per day. Don't post the same comment over and over. Instagram recognizes duplicate comments, and it would punish your account for what you did. And don't leave emojis without text as a comment, they look like spam.

Why can't I load all comments on Instagram?

You're on Airplane Mode or have no internet connection. The post has had commenting turned off, or limited to selected people. Instagram is down (it's rare, but you can check here). You are over-engaging (likes, comments, follows, unfollows).

Why does Instagram limit my comments?

You are over-engaging (likes, comments, follows, unfollows). You included more than 5 @ mentions in a single comment. You included more than 30 #hashtags on a single post. You posted multiple, duplicate comments (including emoji).


2 Answers

Ok, This is going to be a very "Hacky" solution, and I am not currently setup to do this myself (due to lack of ADSL at home) but I can provide a step by step guide of how I would approach this issue.

First of all you will need a tool called "Charles Web Debuging Proxy"

There is a tutorial on the site on how to enable "SSL debugging" in charles, (which will require you to install a new "root certificate" on your mobile device, to trick it into thinking that https transactions signed by charles are actually signed by instagram.com )

Now Set your mobile device to route all requests through said proxy ( which will have to be installed on your local wi-fi network.)

go to https://www.google.com and check that charles is logging both requests and responses.

Once this is all setup correctly then you can take a look at the API calls which the instagram app itself uses to generate said comment pages.

like image 165
Damian Nikodem Avatar answered Sep 22 '22 03:09

Damian Nikodem


The generic answer here is "no, that's not possible via regular endpoints".

Instagram updated Rate Limits (after Nov 17, 2015). All rate limits on the Instagram Platform are controlled separately for each access token, and on a sliding 1-hour window. Live apps have higher rate limits than apps in Sandbox Mode.

Which state next limitations in global context:

Global Rate Limits

Global rate limits are applied inclusive of all API calls made by an app per access token over the 1-hour sliding window, regardless of the particular endpoint. Rate limits also apply to invalid or malformed requests.

  • Sandbox RATE LIMIT: 500 / hour
  • Live RATE LIMIT: 5000 / hour

Plus separately limitations for comments endpoints:

Endpoint-Specific Rate Limits

Endpoints used to publish (POST or DELETE) have rate limits that are applied on an per-endpoint basis. Any calls made to these endpoints by your OAuth Client are also counted towards the global rate limits noted above.

  • Sandbox /media/media-id/comments: 30 / hour
  • Live /media/media-id/comments: 60 / hour

If your app exceeds any of these rate limits, you will receive a response with an HTTP response code of 429 (Too Many Requests).

As soon as Instagram Platform controls it on per access token basis, you might achieve a bigger limits using multi-threading with multiple access tokens. But it has caveats: 1. not everything could be paralleled from multiple access tokens, as context will be different. 2. It might contradict with Platform Policy and TOS

like image 32
Farside Avatar answered Sep 26 '22 03:09

Farside