Using Instagram API I need to get a list of users who have liked specific media.
The following call should return the list of all users according to the documentation: https://api.instagram.com/v1/media/555/likes?access_token=ACCESS-TOKEN
However, I get only 120 users with no pagination parameters.
Is there any way to keep requesting the rest?
If you need the code:
String requestLikes = "https://api.instagram.com/v1/media/" + mediaID + "/likes?access_token=" + access_token + "&count=0";
// Create a request for the URL.
request = WebRequest.Create(requestLikes);
// Get the response.
response = request.GetResponse();
//Remaining calls
AddOrUpdateAppSettings("remainingCalls", response.Headers["X-Ratelimit-Remaining"]);
// Display the status.
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server.
dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
reader = new StreamReader(dataStream);
// Read the content.
responseFromServer = reader.ReadToEnd();
Unfortunately they only provide the latest 120 likes in newest-to-oldest order with no pagination. You can test this by requesting a photo then liking it and you'll see that your account is on top of the list.
The only work around is to set up a job to periodically cache likes beginning shortly after the photo is first posted. Since you're always getting the newest 120 you can get them all that way. You can create a subscription to a user using the realtime api and get a ping when your user posts a new photo, then start caching likes. A decaying rate would be advised - maybe cache a couple times the first hour after it's posted, then less and less frequently the longer it's been.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With