Package Exports
- 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 (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-apiUsage
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 })
 
Instagram(credentials, opts)
const client = new Instagram({ username: '', password: '' }, { language: 'es-CL' })Initializes the client.
- credentials- username: The username of account
- password: The password of account
- cookies: An optional- Arrayof cookies, only needed for restore session. Default is- undefined
- cookieStore: An optional- though-cookiecookie storage, which allows for persistent cookies. Default is- undefined
 
- opts- language: The language of response from API. Default is- en-US
- proxy:- Stringof 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(truewhen username is valid) andauthenticated(truewhen login was successful)
- credentials- username: The username of account
- password: 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 id
- first: 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 id
- first: 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,username,phone_number,gender,birthday,biography,external_urlandchaining_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- 1male,- 2female and- 3not specified
- biography: The Bio. Default is
- website: The Website. Default is
- similarAccountSuggestions:- BooleanInclude 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- Stringof 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: A- Stringof path file or URL
- caption: 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: A- Stringof path file or URL
- caption: 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: Latitude
- longitude: Longitude
- query: 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 id
- text: Comment text
 
deleteComment(params)
await client.deleteComment({ mediaId: '1442533050805297981', commentId: '17848908229146688' })Delete a comment.
- params- mediaId: The media id
- commentId: The comment id
 
getChallenge(params)
await client.getChallenge({ challengeUrl: '/challenge/1284161654/a1B2c3d4E6/' })Get information about a challenge.
- params- challengeUrl: A- Stringwith 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- Stringwith a challenge path
- choice:- Number- 0for phone and- 1for email. Default is ``
- securityCode:- Numberthe 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- Stringwith a challenge path
 
replayChallenge(params)
await client.replayChallenge({ challengeUrl: '/challenge/1284161654/a1B2c3d4E6/' })Request a new verification message.
- params- challengeUrl: A- Stringwith 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: Query
- context: The context of search,- hashtag,- place,- useror- blended. Default is- blended
 
License
MIT © Jesús Lobos