Instagram API - How can I retrieve the list of people a user is following on Instagram
Shiva's answer doesn't apply anymore. The API call "/users/{user-id}/follows" is not supported by Instagram for some time (it was disabled in 2016).
For a while you were able to get only your own followers/followings with "/users/self/follows" endpoint, but Instagram disabled that feature in April 2018 (with the Cambridge Analytica issue). You can read about it here.
As far as I know (at this moment) there isn't a service available (official or unofficial) where you can get the followers/followings of a user (even your own).
You can use the following Instagram API Endpoint to get a list of people a user is following.
https://api.instagram.com/v1/users/{user-id}/follows?access_token=ACCESS-TOKEN
Here's the complete documentation for that endpoint. GET /users/user-id/follows
And here's a sample response from executing that endpoint.
Since this endpoint required a user-id
(and not user-name
), depending on how you've written your API client, you might have to make a call to the /users/search endpoint with a username, and then get the user-id from the response and pass it on to the above /users/user-id/follows
endpoint to get the list of followers.
IANAL, but considering it's documented in their API, and looking at the terms of use, I don't see how this wouldn't be legal to do.
Here's a way to get the list of people a user is following with just a browser and some copy-paste (A pure javascript solution based on Deep Seeker's answer):
Get the user's id (In a browser, navigate to https://www.instagram.com/user_name/?__a=1 and look for response -> graphql -> user -> id [from Deep Seeker's answer])
Open another browser window
Open the browser console and paste this in it
options = { userId: your_user_id, list: 1 //1 for following, 2 for followers }
change to your user id and hit enter
paste this in the console and hit enter
`https://www.instagram.com/graphql/query/?query_hash=c76146de99bb02f6415203be841dd25a&variables=` + encodeURIComponent(JSON.stringify({ "id": options.userId, "include_reel": true, "fetch_mutual": true, "first": 50 }))
Navigate to the outputted link
(This sets up the headers for the http request. If you try to run the script on a page where this isn't open, it won't work.)
- In the console for the page you just opened, paste this and hit enter
let config = { followers: { hash: 'c76146de99bb02f6415203be841dd25a', path: 'edge_followed_by' }, following: { hash: 'd04b0a864b4b54837c0d870b0e77e076', path: 'edge_follow' } }; var allUsers = []; function getUsernames(data) { var userBatch = data.map(element => element.node.username); allUsers.push(...userBatch); } async function makeNextRequest(nextCurser, listConfig) { var params = { "id": options.userId, "include_reel": true, "fetch_mutual": true, "first": 50 }; if (nextCurser) { params.after = nextCurser; } var requestUrl = `https://www.instagram.com/graphql/query/?query_hash=` + listConfig.hash + `&variables=` + encodeURIComponent(JSON.stringify(params)); var xhr = new XMLHttpRequest(); xhr.onload = function(e) { var res = JSON.parse(xhr.response); var userData = res.data.user[listConfig.path].edges; getUsernames(userData); var curser = ""; try { curser = res.data.user[listConfig.path].page_info.end_cursor; } catch { } var users = []; if (curser) { makeNextRequest(curser, listConfig); } else { var printString ="" allUsers.forEach(item => printString = printString + item + "\n"); console.log(printString); } } xhr.open("GET", requestUrl); xhr.send(); } if (options.list === 1) { console.log('following'); makeNextRequest("", config.following); } else if (options.list === 2) { console.log('followers'); makeNextRequest("", config.followers); }
After a few seconds it should output the list of users your user is following.