Instagram, API alternative
An Instagram Graph API alternative for public profiles, posts and comments
Meta shut down the Instagram Basic Display API on December 4, 2024. What remains is built for professional accounts working with their own data. If you need public posts, profiles and comments from accounts you don't manage, this page maps each Graph API call to a no-login input, says what neither route can do, and prices it: $1.90 per 1,000 results on the Free and Starter plans, $1.50 on Scale and $1.10 on Business.
- $1.90 per 1,000 results
- No app review or token
- Any public account
- Logged-out limits stated
What changed, and what Meta's APIs still do
Meta announced on September 4, 2024 that the Basic Display API, the one that connected personal Instagram accounts to consumer apps, would stop working on December 4, 2024, and that "there will no longer be a set of Instagram APIs for consumer developer apps" (Meta for Developers blog). The Instagram API that remains, with Facebook Login or Instagram Login, is for professional (business and creator) accounts. Read on October 6, 2026, Meta's reference pages set these limits:
- Business Discovery returns data about other business or creator accounts, through a professional account, with Facebook Login, and not for age-gated accounts (reference, updated August 12, 2026). Personal accounts are out of reach.
- Hashtag Search needs the Instagram Public Content Access feature, and you can query at most 30 unique hashtags in 7 days (reference).
- Comments come from media the token's own user created, at most 50 per query (reference).
Each call, mapped
| Graph API call | What it covers | Instagram Scraper input |
|---|---|---|
/{ig-user-id}/media | Your own account's media | A profile URL in startUrls: any public account's posts, newest first, as deep as the profile goes |
business_discovery | Public fields of other business and creator accounts | resultsType: "details": one row per profile, personal accounts included |
ig_hashtag_search + top or recent media | 30 unique hashtags per 7 days, with app review | A hashtag URL or keywords: Instagram's public top posts, typically up to about 60, for popular terms |
/{ig-media-id}/comments | Comments on your own media, 50 per query | resultsType: "comments" on any public post or reel, up to about 4,800 per post |
| Insights, publishing, messages | Your own account | Not available: these are owner-only |
The rows are not Graph API responses: field names follow the Actor's own schema (followerCount, likeCount, createdAt, owner), so map them once. Profile rows include instagramGraphId, the account's id in Meta's Instagram Graph API, so you can join them to data you already pull from Meta.
What you get for accounts you don't manage
- Profile rows: bio, all bio links, followers and following counts, category, account type, Threads username, Meta Verified status, emails and phones written in the bio, and up to 50 related accounts.
- Every public comment on a post, sorted by likes if you want, with keyword, like and date filters applied before billing.
- Add-ons per post: Instagram's own AI title and summary, view counts, and speech-to-text transcripts at $0.004 per started minute.
What a no-login scraper can't do
These are visible only to logged-in accounts, so no logged-out tool can return them: follower and following lists, who liked a post, stories and the contents of highlights, posts a profile is tagged in, replies to comments, Instagram's own profile and place search, and the email and call buttons of business profiles (contacts written in the bio are included). Hashtags without a public Instagram page return nothing and cost nothing.
When to stay on Meta's API
If you manage the account, use Meta's API: it is free, first-party and the only route to your own insights, publishing, messages and comment moderation. Use a public-data scraper for accounts you don't manage, for more than 30 hashtags a week, or when an app review isn't worth it for the job.
What it costs
| Job | Free and Starter | Scale | Business |
|---|---|---|---|
| 1,000 profiles in details mode | $1.90 | $1.50 | $1.10 |
| 10,000 posts from 200 profiles | $19.00 | $15.00 | $11.00 |
| 2,000 comments from one post | $3.80 | $3.00 | $2.20 |
Ask for it from ChatGPT, Claude or Cursor
The Instagram Scraper works as a tool in ChatGPT, Claude, Cursor and VS Code through Apify's hosted MCP server. Add this URL as a custom connector and sign in with your Apify account; runs bill to that account. Then ask in plain English, for example "get the profile details of these 50 brand accounts and list their bio links and follower counts".
https://mcp.apify.com/?tools=fetch-actor-details,yugenox/instagram-scraperclaude mcp add --transport http yugenox-instagram "https://mcp.apify.com/?tools=fetch-actor-details,yugenox/instagram-scraper"The AI setup guide walks through each client.
Run it from code
Two accounts' profile rows plus 12 recent posts each: at most 26 results, $0.0494 on the Free plan.
// Save as run.mjs, then: npm i apify-client && APIFY_TOKEN=... node run.mjs
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('yugenox/instagram-scraper').call({
startUrls: [
"https://www.instagram.com/nasa/",
"https://www.instagram.com/natgeo/"
],
includeDetails: true,
maxItemsPerQuery: 13
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) console.log(item.dataType, item.url, item.likeCount);import os
from apify_client import ApifyClient # pip install apify-client
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("yugenox/instagram-scraper").call(run_input={
"startUrls": ["https://www.instagram.com/nasa/", "https://www.instagram.com/natgeo/"],
"includeDetails": True,
"maxItemsPerQuery": 13,
})
if run is None:
raise RuntimeError("Run did not finish")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item.get("dataType"), item.get("url"), item.get("likeCount"))# Small jobs: runs the Actor and returns the rows in one call (up to 5 minutes).
curl -X POST "https://api.apify.com/v2/acts/yugenox~instagram-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":["https://www.instagram.com/nasa/","https://www.instagram.com/natgeo/"],"includeDetails":true,"maxItemsPerQuery":13}'Questions people ask
What replaced the Instagram Basic Display API?
For business and creator accounts, the Instagram API with Facebook Login or Instagram Login. For personal accounts in consumer apps, nothing: Meta said there would no longer be Instagram APIs for consumer developer apps after December 4, 2024.
Can the Graph API read accounts I don't manage?
Partly. Business Discovery returns public fields of other business and creator accounts, and Hashtag Search covers up to 30 unique hashtags in 7 days with Public Content Access. Personal accounts and comments on other people's posts are out of reach.
Do I need an Instagram account, an app or a token?
Not for this Actor. It reads public pages as a logged-out visitor. You need an Apify account, which runs it and bills you per result.
Is the output the same as a Graph API response?
No. Rows use the Actor's own field names. Profile rows carry instagramGraphId so you can join them to Graph API data you already have.
Can I get insights or follower lists?
No. Insights are for the account owner, and follower lists are visible only to logged-in accounts, so no logged-out tool can return them.
Is it legal to scrape public Instagram data?
The Actor collects only public data that anyone can see without logging in. Usernames, captions and comments are personal data, so follow GDPR, PIPEDA, CCPA and Instagram's terms, and ask a lawyer if you are unsure.
Run it on your own data
Open the Actor on Apify, paste your input and press Start. You pay per result from your own Apify account, with no subscription to us. Or connect it to your AI assistant and ask in plain English.
Last updated 2026-10-06.