Home

Awesome

<h1 align="center"> <img width="72px" src="https://firebasestorage.googleapis.com/v0/b/random-storage-332ce.appspot.com/o/instagram.svg?alt=media&token=5fe11096-daee-43c1-8d5f-8a77c9f46485"> </h1> <p align="center"> <a href="https://www.npmjs.com/package/instagram-web-api"><img alt="NPM version" src="https://badge.fury.io/js/instagram-web-api.svg"></a> <a href="https://circleci.com/gh/jlobos/instagram-web-api"><img alt="Build Status" src="https://circleci.com/gh/jlobos/instagram-web-api.svg?style=shield"></a> <a href="https://github.com/sindresorhus/xo"><img alt="XO code style" src="https://img.shields.io/badge/code_style-XO-5ed9c7.svg"></a> </p>

A Instagram Private Web API client 🤳✨❤️

Simple, easy and very complete implementation of the Instagram private web API.

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 to feed or story, just configure 'post' to 'feed' or 'story'
  const { media } = await client.uploadPhoto({ photo: photo, caption: 'testing', post: 'feed' })
  console.log(`https://www.instagram.com/p/${media.code}/`)
})()

API Reference

Instagram(credentials, opts)

const client = new Instagram({ username: '', password: '' }, { language: 'es-CL' })

Initializes the client.

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)

logout()

await client.logout()

Logout in the account.

getHome()

const feed = await client.getHome('KGEAxpEdUwUrxxoJvxRoQeXFGooSlADHZ8UaDdSWbnOIxxoUUhyciJ7EGlxNlZjaYcUaXTgUM00qyBrgBhUsLezIGqVTlxqausga5W-fVax9xRryaBdN1EnIGvdQFgzxoMgaFoLO7v7xWQA=')

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.

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.

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.

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.

changeProfilePhoto(params)

const fs = require('fs')

const photo = fs.join(__dirname, 'photo.jpg')
await client.changeProfilePhoto({ photo })

Change the profile photo.

deleteMedia(params)

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.

getMediaFeedByLocation(params)

const location = await client.getMediaFeedByLocation({ locationId: '26914683' })

Get latitude, longitude, top posts, last media, country, city, and more related to the location.

getMediaFeedByHashtag(params)

const tag = client.getMediaFeedByHashtag({ hashtag: 'unicorn' })

Explore last media and top posts feed related to a hashtag.

locationSearch(params)

const venues = client.locationSearch({ query: 'chile', latitude: -33.45, longitude: -70.6667 })

Search venues by latitude and longitude.

getMediaByShortcode(params)

const media = await client.getMediaByShortcode({ shortcode: 'BQE6Cq2AqM9' })

Get data of a media by the Instagram shortcode

addComment(params)

await client.addComment({ mediaId: 1442533050805297981, text: 'awesome' })

Add comment to a media item.

deleteComment(params)

await client.deleteComment({ mediaId: '1442533050805297981', commentId: '17848908229146688' })

Delete a comment.

getChallenge(params)

await client.getChallenge({ challengeUrl: '/challenge/1284161654/a1B2c3d4E6/' })

Get information about a challenge.

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.

resetChallenge(params)

await client.resetChallenge({ challengeUrl: '/challenge/1284161654/a1B2c3d4E6/' })

Reset a challenge to start over again.

replayChallenge(params)

await client.replayChallenge({ challengeUrl: '/challenge/1284161654/a1B2c3d4E6/' })

Request a new verification message.

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.

getPhotosByHashtag(params)

await client.getPhotosByHashtag({ hashtag: 'unicorn' })

Get photos for hashtag.

getPhotosByUsername(params)

await client.getPhotosByUsername({ username: 'unicorn' })

Gets user photos.

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.

getMediaLikes(params)

await client.getMediaLikes({ shortcode: 'B-0000000', first: '49', after: '' })

This will return the media likes.

getMediaComments(params)

await client.getMediaComments({ shortcode: 'B-0000000', first: '12', after: '' }).catch((error) => {
  console.log(error);
})
.then((response) => {
  console.log(response);
});

//The query cursor 'after' maybe return an array, if array you need to convert like this: 
let pointer = response.page_info.end_cursor;
// this will try to convert array to json stringify
  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.

License

MIT © Jesús Lobos