Skip to main content
Instagram

Instagram Scraper API
profiles, posts and reels

Send an Instagram profile, post or reel link and get the data back as JSON: followers, bio and bio links, the 12 latest posts, and for each post its likes, comment count, first comments, media, tagged accounts and music.

You sendwww.instagram.com/nasa/
ProfilePosts1 credit
You get back (real run, trimmed)
{
"username": "nasa",
"fullName": "NASA",
"isVerified": true,
"followers": 104385291,
"following": 90,
"posts": 4967,
"biography": "Making the seemingly impossible, possible. ✨"
}
12

latest posts per profile, with caption, type, image and link

~10

first comments with each post, plus its like and comment counts

1 credit

per page, for a profile, post or reel

$0

for a page that can't be delivered

Every Instagram link that returns data

Links work as you copy them, share links included. Spidra works out what kind of page it is.

Profiles

Name, bio, bio links, verified, private, followers, following, post count, picture and the 12 latest posts.

instagram.com/nasa/

Posts

Caption, hashtags, mentions, likes, comment count, date, location, image, tagged accounts and the first comments.

instagram.com/p/DeJ28eTxo4s/

Reels

Everything a post has, plus the video URL and the music the reel uses.

instagram.com/reel/DeTUk4sDSp-/

Carousels

Multi-image posts list each image or video in the carousel, in order.

instagram.com/p/...

IGTV videos

Older IGTV links return the same record as a post.

instagram.com/tv/...

Share links

Links with ?igsh= and post links with the username in front are read as the post or profile they point to.

instagram.com/nasa/p/...?igsh=...

One call, every field

Point the scrape call at a Instagram link. With JSON output and no prompt, the data comes back as it is, for 1 credit and no AI cost.

Ask for markdown instead and you get the readable page as text. The structured data still comes back, in its own structuredData field next to the markdown.

import { SpidraClient } from "spidra";
 
const spidra = new SpidraClient({
apiKey: process.env.SPIDRA_API_KEY,
});
 
const result = await spidra.scrape({
urls: [{ url: "https://www.instagram.com/nasa/" }],
output: "json",
});
 
const data = result.content;
for (const p of data.recentPosts) console.log(p.type, p.url);
What you get for each profile and post
Identity
ID, username, full name, pronouns and profile picture
Profile
Biography, every bio link with its title, verified, private and whether the account has reels
Counts
Followers, following and posts
Recent posts
The 12 posts on the profile grid, each with code, type, caption, image, description and link
Post
Caption, hashtags, mentions, media type, date taken, location, width and height
Engagement
Likes, comment count and the first comments with username, date and likes
Media
Image, video URL and every item of a carousel
People and sound
Owner, tagged accounts, coauthors of collab posts, the reel's music and Instagram's own description of the image

What comes back

Real responses from Spidra, trimmed for length. Nothing here is mocked up.

Request
https://www.instagram.com/nasa/
Response (real run, October 18, 2026, trimmed)
{
"source": "instagram",
"type": "profile",
"id": "528817151",
"username": "nasa",
"fullName": "NASA",
"biography": "Making the seemingly impossible, possible. ✨",
"isVerified": true,
"isPrivate": false,
"followers": 104385291,
"following": 90,
"posts": 4967,
"bioLinks": [
{
"title": "NASA.gov Homepage",
"url": "https://www.nasa.gov"
},
{
"title": "MAX POWER",
"url": "https://www.nasa.gov/maxpower"
},
"… 3 more"
],
"hasReels": true,
"recentPosts": [
{
"code": "DeTUk4sDSp-",
"type": "reel",
"caption": "POV: you're watching the Earth set\n\nWe just released hundreds of new images and hours of new audio from our Artemis II m…",
"url": "https://www.instagram.com/reel/DeTUk4sDSp-/"
},
{
"code": "DeJ28eTxo4s",
"type": "image",
"caption": "Brewing up new stars 🪄\n \n@NASAWebb’s unique view of the stellar nursery known as NGC 7129 reveals numerous stars formerl…",
"url": "https://www.instagram.com/p/DeJ28eTxo4s/"
},
"… 10 more"
],
"url": "https://www.instagram.com/nasa/"
}

From the profile grid to each post's numbers

Instagram's profile page doesn't show like or comment counts. Spidra returns the 12 latest posts with their type, caption and link, so you know exactly which posts to read next.

Send those links, in a batch if you like, and each one comes back with its likes, comment count, date, media, tagged accounts, coauthors and music.

NASA reel (real run, trimmed)
"mediaType": "reel",
"likes": 705864,
"comments": 7008,
"takenAt": "2026-10-10T15:15:02.000Z",
"owner": {
"username": "nasa",
"fullName": "NASA",
"isVerified": true,
"id": "528817151"
},
"taggedUsers": ["nasaartemis", "nasasolarsystem"],
"coauthors": ["nasasolarsystem", "nasaartemis"],
"music": {
"title": "Original audio",
"artist": "nasa"
}

Every link in the bio

Accounts can list several links in their bio, and the one you want is rarely the first. Spidra returns each link with the title the account gave it.

Posts also carry Instagram's own description of the image, such as "May be an image of planet, eclipse and text", which helps you sort posts by what they show without running your own image model.

@nasa profile (real run, trimmed)
"bioLinks": [
{
"title": "NASA.gov Homepage",
"url": "https://www.nasa.gov"
},
{
"title": "MAX POWER",
"url": "https://www.nasa.gov/maxpower"
},
{
"title": "Roman Space Telescope Blog",
"url": "https://science.nasa.gov/blogs/roman/"
}
]

