Scraping Bot Animated

scrapingbot

Instagram Scraper API

Extract public Instagram profiles and posts as structured JSON. Queue a request, poll for the result, and receive a refund when a scrape fails.

Get your API keyRead the documentation500 free credits per month, no card required.

Decide before you build

Endpoint
POST /scrape/data-scraper
Scrapers
instagramProfile instagramPost
Cost
30 credits / call
Free plan
500 credits / month
Call pattern
async, POST then GET
On failure
credits refunded
Response format
JSON
Concurrency
by plan tier

Social Media calls consume 30 credits. Failed scrapes are refunded; a pending result does not consume credits.

Try the Instagram scraper on your own targetRun a request against a public profile or post and inspect the JSON before you integrate.

Open the live test

What you get back

instagramProfile

Instagram profiles

Retrieve public profile details and a configurable number of recent posts.

  • Profile name, account and biography
  • Followers, following and verification status
  • Profile image and external URL when available
  • Recent posts, captions and engagement fields
instagramPost

Instagram posts

Retrieve a public post and its available media, caption and engagement data.

  • Caption, author and publication date
  • Likes and comments when available
  • Image, thumbnail and media URLs
  • Post URL and media type

Call the Instagram scraper

Send the scraper name with the input required by that scraper. The POST returns a responseId to poll for the final JSON.

Step 1Submit an Instagram profile request and keep the responseId returned by the API.
bash
# POST - queue a public Instagram profile scrape
curl -X POST "https://api.scraping-bot.io/scrape/data-scraper" \
  -u "yourUsername:yourApiKey" \
  -H "Content-Type: application/json" \
  -d '{
    "scraper": "instagramProfile",
    "account": "google",
    "posts_number": 12
  }'
Step 2Wait a few seconds, then retrieve the Instagram result with the responseId. Repeat the GET while the status is pending.
bash
# GET - retrieve the result after the POST returns a responseId
curl -G "https://api.scraping-bot.io/scrape/data-scraper-response" \
  -u "yourUsername:yourApiKey" \
  --data-urlencode "responseId=RESPONSE_ID" \
  --data-urlencode "scraper=instagramProfile"

Code example

Authenticate with your ScrapingBot username and API key, then poll until the queued result is ready.

const auth = "Basic " + Buffer.from(
  "yourUsername:yourApiKey",
).toString("base64");

const queued = await fetch(
  "https://api.scraping-bot.io/scrape/data-scraper",
  {
    method: "POST",
    headers: { "Content-Type": "application/json", Authorization: auth },
    body: JSON.stringify({
      scraper: "instagramProfile",
      account: "google",
      posts_number: 12,
    }),
  },
);

const { responseId } = await queued.json();
await new Promise((resolve) => setTimeout(resolve, 5000));

const result = await fetch(
  "https://api.scraping-bot.io/scrape/data-scraper-response?" +
    new URLSearchParams({ responseId, scraper: "instagramProfile" }),
  { headers: { Authorization: auth } },
).then((response) => response.json());

Run this call in two minutesCreate an account, copy your API key, then use the example above.

Get your API key

Request parameters

ParameterTypeDefaultDescription
scraperstring—One of the scraper names supported by this endpoint.
accountstring—Account name for the Instagram profile scraper.
posts_numberstring12Optional for this scraper.
urlstring—Public page URL, including https://.

Response example

A real instagramProfile response for a public account, shortened: long texts and lists are cut.

