A Instagram Private Web API client 🤳✨❤️Simple, easy and very complete implementation of the Instagram private web API. - Support for all the main functions of
Instagram Web
- Well tested, CI
- All test runs daily
Installnpm install instagram-web-api
UsageIntance Instagram and call login method; this stores the credentials in memory. const Instagram = require('instagram-web-api') const { username, password } = process.env const client = new Instagram({ username, password }) client .login() .then(() => { client .getProfile() .then(console.log) })
Using async /await in Node >= 8 const Instagram = require('instagram-web-api') const { username, password } = process.env const client = new Instagram({ username, password }) ;(async () => { await client.login() const profile = await client.getProfile() console.log(profile) })()
Save cookies to disk by using a though-cookie store. const Instagram = require('instagram-web-api') const FileCookieStore = require('tough-cookie-filestore2') const { username, password } = process.env const cookieStore = new FileCookieStore('./cookies.json') const client = new Instagram({ username, password, cookieStore }) ;(async () => { const photo = 'https://scontent-scl1-1.cdninstagram.com/t51.2885-15/e35/22430378_307692683052790_5667315385519570944_n.jpg' await client.login() const { media } = await client.uploadPhoto({ photo: photo, caption: 'testing', post: 'feed' }) console.log(`https://www.instagram.com/p/${media.code}/`) })()
API Reference- Instagram
- new Instagram({ username, password, cookieStore }, { language, proxy, requestOptions })
- .login({ username, password })
- .logout()
- .getHome()
- .getUserByUsername({ username })
- .getFollowers({ userId, first, after })
- .getFollowings({ userId, first, after })
- .getActivity()
- .getProfile()
- .updateProfile({ name, email, username, phoneNumber, gender, biography, website, similarAccountSuggestions })
- .changeProfilePhoto({ photo })
- .deleteMedia({ mediaId })
- .uploadPhoto({ photo, caption, post })
- .getMediaFeedByLocation({ locationId })
- .getMediaFeedByHashtag({ hashtag })
- .locationSearch({ query, latitude, longitude })
- .getMediaByShortcode({ shortcode })
- .addComment({ mediaId, text })
- .deleteComment({ mediaId, commentId })
- .getChallenge({ challengeUrl })
- .updateChallenge({ challengeUrl, choice, securityCode })
- .resetChallenge({ challengeUrl })
- .replayChallenge({ challengeUrl })
- .approve({ userId })
- .ignore({ userId })
- .follow({ userId })
- .unfollow({ userId })
- .block({ userId })
- .unblock({ userId })
- .like({ mediaId })
- .unlike({ mediaId })
- .save({ mediaId })
- .unsave({ mediaId })
- .search({ query, context })
- .getPhotosByHashtag({hashtag, first, after})
- .getPhotosByUsername({username, first, after})
- .getPrivateProfilesFollowRequests(cursor)
- .getChainsData({ userId })
- .getMediaLikes({ shortcode, first, after })
- .getMediaComments({ shortcode, first, after })
Instagram(credentials, opts)const client = new Instagram({ username: '', password: '' }, { language: 'es-CL' })
Initializes the client.
credentials username : The username
of accountpassword : The password of accountcookieStore : An optional though-cookie cookie storage, which allows for persistent cookies. Default is undefined
opts language : The language of response from API. Default is en-US proxy : String of a proxy to tunnel all requests. Default is undefined
login(credentials)const { username, password, cookies } = await client.login({ username: '', password: '' }) const { authenticated, user } = await client.login({ username: '', password: '' })
Login in the account, this method returns user (true when username is valid) and authenticated (true when login was successful)
credentials username : The username of accountpassword : The password of account
logout()Logout in the account.
getHome()const feed = await client.getHome('KGEAxpEdUwUrxxoJvxRoQeXFGooSlADHZ8UaDdSWbnOIxxoUUhyciJ7EGlxNlZjaYcUaXTgUM00qyBrgBhUsLezIGqVTlxqausga5W-fVax9xRryaBdN1EnIGvdQFgzxoMgaFoLO7v7xWQA=')
Get home feed timeline, media shared by the people you follow.
params
end_cursor (String ) for pagination
getUserByUsername(params)const instagram = await client.getUserByUsername({ username: 'instagram' }) const me = await client.getUserByUsername({ username: client.credentials.username })
Get user by username, this method not require authentication for public profiles.
params username : The username of the profile
getFollowers(params)const followers = await client.getFollowers({ userId: '1284161654' })
Get followers for given userId. Be aware that the response gets slightly altered for easier usage.
params
userId : The user idfirst : Amount of followers to request. Default is 20 after : Optional end_cursor (String ) for pagination.
getFollowings(params)const followings = await client.getFollowings({ userId: '1284161654' })
Get followings for given userId. Be aware that the response gets slightly altered for easier usage.
params userId : The user idfirst : Amount of followings to request. Default is 20 after :
Optional end_cursor (String ) for pagination.
getActivity()const activity = await client.getActivity()
Get activity of account, news following, liked, etc.
getProfile()const profile = await client.getProfile()
Get profile the account first_name , last_name , email , username , phone_number , gender , birthday , biography , external_url and chaining_enabled .
updateProfile(params)await client.updateProfile({ biography: '❤️', website: 'https://jlobos.com/', gender: 1 })
Update profile the account.
params
name : The full name. Default is
email : The email of account. Default is
username : The username of account. Default is client.credentials.username phoneNumber : The Phone Number. Default is
gender : Number 1 male, 2 female and 3 not specifiedbiography : The Bio. Default is
website : The Website. Default is
similarAccountSuggestions : Boolean Include your account when recommending similar accounts
people might want to follow. Default is true
changeProfilePhoto(params)const fs = require('fs') const photo = fs.join(__dirname, 'photo.jpg') await client.changeProfilePhoto({ photo })
Change the profile photo.
params photo : A String of path file or URL
await client.deleteMedia({ mediaId: '1442533050805297981' })
Delete a media, photo, video, etc. by the id.
uploadPhoto(params)const photo = 'https://scontent-scl1-1.cdninstagram.com/t51.2885-15/e35/16465198_658888867648924_4042368904838774784_n.jpg' await client.uploadPhoto({ photo, caption: '❤️', post: 'feed' })
Upload a photo to Instagram. Only jpeg images allowed.
params photo : A String of path file or URLcaption : The caption of photo. Default is
post : The local post, feed or story
const location = await client.getMediaFeedByLocation({ locationId: '26914683' })
Get latitude, longitude, top posts, last media, country, city, and more related to the location.
params locationId :
The location id
const tag = client.getMediaFeedByHashtag({ hashtag: 'unicorn' })
Explore last media and top posts feed related to a hashtag.
params hashtag : A hashtag, not including the "#"
locationSearch(params)const venues = client.locationSearch({ query: 'chile', latitude: -33.45, longitude: -70.6667 })
Search venues by latitude and longitude.
params latitude : Latitudelongitude : Longitudequery : A optional location
name. Default is
const media = await client.getMediaByShortcode({ shortcode: 'BQE6Cq2AqM9' })
Get data of a media by the Instagram shortcode
await client.addComment({ mediaId: 1442533050805297981, text: 'awesome' })
Add comment to a media item.
params mediaId : The media idtext : Comment textreplyToCommentId : Optional comment id to which to reply
await client.deleteComment({ mediaId: '1442533050805297981', commentId: '17848908229146688' })
Delete a comment.
params mediaId : The media idcommentId : The comment id
getChallenge(params)await client.getChallenge({ challengeUrl: '/challenge/1284161654/a1B2c3d4E6/' })
Get information about a challenge.
params challengeUrl : A String with a challenge path
updateChallenge(params)const challengeUrl = '/challenge/1284161654/a1B2c3d4E6/' await client.updateChallenge({ challengeUrl, choice: 0 }) await client.updateChallenge({ challengeUrl, securityCode: 123456 })
Request or submit a verification code
for the given challenge.
params challengeUrl : A String with a challenge pathchoice : Number 0 for phone and 1 for email. Default is ``securityCode : Number the received verification code for the challenge. Default is ``
resetChallenge(params)await client.resetChallenge({ challengeUrl: '/challenge/1284161654/a1B2c3d4E6/' })
Reset a challenge to start over again.
params challengeUrl : A String with a challenge path
replayChallenge(params)await client.replayChallenge({ challengeUrl: '/challenge/1284161654/a1B2c3d4E6/' })
Request a new verification message.
params challengeUrl : A String with a challenge path
approve(params)await client.approve({ userId: '1284161654' })
Approve a friendship request.
ignore(params)await client.ignore({ userId: '1284161654' })
Reject a friendship request.
follow(params)await client.follow({ userId: '1284161654' })
Follow a user.
unfollow(params)await client.unfollow({ userId: '1284161654' })
Unfollow a user.
block(params)await client.block({ userId: '1284161654' })
Block a user.
unblock(params)await client.unblock({ userId: '1284161654' })
Unblock a user.
like(params)await client.like({ mediaId: '1442533050805297981' })
Like a media item.
unlike(params)await client.unlike({ mediaId: '1442533050805297981' })
Unlike a media item.
save(params)
await client.save({ mediaId: '1442533050805297981' })
Save a media item.
unsave(params)await client.unsave({ mediaId: '1442533050805297981' })
Unsave a media item.
search(params)await client.search({ query: 'unicorn' })
Search users, places, or hashtags.
params query : Querycontext : The context of search, hashtag , place ,
user or blended . Default is blended
getPhotosByHashtag(params)await client.getPhotosByHashtag({ hashtag: 'unicorn' })
Get photos for hashtag.
params hashtag : A String with a hashtagfirst : A number of records to returnafter : The query cursor String for pagination
getPhotosByUsername(params)await client.getPhotosByUsername({ username: 'unicorn' })
Gets user photos.
params username : A
String with a hashtagfirst : A number of records to returnafter : The query cursor String for pagination
getPrivateProfilesFollowRequestsawait client.getPrivateProfilesFollowRequests(cursor)
getChainsDataawait client.getChainsData({ userId })
This will return the similar accounts, that you see, when you click on the ARROW in a profile.
await client.getMediaLikes({ shortcode: 'B-0000000', first: '49', after: '' })
This will return the media likes.
params shortcode : The shortcode media like this: https://www.instagram.com/p/B-00000000/, only put shortcode like this : B-000000000first : A number of records to return max is 49 after : The query cursor String for pagination
await client.getMediaComments({ shortcode: 'B-0000000', first: '12', after: '' }).catch((error) => { console.log(error); }) .then((response) => { console.log(response); }); let pointer = response.page_info.end_cursor; try{ pointer = JSON.parse(pointer); pointer = JSON.stringify(pointer); }catch(e){ console.log('Pointer is not array!, don't need to be converted!'); }
This will return the media comments.
params shortcode : The shortcode media like this: https://www.instagram.com/p/B-00000000/, only put shortcode like this : B-000000000first : A number of records to return max is 49 after : The query cursor String for pagination
LicenseMIT ©
Jesús Lobos |