Skip to content

Instantly share code, notes, and snippets.

@bradwestfall
Last active November 20, 2022 14:40
Show Gist options
  • Star 66 You must be signed in to star a gist
  • Fork 10 You must be signed in to fork a gist
  • Save bradwestfall/f5a010e96fb0c4d18556 to your computer and use it in GitHub Desktop.
Save bradwestfall/f5a010e96fb0c4d18556 to your computer and use it in GitHub Desktop.
Pull Instagram Images via JavaScript

Get Instagram Images via JavaScript

Get API Info

You will need the user_id from the user. This is difficult to discover at Instagram but easy from this site http://jelled.com/instagram/lookup-user-id

I used http://jelled.com/instagram/access-token for the next few steps

You will also need an access token which ends up being difficult to obtain. Log into the account and go to their Developer Page.

Create a new "Client"

  • Application Name: Just enter "website"
  • Description: Enter whatever
  • Website: Enter your domain name. I don't think it has to exist already. But I know your requests aren't limmited to only this domain - at least as of now.
  • OAuth_redirect_uri: Enter the same website URL
  • Uncheck the "Disable Implicite OAuth"

Doing these steps should result in a Client ID

Go to this URL in the browser:

https://instagram.com/oauth/authorize/?client_id=[CLIENT_ID_HERE]&redirect_uri=[OAuth_Redirect_URI]&response_type=token

and substitute your Client ID/OAuth_Redirect_URI. If you get an error, chances are you didn't uncheck that box in the last step. You can always "edit" the client and uncheck the box to do this step over

Going to the URL will reveal your access_token. You may need any combination of client id, access token, or user id depending on how you want to access data. Do not delete the "Client" you made at Instagram.

Get a specific user, and filter on criteria (a specific hash tag in this case)

var feed = new Instafeed({
  get: 'user',
  userId: [user_id],
  accessToken: '[accessToken]',
  resolution: 'low_resolution',
  filter: function(image) {
    return image.tags.indexOf('somehashtag') >= 0;
  }
});
feed.run();

Search all of Instagram for a certain hash tag

var feed = new Instafeed({
  clientId: '[client_id]',
  get: 'tagged',
  tagName: 'newyears',
  resolution: 'low_resolution'
});
feed.run();

The HTML

You provide:

<div id="instafeed"></div>

And InstaFeed will create:

<div id="instafeed">
  <a href="..."><img src="..."></a>
  <a href="..."><img src="..."></a>
  <a href="..."><img src="..."></a>
  <a href="..."><img src="..."></a>
</div>

But this can very easily be changed in terms of what template InstaFeed will use

@nickmeagher
Copy link

Great guide!

I am having trouble accessing a specific location though, I am getting a "Uncaught Error: Error from Instagram: This client has not been approved to access this resource." and I believe this is because you now need the public_content permission on the Instagram account.

The problem now being Instagram doesn't give this permission away on one-off client projects stated here under "Invalid use cases": https://www.instagram.com/developer/authorization/

Is there another way to achieve this?

@kims554
Copy link

kims554 commented Oct 20, 2017

Hey Nick I ran into the same issue but I tried the link without the parenthesis [ ] around the client ID and Redirect URL and it worked

@mdunbavan
Copy link

mdunbavan commented Nov 23, 2017

If anyone else runs into the same issue.

When adding a user in the sandbox area of the client app you need to add the username and click save to add it to the list, then click save again to send it to the user to authenticate the app to test it in sandbox mode for that user id and account.

https://stackoverflow.com/questions/37866536/instagram-sandbox-user-invites-never-received

Also full url for getting access token needs to be this:
https://instagram.com/oauth/authorize/?client_id=[CLIENT_ID_HERE]&redirect_uri=[OAuth_Redirect_URI]&response_type=token&scope=[YOUR_SCOPE]

@venits
Copy link

venits commented Feb 12, 2018

For getting Instagram access_token in easy way you can use this library:
https://github.com/venits/instagram-web-oauth
Right now it is the simplest and fastest way.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment