Social Media

How do you scrape Instagram profiles via API without getting blocked?

To scrape an Instagram profile without logged-in sessions, rotating proxies or a headless browser, call ReefAPI's Instagram profile endpoint with a username and read the returned profile as structured JSON.

Instagram Public Data API engineLive JSON4 steps1,000 free credits

This guide demonstrates the real Instagram Public Data API API engine with a captured response from . The example is only published because the engine passed the SEO snapshot gate.

Use case

Influencer vetting, audience research, social monitoring and creator-marketing intelligence.

Step by step

Call the live endpoint

  1. 1

    Pick a public username

    Choose a public Instagram handle (no @) such as a brand or creator account you want to profile.

  2. 2

    Call instagram/v1/profile

    Send the username param from the captured example with your ReefAPI key in the x-api-key header.

  3. 3

    Read the profile from data

    Store username, full name, follower and following counts, post count, bio, external URL and verification flag.

  4. 4

    Check meta before charging jobs

    Use meta.record_count, latency_ms and error to confirm a clean response before running downstream enrichment.

Code

Copy the request

These snippets use the captured request params for instagram/v1/profile.

curl -X POST https://api.reefapi.com/instagram/v1/profile \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"username":"nike"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.instagram.profile with {"username":"nike"}.
Real response

Captured output from ReefAPI

Captured on UTC. The response below is the committed snapshot, including the API envelope and metadata.

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/instagram/v1/profile",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "username": "nike"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "instagram",
    "endpoint": "profile",
    "mode": "live",
    "latency_ms": 2283.3,
    "record_count": 1,
    "bytes": 391243,
    "cache_hit": false,
    "method": "i.instagram.com internal public JSON",
    "content_type": "application/json; charset=utf-8",
    "status": 200,
    "attempts": 1
  },
  "data": {
    "username": "nike",
    "full_name": "Nike",
    "biography": "Just Do It.",
    "bio_links": [
      {
        "url": "http://empli.fi/nike",
        "link_type": "external"
      }
    ],
    "pronouns": [],
    "follower_count": 291956008,
    "following_count": 264,
    "post_count": 1657,
    "highlight_reel_count": 5,
    "is_verified": true,
    "is_private": false,
    "is_business": true,
    "is_professional": true,
    "business_contact_method": "CALL",
    "profile_pic": "https://scontent-xxc1-1.cdninstagram.com/v/t[redacted-phone]/[redacted-phone]_[redacted-phone]_[redacted-phone]_n.jpg?stp=dst-jpg_s320x320_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4zOTkuYzIifQ&_nc_ht=scontent-xxc1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2gEQXjZlTP4g-7f0x7DCtiCtVhbitUaQrnQx_w881NUMJ-OLlVSCuNH0DMqkvX1SZ5Y&_nc_ohc=amo5Q-FduyMQ7kNvwFUmBI9&_nc_gid=hqFBBcwlLAhmIhYOTkWE3w&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_Af-QDWyPJkhMRUbYasQ8Lo-lYcEbuo1uNzQrZosNd59U3Q&oe=6A40AEBA&_nc_sid=8b3546",
    "external_url": "http://empli.fi/nike",
    "user_id": "13460080",
    "fbid": "[redacted-phone]",
    "recent_posts": [
      {
        "media_id": "[redacted-phone]",
        "shortcode": "DZK3iOsRlWX",
        "display_url": "https://scontent-xxc1-1.cdninstagram.com/v/t[redacted-phone]/[redacted-phone]_[redacted-phone]_[redacted-phone]_n.jpg?stp=dst-jpg_e15_fr_p1080x1080_tt6&_nc_ht=scontent-xxc1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2gEQXjZlTP4g-7f0x7DCtiCtVhbitUaQrnQx_w881NUMJ-OLlVSCuNH0DMqkvX1SZ5Y&_nc_ohc=xjWkU8zgG9QQ7kNvwE3WYuY&_nc_gid=hqFBBcwlLAhmIhYOTkWE3w&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_Af9yqlW9lgFJHM-6rMKqIdn-Fwayxv8nwTI-h1r80-DkoA&oe=6A40B3E0&_nc_sid=8b3546",
        "caption": "It was all going to plan until instincts took over…\n\nRip The Script",
        "like_count": 2492751,
        "comment_count": 55073,
        "taken_at_timestamp": 1780588767,
        "is_video": true,
        "video_view_count": 14430183
      },
      {
        "media_id": "[redacted-phone]",
        "shortcode": "DZITFYIR_kD",
        "display_url": "https://scontent-xxc1-1.cdninstagram.com/v/t[redacted-phone]/[redacted-phone]_[redacted-phone]_[redacted-phone]_n.jpg?stp=dst-jpg_e15_tt6&_nc_ht=scontent-xxc1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2gEQXjZlTP4g-7f0x7DCtiCtVhbitUaQrnQx_w881NUMJ-OLlVSCuNH0DMqkvX1SZ5Y&_nc_ohc=5Ug-ArUyKFEQ7kNvwG7H8EI&_nc_gid=hqFBBcwlLAhmIhYOTkWE3w&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_Af-Q6iKpww9TJzLWq0IGgJUeB21EZ8Ho-kEbPXHYAIVxtw&oe=6A409D48&_nc_sid=8b3546",
        "caption": "Nobody ever dreams of doing what they’re told. \n\nRip The Script. June 4th.",
        "like_count": 1055160,
        "comment_count": 8542,
        "taken_at_timestamp": 1780502471,
        "is_video": true,
        "video_view_count": 27244399
      },
      {
        "media_id": "[redacted-phone]",
        "shortcode": "DYm02w4FPJR",
        "display_url": "https://scontent-xxc1-1.cdninstagram.com/v/t[redacted-phone]/[redacted-phone]_[redacted-phone]_[redacted-phone]_n.jpg?stp=dst-jpg_e15_fr_p1080x1080_tt6&_nc_ht=scontent-xxc1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2gEQXjZlTP4g-7f0x7DCtiCtVhbitUaQrnQx_w881NUMJ-OLlVSCuNH0DMqkvX1SZ5Y&_nc_ohc=7dq0wX0q_PcQ7kNvwE5a0vj&_nc_gid=hqFBBcwlLAhmIhYOTkWE3w&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_Af-fF9-uLRGCXsFcKuFWarmA3I6sYiHUr290H-z4_cM6Pw&oe=6A40C886&_nc_sid=8b3546",
        "caption": "Time to go off script.",
        "like_count": 981945,
        "comment_count": 7033,
        "taken_at_timestamp": 1779379269,
        "is_video": false
      }
    ],
    "timeline_page_info": {
      "has_next_page": true,
      "end_cursor": "QVFBakVSdTNGNXJQQkVIY0V5YVhBUk5sME9xU3ZjUlRSWUdFdTBZdFBXUmNjZ05Bb1dJcGFZRS1EWUV6NzRhSURlNnRIRVlrZEx6NjFMWnFzRl8wSlBFRg=="
    }
  }
}
Manual way

