I hate Instagram's Graph API for its complex configuration...
Thanks to a Google search, I discovered a magic query string to use with the official Instagram website:
https://www.instagram.com/{public_profile_name}/?__a=1
Using the query string __a=1
allows you to fetch the JSON content of any public Instagram profile.
Below is one of the solutions with JavaScript:
async function getInstagramPictures (profileName) {
const baseUrl = "https://www.instagram.com";
const profileUrl = `${baseUrl}/${profileName}`;
const jsonDataUrl = `${profileUrl}/?__a=1`;
const response = await fetch(jsonDataUrl);
const jsonData = await response.json();
const pictures = jsonData.graphql.user.edge_owner_to_timeline_media.edges;
if (response.ok) {
return pictures;
} else {
throw new Error(pictures);
}
}
getInstagramPictures("nasa")
.then(pictures => console.log("Pictures:", pictures))
.catch(error => console.error("Error:", error));
By looping pictures, you can display each image or its thumbnails:
- picture.node.display_url
- picture.node.thumbnail_resources
- [0].src = 150x150
- [1].src = 240x240
- [2].src = 320x320
- [3].src = 480x480
- [4].src = 640x640
Sources:
Top comments (13)
It's not working. Inst*gr*m has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Any solution ?
Try on the request header:
Access-Control-Allow-Origin: *
developer.mozilla.org/en-US/docs/W...
It is working? π€
Nice article! I recently wrote an example of Instagram posts scraper with Scrapy using the same approach with ?__a=1 URLs webscraping.ai/blog/instagram-scra...
Feel free to yell at me if this isn't allowed here, but this issue is exactly why I built behold.so - it let's you get user or hashtag posts as JSON with just a couple clicks. There are paid tiers, but the basic level is free. Much better than the madness of Meta's API red tape.
This worked perfectly on a public Instagram profile. Applause !!
From my experience, this only works if you have recently logged into an Instagram account with the same IP address. But mostly does not work from a server/proxy.
βοΈ Welcome back!
it is working for private account also
Requests from server/proxy seem to work intermittently and I haven't been able to figure out when/why.
Worked yesterday, doesn't today.
β Unfortunately, this quick tip no longer works today...
If someone knows a good tutorial for using the Graph API, I am interested...
It does seem to be useable again strange.
Any query string to Fetch JSON data from a public twitter and facebook profile without Graph API