Package Exports
- @anakis/instagram-web-api
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@anakis/instagram-web-api) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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.
// Packages
const Instagram = require('instagram-web-api')
const FileCookieStore = require('tough-cookie-filestore2')
const { username, password } = process.env // Only required when no cookies are stored yet
const cookieStore = new FileCookieStore('./cookies.json')
const client = new Instagram({ username, password, cookieStore })
;(async () => {
// URL or path of photo
const photo =
'https://scontent-scl1-1.cdninstagram.com/t51.2885-15/e35/22430378_307692683052790_5667315385519570944_n.jpg'
await client.login()
// Upload Photo
const { media } = await client.uploadPhoto(photo)
console.log(`https://www.instagram.com/p/${media.code}/`)
})()
API Reference
- Instagram
- new Instagram({ username, password, cookies, cookieStore }, { language, proxy })
- .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 })
- .uploadStory({ photo, caption })
- .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})
Instagram(credentials, opts)
const client = new Instagram({ username: '', password: '' }, { language: 'es-CL' })
Initializes the client.
credentials
username
: The username of accountpassword
: The password of accountcookies
: An optionalArray
of cookies, only needed for restore session. Default isundefined
cookieStore
: An optionalthough-cookie
cookie storage, which allows for persistent cookies. Default isundefined
opts
language
: The language of response from API. Default isen-US
proxy
:String
of a proxy to tunnel all requests. Default isundefined
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) andauthenticated
(true
when login was successful)
credentials
username
: The username of accountpassword
: The password of account
logout()
await client.logout()
Logout in the account.
getHome()
const feed = await client.getHome()
Get home feed timeline, media shared by the people you follow.
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 is20
after
: Optionalend_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 is20
after
: Optionalend_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
,username
,phone_number
,gender
,birthday
,biography
,external_url
andchaining_enabled
.
updateProfile(params)
await client.updateProfile({ biography: '❤️', website: 'https://jlobos.com/', gender: 1 })
Update profile the account.
params
name
: The full name. Default isemail
: The email of account. Default isusername
: The username of account. Default isclient.credentials.username
phoneNumber
: The Phone Number. Default isgender
:Number
1
male,2
female and3
not specifiedbiography
: The Bio. Default iswebsite
: The Website. Default issimilarAccountSuggestions
:Boolean
Include your account when recommending similar accounts people might want to follow. Default istrue
changeProfilePhoto(params)
const fs = require('fs')
const photo = fs.join(__dirname, 'photo.jpg')
await client.changeProfilePhoto({ photo })
Change the profile photo.
params
photo
: AString
of path file or URL
deleteMedia(params)
await client.deleteMedia({ mediaId: '1442533050805297981' })
Delete a media, photo, video, etc. by the id.
params
mediaId
: The media 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: '❤️' })
Upload a photo to Instagram.
params
photo
: AString
of path file or URLcaption
: The caption of photo. Default is
uploadStory(params)
const photo = 'https://scontent-scl1-1.cdninstagram.com/t51.2885-15/e35/16465198_658888867648924_4042368904838774784_n.jpg'
await client.uploadStory({ photo })
Upload a story to Instagram, it only work for images (
jpg
)
params
photo
: AString
of path file or URLcaption
: The caption of photo. Default is
getMediaFeedByLocation(params)
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
getMediaFeedByHashtag(params)
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 vanues by latitude and longitude.
params
latitude
: Latitudelongitude
: Longitudequery
: A optional location name. Default is
getMediaByShortcode(params)
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 idtext
: Comment textreplyToCommentId
: Optional comment id to which to reply
deleteComment(params)
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
: AString
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
: AString
with a challenge pathchoice
:Number
0
for phone and1
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
: AString
with a challenge path
replayChallenge(params)
await client.replayChallenge({ challengeUrl: '/challenge/1284161654/a1B2c3d4E6/' })
Request a new verification message.
params
challengeUrl
: AString
with a challenge path
approve(params)
await client.approve({ userId: '1284161654' })
Approve a friendship request.
params
userId
: The user id
ignore(params)
await client.ignore({ userId: '1284161654' })
Reject a friendship request.
params
userId
: The user id
follow(params)
await client.follow({ userId: '1284161654' })
Follow a user.
params
userId
: The user id
unfollow(params)
await client.unfollow({ userId: '1284161654' })
Unfollow a user.
params
userId
: The user id
block(params)
await client.block({ userId: '1284161654' })
Block a user.
params
userId
: The user id
unblock(params)
await client.unblock({ userId: '1284161654' })
Unblock a user.
params
userId
: The user id
like(params)
await client.like({ mediaId: '1442533050805297981' })
Like a media item.
params
mediaId
: The media id
unlike(params)
await client.unlike({ mediaId: '1442533050805297981' })
Unlike a media item.
params
mediaId
: The media id
save(params)
await client.save({ mediaId: '1442533050805297981' })
Save a media item.
params
mediaId
: The media id
unsave(params)
await client.unsave({ mediaId: '1442533050805297981' })
Unsave a media item.
params
mediaId
: The media id
search(params)
await client.search({ query: 'unicorn' })
Search users, places, or hashtags.
params
query
: Querycontext
: The context of search,hashtag
,place
,user
orblended
. Default isblended
getPhotosByHashtag(params)
await client.getPhotosByHashtag({ hashtag: 'unicorn' })
Get photos for hashtag.
params
hashtag
: AString
with a hashtagfirst
: Anumber
of records to returnafter
: The query cursorString
for pagination
getPhotosByUsername(params)
await client.getPhotosByUsername({ username: 'unicorn' })
Gets user photos.
params
username
: AString
with a hashtagfirst
: Anumber
of records to returnafter
: The query cursorString
for pagination
License
MIT © Jesús Lobos