Back to blog

How to Download Instagram Data in 2026

by Simon Balfe·

"How to download Instagram data" turns out to be four different questions in one. Are you trying to back up your own account, export the data of a Business account you own, pull public data on other accounts, or build a product that needs Instagram data on a schedule? The right answer depends on which one you mean.

This post walks through all four paths, with working code where it makes sense and an honest picture of the limits.

#1. Download your own Instagram data through the in-app export

The simplest path if you want a one-time backup of your own account.

Where to find it:

  1. Open Instagram on the web or in the app
  2. Go to Settings → Accounts Center → Your information and permissions → Download your information
  3. Choose what to include (posts, stories, messages, comments, followers, etc.)
  4. Pick a format: HTML for human reading, JSON for programmatic use
  5. Submit the request

Instagram emails you a download link within a few hours to a few days, depending on account size. The link expires after 4 days.

What you get: A zip file with directories for media/, your_instagram_activity/, connections/, and so on. JSON format includes structured data for posts, comments, follows, messages, ads activity, and account history.

Limits:

  • Only your own account
  • One-time snapshot, not a live API
  • No control over what fields are included
  • Download links expire fast
  • For large accounts the export can take days to generate

Best for: Personal backup, GDPR/CCPA data subject access requests, migrating off Instagram.

#2. Download data from a Business or Creator account you own via the Graph API

The official programmatic path for owned accounts.

The Instagram Graph API gives you account metadata, media objects, insights, and comments for any Business or Creator account that has connected to your Meta app through Instagram Business Login.

Setup steps:

  1. Create a Meta developer account at developers.facebook.com
  2. Create a new app of type "Business"
  3. Add the Instagram product and connect a Facebook Page to a Business or Creator Instagram account
  4. Generate an access token with the instagram_business_basic scope at minimum
  5. Submit your app for review if you need more permissions (insights, content publishing, manage comments)

Pulling account data with the token:

import requests

ACCESS_TOKEN = "your_long_lived_token"
INSTAGRAM_USER_ID = "1234567890"

# Get account metadata
account = requests.get(
    f"https://graph.facebook.com/v23.0/{INSTAGRAM_USER_ID}",
    params={
        "fields": "id,username,followers_count,media_count,biography,profile_picture_url",
        "access_token": ACCESS_TOKEN,
    },
    timeout=10,
).json()

print(account)

# List recent media
media = requests.get(
    f"https://graph.facebook.com/v23.0/{INSTAGRAM_USER_ID}/media",
    params={
        "fields": "id,caption,media_type,media_url,permalink,timestamp,like_count,comments_count",
        "access_token": ACCESS_TOKEN,
        "limit": 50,
    },
    timeout=10,
).json()

for item in media["data"]:
    print(item["timestamp"], item.get("like_count"), item.get("caption", "")[:60])

Limits:

  • Only owned Business or Creator accounts (consumer accounts cannot be read since the Basic Display API retirement in December 2024)
  • 200 calls per user per hour
  • Meta app review required for most useful scopes
  • No story highlights endpoint
  • No reel transcripts
  • Hashtag search capped at 30 unique hashtags per app per 7 days

Full breakdown: Instagram Graph API in 2026 explained.

Best for: Backing up your own Business or Creator account programmatically, building scheduling tools, internal analytics for your own accounts, customer-support inboxes for owned media.

#3. Download public data on any Instagram account through a third-party API

The path most teams end up on when they need data from accounts they do not own.

The Instagram Graph API has no public-profile read endpoint. To pull data on any creator, brand, or competitor account that has not logged into your app, you need a third-party data API.

CreatorCrawl reads any public Instagram profile, post, reel, comment thread, story highlight, or reel transcript through a REST API with a single API key. 250 credits are free on signup.

import requests

API_KEY = "your_creatorcrawl_key"

# Pull a public profile
profile = requests.get(
    "https://creatorcrawl.com/api/instagram/profile",
    headers={"x-api-key": API_KEY},
    params={"handle": "natgeo"},
    timeout=10,
).json()

print(profile["full_name"], profile["follower_count"], profile["media_count"])

# Pull recent posts
posts = requests.get(
    "https://creatorcrawl.com/api/instagram/user/posts",
    headers={"x-api-key": API_KEY},
    params={"handle": "natgeo"},
    timeout=10,
).json()

for post in posts["items"]:
    print(post["like_count"], post["comment_count"], post["caption"][:60])

# Pull a reel transcript
transcript = requests.get(
    "https://creatorcrawl.com/api/instagram/media/transcript",
    headers={"x-api-key": API_KEY},
    params={"url": "https://www.instagram.com/reel/ABC123/"},
    timeout=10,
).json()