What a visitor sees, and nothing more

Spidra reads Instagram the way a visitor who isn't signed in sees it. It never signs in, and it doesn't send cookies you pass for Instagram pages.

Pages Instagram keeps for signed-in members are refused straight away, and you aren't charged for them.

  • Followers and following lists, stories, search, explore and messages need a signed-in member.
  • Business email addresses, phone numbers and categories aren't shown to visitors, so profiles don't include them.
  • Private accounts keep their posts for followers, so their recent posts come back empty.

Ask for the columns you want

Describe the answer as a prompt, a JSON schema or both, and it comes back in that shape. The AI reads a compact copy of the data Spidra already read, not the whole page.

Request
const result = await spidra.scrape({
urls: [{ url: "https://www.instagram.com/natgeo/" }],
prompt: "Summarise the account.",
schema: {
type: "object",
properties: {
fullName: {
type: "string"
},
followers: {
type: "integer"
},
posts: {
type: "integer"
},
bio: {
type: "string"
},
verified: {
type: "boolean"
}
}
},
});
What came back (real run)
{
"fullName": "National Geographic",
"followers": 268344717,
"posts": 32000,
"bio": "Step into wonder and find your inner explorer with National Geographic 🌎",
"verified": true
}

This request cost 3 credits on October 18, 2026: 1 for the page plus the AI tokens. For the data as it is, use JSON output with no prompt for 1 credit.

What teams build with it

Instagram data feeds influencer marketing, brand tracking and content research.

Influencer vetting

Check followers, posting rhythm and likes per post on a creator's latest work before you reach out.

Brand and competitor tracking

Read the same accounts every day and chart follower growth, posting frequency and engagement per post.

See the use case

Content research

Compare captions, hashtags, collab partners and reel music across the accounts in your market.

How Spidra compares

Instagram has many scrapers. Some cost less per post at volume and cover comment threads or search. Here is how they differ.

Apify (official actors)Bright DataScrapeCreatorsSpidra
Price$2.70 down to $0.50 per 1,000 results$1.50 per 1,000 records, $1.30 on the $499 a month plan$1.88 down to $0.99 per 1,000 requests1 credit per page: $3.80 down to $1.99 per 1,000. A profile page includes its 12 latest posts
Posts on a profileLatest 12Nested in the profile recordSeparate posts endpointLatest 12, with a link to each
CommentsAbout 15 per post on the Free planLatest 15 per postComments and replies endpointsThe first comments on the post page, usually about 10
Business email and phoneNot in the listed fieldsEmail and address fields listedBusiness email and phone fields listedNot included, Instagram doesn't show them to visitors
OutputFixed fieldsFixed fieldsInstagram's own raw shapeFixed fields, or your own schema or prompt
Beyond InstagramThousands of other actorsOther scrapers and datasetsOther social platformsAny website, crawl, search, PDFs, MCP

Choose Apify, Bright Data or ScrapeCreators if

You need full comment threads, hashtag or search results, or a lower price per post at high volume.

Choose Spidra if

You want profiles and posts as clean records you can use as they come, only what visitors can see, and Instagram plus any other website through one API.

Competitor prices and fields are as published on their own pages and docs on October 17, 2026 and may have changed. Spidra prices use 1 credit per page on each plan. Sources: Apify, Bright Data, ScrapeCreators.

What to know before you build

We would rather you hear the limits from us than find them in production.

  • Spidra reads Instagram as a visitor who isn't signed in. Followers and following lists, stories, search, explore and messages aren't available. Those requests fail straight away and aren't charged.
  • A profile returns the 12 posts Instagram shows on it, without like counts. Older posts are shown only to signed-in members, so to read a specific older post, send its link.
  • Each post includes the comments Instagram puts on the page, usually about 10. The full thread needs a signed-in member.
  • Business email addresses, phone numbers and categories aren't shown to visitors, so they aren't included.
  • Instagram answers a missing account and a restricted one the same way, so the error can't say which it was. Either way it is free.
  • Profiles, comments and tagged accounts are personal data. Handle personal data according to the privacy laws that apply to you.

What it costs

1 credit per page. Pages that can't be delivered are free. Work out your monthly volume below.

Monthly credits
15,000
Fits the Builder plan ($79/mo)

Example: 50 profiles plus 450 post pages a day is about 15,000 credits a month. Plain JSON output uses no AI tokens.

PlanPriceInstagram pages a month
Free$0up to 300 (one time)
Starter$19/moup to 5,000
BuilderPopular$79/moup to 25,000
Pro$249/moup to 125,000

Credits are shared across everything Spidra does, so the same plan covers Instagram and any other site.

Related scrapers

Same API key, same credits. See every scraper.

FAQ

Questions, answered

Instagram

Meta's Instagram API works on accounts you own or manage. Its Business Discovery feature can read other business and creator accounts, but only through your own professional account and app, with no personal accounts, no comment text and a rate limit per user. The Basic Display API shut down on December 4, 2024. Spidra reads the public profile and post pages instead, for 1 credit per page.

Send an Instagram link and see what comes back.

Get 300 free credits, no card, and read your first Instagram profile from the dashboard or the API.

Spidra is not affiliated with, endorsed by, or sponsored by Instagram or Meta. Instagram is a trademark of Meta Platforms, Inc. Check Instagram's terms of use and the laws that apply to you before you collect data, and use the data responsibly.