json
[
  {
    "account": "lafrenchtech",
    "fbid": "17841404695871898",
    "id": "4575188529",
    "followers": 45491,
    "posts_count": 108,
    "is_verified": true,
    "external_url": [
      "https://lafrenchtech.gouv.fr/"
    ],
    "biography": "L’énergie des start-up \net scale-up françaises \n💙🐓❤️",
    "post_hashtags": [
      "BIG2026",
      "big"
    ],
    "following": 356,
    "posts": [
      {
        "caption": "🚀 La Mission French Tech réinvente son soutien pour la diversité en lançant French Tech Nova\n\n👉 French Tech Nova, c’est le programme national dédié à l’accélération des start-up portées par des entrepreneurs issus de parcours sous-représentés.\n\nLes lauréats bénéficieront d’u…",
        "datetime": "2026-07-30T00:00:00.000Z",
        "id": "3952591903120073471",
        "image_url": "https://scontent-dfw5-2.cdninstagram.com/v/t51.82787-15/758368599_18409036708156530_5421828148676799201_n.jpg?stp=dst-jpg_e35_s640x640_tt6&_nc_cat=100&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0FST1VTRUxfSVRFTS5iZXN0X2ltYWdlX3VybGdlbi5DMyJ9&_nc_ohc=M_J1ZCzC51sQ7kNvwFsg46x&_n…",
        "post_hashtags": null,
        "content_type": "Carousel",
        "url": "https://www.instagram.com/p/DbabWTnjqL_"
      },
      {
        "caption": "🟡 La French Tech change de dimension\n\n🎙️💬 \"77% d'augmentation par rapport à l'année dernière : c'est une rentrée très dynamique.\" \n\n📺 @julie_huguet, directrice de @lafrenchtech, présente le changement de dimension de la mission qu'elle dirige au micro de @mfrmatt depuis l'…",
        "datetime": "2026-10-13T00:00:00.000Z",
        "id": "4006975259411955197",
        "image_url": "https://scontent-dfw6-1.cdninstagram.com/v/t51.82787-15/844838833_18121564481056055_7702333286916408995_n.jpg?stp=dst-jpg_e35_s640x640_tt6&_nc_cat=103&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiQ0xJUFMuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=PuhGmUCbsjcQ7kNvwFANcnt&_nc_oc…",
        "post_hashtags": [
          "BIG2026",
          "big"
        ],
        "content_type": "Video",
        "url": "https://www.instagram.com/p/DebosTBBz39"
      }
    ],
    "profile_image_link": "https://scontent-dfw5-1.cdninstagram.com/v/t51.82787-19/572135037_18370564270156530_5429274219150090174_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_cat=111&ccb=7-5&_nc_sid=f7ccc5&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLnd3dy45NzcuQzMifQ%3D%3D&_nc_ohc=L6fzf4p5rSgQ7kNvwHY357a&_nc_oc=Adr…",
    "profile_url": "https://instagram.com/lafrenchtech",
    "profile_name": "La French Tech",
    "highlights_count": 1,
    "highlights": [
      {
        "id": "18149349364550565",
        "image": "https://scontent-dfw6-2.cdninstagram.com/v/t51.71878-15/823153282_1606577797876860_2925845146786887041_n.jpg?stp=c0.5x0.5f_dst-jpg_e35_p150x150_tt6_u&_nc_cat=110&ccb=7-5&_nc_sid=18de74&efg=eyJlZmdfdGFnIjoiU1RPUlkuYmVzdF9pbWFnZV91cmxnZW4uQzMifQ%3D%3D&_nc_ohc=F0ukwV-GI-UQ7kNvwGh…",
        "owner": "lafrenchtech",
        "title": "Panorama 2026",
        "highlight_url": "https://www.instagram.com/stories/highlights/18149349364550565"
      }
    ],
    "full_name": "La French Tech",
    "is_private": false,
    "bio_hashtags": null,
    "url": "https://www.instagram.com/lafrenchtech/",
    "is_joined_recently": false,
    "partner_id": "17841404695871898",
    "email_address": null,
    "external_url_title": {
      "url": "https://lafrenchtech.gouv.fr/",
      "title": null
    },
    "pronouns": null,
    "external_urls": [
      {
        "title": "lafrenchtech.gouv.fr",
        "url": "https://lafrenchtech.gouv.fr/"
      }
    ],
    "timestamp": "2026-10-15T08:10:22.198Z",
    "input": {
      "url": "https://www.instagram.com/lafrenchtech/"
    }
  }
]

Credits, failures and limits

CaseCreditsNotes
Successful scrape30 creditsConsumed when the result is ready.
Result not readyNot consumedThe API returns a pending status; retry after a few seconds.
Failed, blocked or timed-out scrapeRefundedCredits are returned for an unsuccessful request.
Profile above 12 posts60 creditsThe higher posts_number profile tier costs 60 credits.

Instagram API or Raw HTML scraper?

Instagram APIRaw HTML scraper
Endpoint/scrape/data-scraper/scrape/raw-html
ReturnsStructured profile or post JSONRendered page HTML
FlowAsynchronous: POST then GETOne synchronous request
Starting cost30 credits1 credit
Use it whenYou need parsed Instagram fieldsYou need your own extraction logic

Questions about the Instagram API

Which Instagram scrapers are available?
Use instagramProfile for a public profile or instagramPost for a public post.
Why does the API return a responseId?
Instagram requests are asynchronous. The responseId lets you retrieve the result without holding the initial request open.
What if the result is still pending?
Wait a few seconds and repeat the GET request. A pending response does not consume credits.
Does this scraper access private Instagram accounts?
No. It is intended for public pages and does not sign in to an Instagram account to access private data.

Source: ScrapingBot API documentation.

Other social media scrapers

Browse the Social Media category for the complete list of guides. Read How to scrape Instagram.

4.9
★★★★★
133 Google reviews

Trusted by developers and social media teams.
Customer reviews apply to ScrapingBot's service overall, not specifically to Instagram.

Start scraping Instagram today

500 free credits every month. No card required, cancel anytime.