print(transcript["transcript_only_text"])

Endpoints cover the gaps in the Graph API:

  • Profile, basic profile, posts, reels for any public handle
  • Comment threads on any public post
  • Story highlights and items inside each highlight
  • Reel transcripts (plain text plus timestamped segments)
  • Reel keyword search
  • oEmbed metadata for embedding

Limits:

  • Public Instagram data only (no private profiles, no protected content)
  • Costs money past the free tier (credits are pay-as-you-go, never expire)
  • Subject to upstream rate-limit absorption from the underlying scraping layer (usually invisible at API consumer level)

Best for: Influencer marketing platforms, agency analytics, competitor monitoring, market research, content research, AI agents that read arbitrary creators, any product where the data subject has not logged into your app.

Full guide with code samples for every endpoint: Instagram scraper API: the complete developer guide.

#4. DIY: write your own Instagram scraper

The cheapest path on paper and the most expensive in maintenance.

You can technically extract Instagram data by:

  1. Using a headless browser (Playwright, Puppeteer) to navigate instagram.com and parse the DOM
  2. Calling Instagram's internal mobile API endpoints with reverse-engineered authentication
  3. Pulling data from server-rendered HTML for non-logged-in routes (limited and Instagram increasingly blocks these)

What it looks like in practice:

# Example only. Production scrapers need proxy rotation, CAPTCHA handling,
# fingerprinting evasion, and constant updates as Instagram changes its frontend.

from playwright.sync_api import sync_playwright

def fetch_profile_html(handle: str):
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()
        page.goto(f"https://www.instagram.com/{handle}/")
        page.wait_for_load_state("networkidle")
        html = page.content()
        browser.close()
        return html

The script works the first time you run it. By the time you have a real product depending on it, Instagram has changed its frontend, rotated its anti-bot detection, or started returning login walls to data-center IPs.

What you actually pay for in a DIY scraper:

  • Engineering time to write it (1 to 2 weeks initial)
  • Residential proxy bandwidth ($50 to $500 per month at modest scale)
  • Ongoing maintenance time (4 to 16 hours per month when Instagram ships changes)
  • CAPTCHA-solving services ($1 to $3 per 1,000 challenges)
  • Lost data on bad runs

For a research project or one-off pull, DIY is fine. For a product that depends on Instagram data, the all-in cost almost always exceeds a commercial data API once you count engineering hours honestly.

Best for: One-off research, prototyping, learning how anti-bot detection works.

#Which path fits your case

Use caseBest method
Back up my own personal accountIn-app data export
Programmatic access to my own Business/Creator accountInstagram Graph API
Build a scheduling tool for users' own accountsInstagram Graph API with per-user OAuth
Pull public data on creators or competitorsThird-party data API (CreatorCrawl)
Extract reel transcripts at scaleCreatorCrawl (dedicated transcript endpoint)
One-off research pullDIY scraper or CreatorCrawl free tier
AI agent that reads Instagram in natural languageCreatorCrawl MCP server

#Frequently asked questions

Can I download my Instagram data without an API? Yes. Settings → Accounts Center → Your information and permissions → Download your information triggers a one-time export with all your media, posts, messages, and account history.

How do I download Instagram data for an account I do not own? The Instagram Graph API does not support this. A third-party Instagram data API (CreatorCrawl, ScrapeCreators, EnsembleData, Apify) reads public profile data without OAuth or app review.

Is there an Instagram API that returns reel transcripts? Not the official Graph API. CreatorCrawl has a dedicated reel transcript endpoint that returns plain text and timestamped segments.

How long does the Instagram in-app data export take? Anywhere from a few hours to a few days depending on account size. Instagram emails you the download link, which expires after 4 days.

Can I download Instagram comments? The Graph API exposes comments on your own owned media only. CreatorCrawl's post comments endpoint returns full comment threads on any public post.

Is it legal to download Instagram data this way? Your own data is always yours to export. The Graph API gives you sanctioned access to accounts that have consented. Third-party APIs read publicly visible data, which is generally considered legal under hiQ Labs v. LinkedIn (2022), but specifics depend on jurisdiction and downstream use.

#Where to go from here

Each path has the right use case. Your own data: the in-app export. Your own Business account: the Graph API. Public profiles, posts, reels, comments, and transcripts on accounts you do not own: a third-party data API.

If your case is the third one, sign up for CreatorCrawl and pull live Instagram data in under a minute. 250 credits free, no card, full endpoint catalogue at /endpoints.

Explore CreatorCrawl

More from the Blog