Instagram Basic Display API is gone: what to use instead
Meta deprecated the Instagram Basic Display API on December 4, 2024, and requests to it now return an error. What replaces it depends on the account: the Instagram API with Instagram Login for professional accounts, the oEmbed endpoint for embedding public posts, and for a plain personal account, nothing. Changelog checked on October 22, 2026.
What actually happened to the Basic Display API
The Instagram Platform changelog carries the entry under December 4, 2024: "The Instagram Basic Display API has been deprecated." Requests return an error rather than data. There is no grace period left to plan around, and no toggle in the App Dashboard that brings it back.
Basic Display was the easy one. It read a user's own profile, media and captions with a personal Instagram account, no Facebook Page, no business conversion, and a review process most side projects could pass. That is exactly why it is still all over Stack Overflow answers, npm packages and tutorials dated 2023. If your integration broke and you went looking for the fix, you probably found three of those before you found this.
Two more dates from the same changelog matter while you are migrating. The old scope values were deprecated on January 27, 2025, replaced by the instagram_business_* family. And the oEmbed Read feature is deprecated as of November 3, 2025, with several oEmbed response fields removed.
What to use instead, by use case
| What you were doing | Replacement | Account type it needs |
|---|---|---|
| Read your own profile and media | Instagram API with Instagram Login | Professional (business or creator) |
| Read media on a Page-linked account | Instagram API with Facebook Login | Professional, linked to a Facebook Page |
| Publish posts and Reels | Instagram API with Instagram Login | Professional |
| Read and reply to comments | Instagram API with Instagram Login | Professional |
| Send and receive DMs | Instagram API with Instagram Login, or Messenger API support for Instagram | Professional |
| Embed a public post on a site | Instagram oEmbed endpoint | Any public account |
| Read a personal account's feed | No replacement | Not available |
The pattern is the one Meta has followed across its whole platform since 2023: APIs exist for accounts that are a business, and the personal-account read API is gone for good.
Instagram API with Instagram Login: the real replacement
This is where almost everyone lands. It covers Instagram professional accounts, businesses and creators, and it does not require a linked Facebook Page, which is the part that makes it a genuine successor rather than a detour. Credentials are Instagram's own and the host is graph.instagram.com, through the flow Meta calls Business Login for Instagram.
Four scopes cover the surface:
instagram_business_basic, always requiredinstagram_business_content_publish, to publish mediainstagram_business_manage_comments, to read, reply, hide and delete commentsinstagram_business_manage_messages, for DMs
Meta's migration guide describes it as two permissions per job: the basic scope plus the one specific scope for messaging, comment moderation or publishing. Capabilities on offer are comment moderation, content publishing, media insights, mentions and messaging. The documented limits are worth reading before you plan: this setup cannot access ads or tagging.
So the migration is not a one-line host swap. You are changing the account type, the login flow, the scope names and the permission review, and you are gaining write access you did not have before. If tokens are the part that worries you, I wrote up the whole lifecycle in social media access tokens.
Instagram API with Facebook Login: the Page-linked path
If the account is already connected to a Facebook Page and your app holds Page credentials, this is the variant to keep. It runs on Facebook credentials against the Graph API, and Meta positions it for existing Page-linked integrations rather than new builds. The capability set overlaps heavily with Instagram Login; the difference is whose login the user goes through and whether a Page has to exist at all.
Pick it when a Page is already part of the product, for example because you also publish to Facebook. Pick Instagram Login when the user only has Instagram and you do not want to explain why your app is asking about Facebook. The full surface of both, with the endpoints and the rate limits, is in Instagram Graph API in 2026.
Embedding public posts: oEmbed, with caveats
If all you ever used Basic Display for was putting a post on a web page, the endpoint you want is GET /instagram_oembed on graph.facebook.com. It returns embed HTML for photo, video, Reel and Feed posts, at up to 1,000 requests per hour.
What it will not do is longer than what it will. It does not serve private, inactive or age-restricted accounts, accounts that have turned Embeds off, Stories, or anything inside a Shadow DOM. And per the changelog entry of April 8, 2025, the oEmbed Read feature is deprecated as of November 3, 2025, with response fields removed. Treat it as a maintenance path, not a foundation.
Instagram API for a personal account: there is no version of this
This is the honest answer nobody writing about Basic Display wants to give. There is no API that reads a personal Instagram account's media. Basic Display was it, and it is off. Your options are to ask the user to switch to a professional account, which is free and reversible in the Instagram app, or to drop the feature.
What you must not do is reach for a scraper or an unofficial library that signs in as the user. That is a direct breach of Meta's Platform Terms, and the account that pays for it is your user's, not yours. I covered what gets flagged and why in Instagram automation in 2026.
A migration checklist that fits on one screen
- Decide the account type you will support. Professional unlocks everything; personal unlocks nothing.
- Register the product on your Meta app: Instagram API with Instagram Login, or with Facebook Login if a Page is already in the picture.
- Replace old scope values with the
instagram_business_*names. The old ones went out on January 27, 2025. - Rebuild the login as Business Login for Instagram and store the token you get back, not the one your old code expected.
- Submit for App Review on the scopes you actually use. Publishing and messaging are reviewed separately from basic reads.
- Re-check the changelog before you ship. Three of the dates in this article were deprecations announced months ahead of the cut.
If you would rather not own any of this, that is the job PlugKit does: one API and one hosted MCP server across Instagram, Facebook, LinkedIn, TikTok, YouTube, X, WhatsApp and Telegram, with the OAuth flows, token refresh and per-platform quirks kept on our side. $49 a month for 5 connected accounts, cancel anytime. It only speaks to professional Instagram accounts, because that is the only thing the official API speaks to. For the agent side of it, see the Instagram MCP server.
FAQ
Is the Instagram Basic Display API still available?
No. The Instagram Platform changelog records it as deprecated on December 4, 2024, and requests to it return an error. There is no extension or legacy mode.
What replaced the Instagram Basic Display API?
The Instagram API with Instagram Login, for Instagram professional accounts, businesses and creators, with no Facebook Page required. It covers publishing, comments, messaging, media insights and mentions, and unlike Basic Display it can write, not only read.
Can I use the Instagram API with a personal account?
No. Every current Instagram API requires a professional account, business or creator. Basic Display was the only path for a personal account and it is gone. Switching to a professional account in the Instagram app costs nothing and can be undone.
Do I still need a Facebook Page to use the Instagram API?
Not with the Instagram API with Instagram Login, which authenticates with Instagram credentials against graph.instagram.com. A Page is needed only for the Instagram API with Facebook Login and for Messenger API support for Instagram.
Can I still embed Instagram posts without an API key?
The oEmbed endpoint GET /instagram_oembed returns embed HTML for public photo, video, Reel and Feed posts, at up to 1,000 requests per hour. It does not work for private accounts or Stories, and its Read feature is deprecated as of November 3, 2025, so plan for it to keep shrinking.
One plug for every platform your agent touches
$49 a month for 5 connected accounts, cancel anytime. Every feature in every plan.
Get your API key →