Why this is hard manually

Instagram is one of the hardest targets to scrape: it gates public data behind login walls, rotating tokens and aggressive rate limits, and bans datacenter IPs quickly. A profile scraper that works today often breaks within days as tokens, layouts and anti-bot checks change.

Even after you get the data, normalizing follower counts, bios, external links, verification flags and post counts into a stable shape — across personal, business and creator accounts — is where most DIY Instagram scrapers fall apart.

ReefAPI way

Why ReefAPI solves it

ReefAPI wraps the working Instagram engine behind one POST request and returns the standard envelope: ok, data, meta and error. The live snapshot on the Instagram API page shows a real profile call returning username, full name, follower and following counts, bio and verification status.

Reach for it when you need dependable public Instagram data for influencer platforms, brand-safety checks, audience dashboards or AI agents — without managing accounts or proxies.

FAQ

Questions developers ask

Do I need an Instagram login or account?

No. You call ReefAPI with your x-api-key; no Instagram account, cookies or app password are required for public profile data.

Why does my Instagram scraper keep getting blocked?

Public Instagram scraping needs rotating residential proxies, fresh tokens and browser fingerprinting to clear login walls and rate limits. ReefAPI handles all of that and returns live JSON; blocked or failed calls are free.

What profile fields come back?

The captured response includes username, full name, follower and following counts, post count, biography, external link and verification status.

Can I scrape many profiles?

Yes. Run one request per username, store the ids you have seen, and dedupe in your own database. Every call draws from one shared credit pool.