Instagram Profile API
Get a public profile from its username or URL: name, bio, links, follower and post counts, verified and business status, and its latest posts.
Sendurl
Returnsdatausernameis_private
Get public Instagram profiles, posts, reels, comments and hashtag results as clean JSON. Send a username, a post link or a keyword. No Instagram login and no cookies.
| # | Caption | Account | Likes | Comments | Posted (Unix time) | Shortcode |
|---|---|---|---|---|---|---|
| 1 | Room with a view. Check out my new digs as I camp out in Dragon… | astro_jessica | 163,541 | 1720 | 1,791,036,618 | DeCPVhERA8e |
| 2 | From Florida to the front door in under eight hours. 🚀 @nasa’s … | nasajohnson | 34,280 | 258 | 1,791,035,813 | DeCNJEyOkpq |
| 3 | Swipe for countless stars Sagittarius B2 is the most massive an… | nasa | 842,854 | 3095 | 1,790,974,365 | DeAYvsnn4la |
| 4 | There’s no stopping us! NASA’s X-59 completes a record six flig… | nasaaero | 42,976 | 222 | 1,790,972,870 | DeAVuphM4C- |
| 5 | Godspeed, Crew-13. 🚀 On Thursday, Oct. 1, at 11:10 a.m. EDT (15… | nasa | 101,832 | 509 | 1,790,877,709 | Dd9gYJnDCKl |
| 6 | Meet the space travelers of Crew-13! NASA astronauts Jessica Wa… | nasa | 214,191 | 2127 | 1,790,798,794 | Dd7J2GbFx1V |
| 7 | I spy with my X-ray eyes 👀 Using @NASAChandraXray, astronomers … | nasa | 322,362 | 852 | 1,790,700,488 | Dd4OWyWjFsh |
| 8 | hey siri queue free bird 🇺🇸 | clevelandbrowns | 41,595 | 151 | 1,790,627,402 | Dd2DAyBmwvW |
| 9 | What happens when we detect an asteroid that could pose a threa… | nasa | 109,451 | 928 | 1,790,609,228 | Dd1gQBsCWE8 |
| 10 | On Saturday, Sept. 26, the first full moon of autumn will climb… | nasa | 691,267 | 1966 | 1,790,345,591 | DdtpcapjOph |
| # | Caption | Account | Likes | Comments | Posted (Unix time) | Shortcode |
|---|---|---|---|---|---|---|
| 1 | Room with a view. Check out my new digs as I camp out in Dragon… | astro_jessica | 163,546 | 1720 | 1,791,036,618 | DeCPVhERA8e |
| 2 | From Florida to the front door in under eight hours. 🚀 @nasa’s … | nasajohnson | 34,281 | 258 | 1,791,035,813 | DeCNJEyOkpq |
| 3 | There’s no stopping us! NASA’s X-59 completes a record six flig… | nasaaero | 42,977 | 222 | 1,790,972,870 | DeAVuphM4C- |
| 4 | What happens when we detect an asteroid that could pose a threa… | nasa | 109,452 | 928 | 1,790,609,228 | Dd1gQBsCWE8 |
| 5 | Our first Leader of the Uprising 🔥 Tune in on @paramountplus / … | ravens | 48,837 | 608 | 1,789,924,800 | DdhFkS7KGkZ |
| 6 | Volume up and get your groove on! A bit of weekend dancing on t… | astro_jessica | 240,002 | 2531 | 1,789,412,287 | DdRyQxKteC1 |
| 7 | Today’s @nfl flyover in Pittsburgh is just the beginning. This … | nasaadmin | 60,675 | 262 | 1,789,340,512 | DdPsDCWRT-u |
| 8 | First-ever @nfl flyover conducted by @nasa 🙌 Thank you to @nasa… | steelers | 83,359 | 318 | 1,789,319,282 | DdPDuIepVPf |
| 9 | Star and city trails with aurora. I shot this long exposure (30… | astro_jessica | 114,682 | 227 | 1,789,232,438 | DdMdxJhtdxh |
| 10 | Curly-haired crew, this one’s for you! 🌀🚀👩🏻🦱 Join me in my tempor… | astro_jessica | 126,902 | 1430 | 1,788,971,991 | DdEsW1ItqpI |
What each one takes and what it returns. Open one for a real response, every input and every field.
Get a public profile from its username or URL: name, bio, links, follower and post counts, verified and business status, and its latest posts.
Sendurl
Returnsdatausernameis_private
List a public profile's posts, newest first, with caption, likes, comments and post time.
Sendurl
Returnsdata
List a public profile's reels with caption, likes, comments and post time, page by page.
Sendurl
Returnsdata
Get one post, reel or carousel from its link or shortcode: author, caption, media and the engagement counts Instagram shows.
Sendurl
Returnsdata
Read the public comments shown on a post or reel, page by page.
Sendurl
ReturnsJSON; every field is in the API reference
Find posts and reels for a hashtag, filtered by posts or reels and by how recent they are.
Sendhashtag
ReturnsJSON; every field is in the API reference
See the popular content Instagram shows for a hashtag keyword, with post dates and engagement counts.
Sendhashtag
ReturnsJSON; every field is in the API reference
Search popular Instagram content by keyword, with post dates, likes, comments and plays.
Sendkeyword
ReturnsJSON; every field is in the API reference
Get the popular content for an Instagram topic, by topic name, ID or link.
Sendtopic
Returnscaptionidplay_countshortcodetypeurl
See the topics Instagram's Explore shows right now, grouped by section, with how many posts each has.
Sendcategory
Returnsnamecategorymedia_counturlslug
Find public profiles that match a search, with an option to add each profile's details.
Sendquery
ReturnsJSON; every field is in the API reference
Find public reels that match a search, with an option to add each reel's details.
Sendquery
ReturnsJSON; every field is in the API reference
Read the sections of Instagram's public Explore page, or page through one section.
Sendsection_id
Returnsdisplay_subtitledisplay_titleentries_connectionidsection
List the public reels that use one audio track, from its audio ID.
Sendaudio_id
Returnsdata
List a public profile's story highlights: each collection's title and ID.
Sendusername
Returnsdata
Get the saved stories inside one highlight collection, from the profile and collection ID.
Sendusernameandcollection_id
Returnsitemssummary
Get a public profile's basic details from its numeric user ID.
Senduser_id
Returnsdata
Get a public Instagram location from its ID: name, category, coordinates and how many posts are tagged there.
Sendlocation_id
Returnsdata
Get the ready-made embed code Instagram offers for a public profile or post, with or without the caption.
Sendurl
ReturnsJSON; every field is in the API reference
Follow the profiles you care about: followers, posting rhythm and how each post and reel performs.
ProfileProfile postsReelsSee what gets posted under a hashtag or keyword and which posts get the most engagement.
Hashtag posts searchPopular searchHashtag keyword searchWatch the topics and audio Instagram pushes, and find the reels riding them.
TopicsTopic searchReels by audioOne request shape for every Instagram endpoint: the endpoint ID and its input. No SDK needed.
curl --request POST \ --url https://data.upscrape.com/execute \ --header "Authorization: Bearer $UPSCRAPE_API_KEY" \ --header "Content-Type: application/json" \ --header "Prefer: wait=30" \ --data '{ "capability": "instagram.profile.get", "input": { "url": "https://www.instagram.com/nasa" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "instagram.profile.get", "input": { "url": "https://www.instagram.com/nasa" }}''')response = requests.post( "https://data.upscrape.com/execute", headers={ "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}", "Content-Type": "application/json", "Prefer": "wait=30", }, json=payload,)response.raise_for_status()print(json.dumps(response.json(), indent=2))
const response = await fetch("https://data.upscrape.com/execute", { method: "POST", headers: { "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`, "Content-Type": "application/json", "Prefer": "wait=30", }, body: JSON.stringify({ "capability": "instagram.profile.get", "input": { "url": "https://www.instagram.com/nasa" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
{ "username": "nasa", "is_private": false, "data": { "full_name": "NASA", "follower_count": 104294421, "username": "nasa", "account_type": 2, "biography": "Making the seemingly impossible, possible. ✨", "category": "", "external_url": "https://www.nasa.gov", "following_count": 90, "has_any_clips": true, "id": "528817151", "is_business": false, "is_private": false, "is_verified": true, "media_count": 4943, "metadata_complete": true, "total_clips_count": 1, "bio_links": [ { "title": "NASA.gov Homepage", "is_pinned": false, "link_type": "external", "url": "https://www.nasa.gov" }, { "title": "MAX POWER", "is_pinned": false, "link_type": "external", "url": "https://www.nasa.gov/maxpower" } ], "missing_fields": [], "pronouns": [] }}
https://data.upscrape.com/mcp
Use Upscrape to look up NASA's Instagram profile (instagram.com/nasa). Tell me its follower count, how many posts it has, its bio and the links in it.
With Upscrape, pull NASA's latest Instagram posts and make a table of caption, likes and comments. Which five posts got the most likes?
Using Upscrape, list NASA's recent Instagram reels and tell me which ones were made with other accounts and how they did against NASA's own.
The short answers. The docs have the long ones.
Instagram's own API is for managing accounts you own or are approved to access. Upscrape reads public Instagram pages, so you can get public profiles, posts, reels and hashtag results for any public account with one API key.
No. You send a username, a link or a keyword and get JSON back. Nothing runs on your account, and you share no password or cookie.
Profile, profile posts, reels, post, comments, hashtag posts search, hashtag keyword search, popular search, topic search, topics, profiles search, reels search, explore, reels by audio, highlights, saved highlight items, basic profile by id, location and embed. Each is its own endpoint with a published input schema, and the response is JSON.
Every Instagram endpoint costs 1 credit per successful call. You buy credits once, with no subscription, and paid credits never expire. New accounts get free credits to try it.
Yes. Connect any MCP client to the Upscrape MCP server with OAuth or an API key. The agent finds the Instagram endpoint, checks its price and runs it with the same credits as the REST API.
Upscrape reads public pages only and needs no login. How you use the data is yours to decide under the laws that apply to you; we sign a data processing agreement for your legal review.
We fix the endpoint. Your request and the response fields stay the same.
Up to 100 free credits to start, no card needed.