instagram-web-api
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
Install
npm install instagram-web-api
Usage
Intance 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
const client = new Instagram ( { username : ' ' , password : ' ' } , { language : ' es-CL ' } )
Initializes the client.
credentials username : The username of account password : The password of account cookieStore : 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
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 account password : The password of account
await client . logout ( )
Logout in the account.
const feed = await client . getHome ( ' KGEAxpEdUwUrxxoJvxRoQeXFGooSlADHZ8UaDdSWbnOIxxoUUhyciJ7EGlxNlZjaYcUaXTgUM00qyBrgBhUsLezIGqVTlxqausga5W-fVax9xRryaBdN1EnIGvdQFgzxoMgaFoLO7v7xWQA= ' )
Get home feed timeline, media shared by the people you follow.
params end_cursor ( String ) for pagination
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
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 id first : Amount of followers to request. Default is 20 after : Optional end_cursor ( String ) for pagination.
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 id first : Amount of followings to request. Default is 20 after : Optional end_cursor ( String ) for pagination.
const activity = await client . getActivity ( )
Get activity of account, news following, liked, etc.
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 specified biography : 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
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.
params mediaId : The media id
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 URL caption : 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 "#"
const venues = client . locationSearch ( { query : ' chile ' , latitude : - 33 . 45 , longitude : - 70 . 6667 } )
Search venues by latitude and longitude.
params latitude : Latitude longitude : Longitude query : A optional location name. Default is
const media = await client . getMediaByShortcode ( { shortcode : ' BQE6Cq2AqM9 ' } )
Get data of a media by the Instagram shortcode
params shortcode : A shortcode
addComment(params)
await client . addComment ( { mediaId : 1442533050805297981 , text : ' awesome ' } )
Add comment to a media item.
params mediaId : The media id text : Comment text replyToCommentId : Optional comment id to which to reply
deleteComment(params)
await client . deleteComment ( { mediaId : ' 1442533050805297981 ' , commentId : ' 17848908229146688 ' } )
Delete a comment.
params mediaId : The media id commentId : The comment id
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 path choice : Number 0 for phone and 1 for email. Default is `` securityCode : Number the received verification code for the challenge. Default is ``
await client . resetChallenge ( { challengeUrl : ' /challenge/1284161654/a1B2c3d4E6/ ' } )
Reset a challenge to start over again.
params challengeUrl : A String with a challenge path
await client . replayChallenge ( { challengeUrl : ' /challenge/1284161654/a1B2c3d4E6/ ' } )
Request a new verification message.
params challengeUrl : A String with a challenge path
await client . approve ( { userId : ' 1284161654 ' } )
Approve a friendship request.
params userId : The user id
await client . ignore ( { userId : ' 1284161654 ' } )
Reject a friendship request.
params userId : The user id
await client . follow ( { userId : ' 1284161654 ' } )
Follow a user.
params userId : The user id
await client . unfollow ( { userId : ' 1284161654 ' } )
Unfollow a user.
params userId : The user id
await client . block ( { userId : ' 1284161654 ' } )
Block a user.
params userId : The user id
await client . unblock ( { userId : ' 1284161654 ' } )
Unblock a user.
params userId : The user id
await client . like ( { mediaId : ' 1442533050805297981 ' } )
Like a media item.
params mediaId : The media id
await client . unlike ( { mediaId : ' 1442533050805297981 ' } )
Unlike a media item.
params mediaId : The media id
await client . save ( { mediaId : ' 1442533050805297981 ' } )
Save a media item.
params mediaId : The media id
await client . unsave ( { mediaId : ' 1442533050805297981 ' } )
Unsave a media item.
params mediaId : The media id
await client . search ( { query : ' unicorn ' } )
Search users, places, or hashtags.
params query : Query context : The context of search, hashtag , place , user or blended . Default is blended
await client . getPhotosByHashtag ( { hashtag : ' unicorn ' } )
Get photos for hashtag.
params hashtag : A String with a hashtag first : A number of records to return after : The query cursor String for pagination
await client . getPhotosByUsername ( { username : ' unicorn ' } )
Gets user photos.
params username : A String with a hashtag first : A number of records to return after : The query cursor String for pagination
getPrivateProfilesFollowRequests
await client . getPrivateProfilesFollowRequests ( cursor )
getChainsData
await client . getChainsData ( { userId } )
This will return the similar accounts, that you see, when you click on the ARROW in a profile.
params userId : The user id
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-000000000 first : A number of records to return max is 49 after : The query cursor String for pagination
getMediaComments(params)
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-000000000 first : A number of records to return max is 49 after : The query cursor String for pagination
License
MIT Jesus Lobos
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
Install
npm install instagram-web-api
Usage
Intance 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
const client = new Instagram ( { username : ' ' , password : ' ' } , { language : ' es-CL ' } )
Initializes the client.
credentials username : The username of account password : The password of account cookieStore : 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
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 account password : The password of account
await client . logout ( )
Logout in the account.
const feed = await client . getHome ( ' KGEAxpEdUwUrxxoJvxRoQeXFGooSlADHZ8UaDdSWbnOIxxoUUhyciJ7EGlxNlZjaYcUaXTgUM00qyBrgBhUsLezIGqVTlxqausga5W-fVax9xRryaBdN1EnIGvdQFgzxoMgaFoLO7v7xWQA= ' )
Get home feed timeline, media shared by the people you follow.
params end_cursor ( String ) for pagination
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
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 id first : Amount of followers to request. Default is 20 after : Optional end_cursor ( String ) for pagination.
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 id first : Amount of followings to request. Default is 20 after : Optional end_cursor ( String ) for pagination.
const activity = await client . getActivity ( )
Get activity of account, news following, liked, etc.
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 specified biography : 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
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.
params mediaId : The media id
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 URL caption : 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 "#"
const venues = client . locationSearch ( { query : ' chile ' , latitude : - 33 . 45 , longitude : - 70 . 6667 } )
Search venues by latitude and longitude.
params latitude : Latitude longitude : Longitude query : A optional location name. Default is
const media = await client . getMediaByShortcode ( { shortcode : ' BQE6Cq2AqM9 ' } )
Get data of a media by the Instagram shortcode
params shortcode : A shortcode
addComment(params)
await client . addComment ( { mediaId : 1442533050805297981 , text : ' awesome ' } )
Add comment to a media item.
params mediaId : The media id text : Comment text replyToCommentId : Optional comment id to which to reply
deleteComment(params)
await client . deleteComment ( { mediaId : ' 1442533050805297981 ' , commentId : ' 17848908229146688 ' } )
Delete a comment.
params mediaId : The media id commentId : The comment id
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 path choice : Number 0 for phone and 1 for email. Default is `` securityCode : Number the received verification code for the challenge. Default is ``
await client . resetChallenge ( { challengeUrl : ' /challenge/1284161654/a1B2c3d4E6/ ' } )
Reset a challenge to start over again.
params challengeUrl : A String with a challenge path
await client . replayChallenge ( { challengeUrl : ' /challenge/1284161654/a1B2c3d4E6/ ' } )
Request a new verification message.
params challengeUrl : A String with a challenge path
await client . approve ( { userId : ' 1284161654 ' } )
Approve a friendship request.
params userId : The user id
await client . ignore ( { userId : ' 1284161654 ' } )
Reject a friendship request.
params userId : The user id
await client . follow ( { userId : ' 1284161654 ' } )
Follow a user.
params userId : The user id
await client . unfollow ( { userId : ' 1284161654 ' } )
Unfollow a user.
params userId : The user id
await client . block ( { userId : ' 1284161654 ' } )
Block a user.
params userId : The user id
await client . unblock ( { userId : ' 1284161654 ' } )
Unblock a user.
params userId : The user id
await client . like ( { mediaId : ' 1442533050805297981 ' } )
Like a media item.
params mediaId : The media id
await client . unlike ( { mediaId : ' 1442533050805297981 ' } )
Unlike a media item.
params mediaId : The media id
await client . save ( { mediaId : ' 1442533050805297981 ' } )
Save a media item.
params mediaId : The media id
await client . unsave ( { mediaId : ' 1442533050805297981 ' } )
Unsave a media item.
params mediaId : The media id
await client . search ( { query : ' unicorn ' } )
Search users, places, or hashtags.
params query : Query context : The context of search, hashtag , place , user or blended . Default is blended
await client . getPhotosByHashtag ( { hashtag : ' unicorn ' } )
Get photos for hashtag.
params hashtag : A String with a hashtag first : A number of records to return after : The query cursor String for pagination
await client . getPhotosByUsername ( { username : ' unicorn ' } )
Gets user photos.
params username : A String with a hashtag first : A number of records to return after : The query cursor String for pagination
getPrivateProfilesFollowRequests
await client . getPrivateProfilesFollowRequests ( cursor )
getChainsData
await client . getChainsData ( { userId } )
This will return the similar accounts, that you see, when you click on the ARROW in a profile.
params userId : The user id
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-000000000 first : A number of records to return max is 49 after : The query cursor String for pagination
getMediaComments(params)
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-000000000 first : A number of records to return max is 49 after : The query cursor String for pagination
License
MIT Jesus Lobos
Comentarios
Publicar un comentario