Comparisons7 min read
Get Instagram data without login (2026): options compared
How to get Instagram data without logging in: what Meta's official API can and cannot read, how Instaloader and instagrapi work, and when to use a data API.
On this page
How do you get Instagram data without logging in?
You use a third-party data API that does the Instagram access on its side and returns JSON for public accounts. Meta's official API only reads your own professional account, plus basic public data of other business and creator accounts through Business Discovery. Popular open-source tools such as Instaloader and instagrapi work best with a logged-in session. StoriesFly is our API, so we use it in the examples below.
What changed
Instagram Basic Display API is gone
Meta announced on September 4, 2024 that the Instagram Basic Display API would end, and that starting on December 4, 2024 it would no longer be available. That API was the official way for an app to read a personal account's own photos and videos. Meta pointed developers to the Instagram API with Instagram Login and the Instagram API with Facebook Login, and both are meant for professional accounts (business or creator).
What the current official API can read
The Instagram API with Instagram Login serves professional accounts that do not need a linked Facebook Page. The Instagram API with Facebook Login serves professional accounts linked to a Page. In both cases the permissions give access to data created by the app user who granted them. Apps built for accounts you own or manage are the intended use.
For other people's accounts there is Business Discovery. Meta documents it as a way to get basic metadata and metrics about other Instagram professional accounts: for example followers_count, media_count and the list of published media. The request is made from the app user's own professional account, with that user's access token, and the target is named by username. Age-gated accounts are not returned. Meta documents this endpoint under the Facebook Login variant.
What the official documentation does not describe: an endpoint for another account's stories, or one that lists another account's followers. So the official API does not cover those two jobs.
Instagram data options compared
| Option | Needs an Instagram login? | Stories of other accounts | Follower lists | Main risk | Cost model |
|---|---|---|---|---|---|
| Official Instagram API (Graph API) | Yes: your professional account and an app | No endpoint documented | No endpoint documented | Limited to your own account and basic public data of business/creator accounts; app setup and permissions | Your own app and account setup; see Meta's terms |
| Logged-in scripts (Instaloader, instagrapi) | Yes for stories, highlights and followees | Yes, with a session | Yes, with a session | Your own account is tied to the scripts; rate limits and sessions that stop working | Free software; you provide accounts and proxies |
| Browser scrapers and scraping platforms (for example Apify actors) | Depends on the actor | Depends on the actor | Depends on the actor | Third-party code; fields and terms differ per actor | Set by each platform or actor |
| Third-party data API (StoriesFly) | No | Yes, public accounts | Yes, public accounts | A paid third-party dependency; no private content | Pay per request |
Logged-in scripts in more detail
Instaloader's command-line documentation says that --stories and --highlights require login, and that downloading the followees of a profile requires login. The README of instagrapi shows a login call in its quick start and says that anonymous public web paths are best treated as opportunistic rather than guaranteed. It also says the library combines public web and private mobile API flows. For more details, see our guide on download Reels in HD.
These tools are good when you already have an account you are willing to use, and you want to run things yourself. The cost is that you maintain sessions, proxies and rate-limit handling.
Scraping platforms
Platforms such as Apify host scrapers written by many authors. What an actor needs (cookies, proxies, your own login) and what it returns is defined by that actor, so read its page before you build on it.
Quick start with StoriesFly
Public data only. Follow Instagram's terms and the law where you live. The API returns private_account for private profiles and gives no private content. Get a key by signing in with Telegram at /developers/dashboard; a new account gets 100 free requests. Details of the product are on /developers/instagram-api-without-login, and the endpoint list is in the docs.
All calls are GET requests to https://storiesfly.com/api/v1/, with the key in the X-Api-Key header. No Instagram or Facebook account and no cookies are involved.
curl -H "X-Api-Key: $STORIESFLY_KEY" "https://storiesfly.com/api/v1/user/profile?username=nasa"The same call in Python, with error handling and the balance headers:
"""Read a public Instagram profile without logging in to Instagram.
Usage: STORIESFLY_KEY=sf_live_... python profile_no_login.py nasa
"""
import os
import sys
import requests
r = requests.get(
"https://storiesfly.com/api/v1/user/profile",
params={"username": sys.argv[1]},
headers={"X-Api-Key": os.environ["STORIESFLY_KEY"]},
timeout=60,
)
if r.status_code != 200:
err = r.json() # {"error": "...", "code": "not_found" | "private_account" | ...}
sys.exit(f"{r.status_code} {err['code']}: {err['error']}")
p = r.json()
print(f"@{p['username']} ({p['full_name']})")
print(f"followers {p['followers']:,} · following {p['following']:,} · posts {p['posts']:,}")
print("verified" if p["verified"] else "not verified", "· private" if p["is_private"] else "· public")
print("bio:", p["bio"])
print("balance left:", r.headers.get("X-Balance-Remaining"),
"| free requests left:", r.headers.get("X-Free-Units-Remaining"))Run it with STORIESFLY_KEY=sf_live_... python profile_no_login.py nasa. Errors come back as JSON, {"error": "...", "code": "..."}. Other endpoints work the same way: /v1/user/stories?username=, /v1/user/followers, /v1/user/following, /v1/user/posts, /v1/user/reels, /v1/user/highlights and /v1/post. The full list is in the docs and in the OpenAPI spec at https://storiesfly.com/openapi.json.
Two things to know. Media links in responses are Instagram CDN links that expire after a while, so download files right away. And lists are paged with next_cursor and has_more; send cursor=<next_cursor> to get the next page, and each page counts as one request.
Pricing is pay-as-you-go in USD, most calls cost one request, and you can pay with crypto including TON and USDT. Current prices are on /developers/pricing.
How to choose
- You only need your own account's data (posts, insights, comments): use the official Instagram API. It is the supported route.
- You need basic numbers of a few business or creator accounts and have a professional account of your own: Business Discovery may be enough.
- You want to run everything yourself, have accounts to spare, and need stories or followees: Instaloader or instagrapi, with a logged-in session.
- You want a ready scraper for a one-off job: look at scraping platforms, and check what each actor requires.
- You want JSON for public accounts, stories and follower lists included, without any Instagram account in your stack: a data API such as StoriesFly.
Whichever you choose, use public data only and keep to Instagram's terms.
Sources
Checked on 2026-10-21.
- Update on Instagram Basic Display API, Meta for Developers, September 4, 2024.
- Instagram Platform overview, Meta for Developers (current page).
- Business Discovery, Meta for Developers (current page).
- Instaloader command-line options (current page).
FAQ
Is there still an official way to read public Instagram profiles?
Only a narrow one. Business Discovery returns basic metadata and metrics of other business and creator accounts, and the request must come from your own professional account.
Did Instagram shut down the Basic Display API?
Yes. Meta said that starting on December 4, 2024 the Instagram Basic Display API would no longer be available.
Can Instaloader download stories without logging in?
Its documentation says the --stories option requires login. Some public profile data can be read without it.
Does instagrapi need a login?
Its quick start logs in with a username and password, and the README says anonymous public web access is opportunistic rather than guaranteed.
Can I get private account content through StoriesFly?
No. For a private profile the API returns the private_account error and no content.
Is it legal to use Instagram data?
We are not lawyers. Use public data only, follow Instagram's terms and the law where you live.
