Instagram Webflow Integration: 4 Routes and Their Real Costs
Webflow does not build an Instagram integration of its own. Its integrations page says live Instagram content needs third-party tools or server-side development, because Graph API authentication cannot be done from frontend hosting. Four routes follow from that. Here is what each one costs.
Last updated: October 2026
Feedframer is the fourth route without the server: one OAuth click, no Facebook app, and the 60-day token kept alive for you. The free plan is 1 Instagram account, your 6 most recent posts and unlimited API requests — no credit card, no trial to expire. You need an Instagram Business or Creator account either way.
Why Webflow Can't Just Do This For You
Reading an Instagram feed means calling the Instagram Graph API with an access token. A token is a secret, it is tied to one Instagram account, and it has to be refreshed before it expires. None of that can live in a static page: anything you paste into Webflow is readable by anyone who views source, and Webflow hosting has nowhere to run the refresh.
Webflow says this itself. Its Instagram integrations page opens by stating that displaying live Instagram content on a Webflow site requires third-party tools or custom server-side development, because Instagram's Graph API authentication can't be handled by frontend hosting alone. Every route below is a different answer to the question of who holds the token.
The Four Routes Webflow Documents
These are the four approaches named on webflow.com/integrations/instagram, in Webflow's own order, with the cost each one carries.
1. The SI Instagram Feed Marketplace app
Webflow describes this as the only native Webflow Marketplace app for Instagram. It installs from the Apps directory, needs no embed code, has a free plan, and offers marquee, masonry, slider and featured-grid layouts. It connects with an Instagram Business or Creator account. Webflow notes that the app is approved by Webflow, which reflects a quality review rather than an endorsement.
What it costs you: the layout. You get the app's four layouts and its settings, not your own markup. The posts are not in your Webflow CMS, so nothing else on the site can reference them. It is the right answer when the feed is decoration and the wrong one when it is part of the design system.
2. A widget service in a Code Embed element
Elfsight, EmbedSocial, Curator.io and similar services hold the Instagram token, poll for new posts, and give you a snippet to paste into a Webflow Code Embed element. Webflow names this as its own recommended approach for displaying auto-updating Instagram feeds.
What it costs you: a paid Webflow site plan is required to use the Code Embed element at all. The widget renders its own DOM from its own script, so Webflow's style panel cannot touch it and your classes do not apply. It will not render on the Webflow canvas — Webflow documents that as expected, and tells you to publish to a staging or live domain to check it. And you are adding a third-party blocking script to a page you otherwise control end to end.
3. Zapier, IFTTT or viaSocket into Webflow CMS
An automation watches Instagram and creates a Webflow CMS item per post. This is the only documented route that puts the posts in the CMS, which means you can style them with Webflow classes and bind them in Collection lists like any other content.
What it costs you: it is one-way and it accumulates. Every post becomes a permanent CMS item counting against your plan's item limit, deletions on Instagram do not propagate, and you pay per task. The sharp edge is the images: an automation that copies Instagram's image URL into a CMS field stores a URL that expires — see below.
4. The Instagram Graph API plus the Webflow Data API
Full control over syncing, publishing and data mapping. Webflow's own summary of this route ends with the catch: it requires server-side development.
What it costs you: a Facebook app, Instagram Business Login, somewhere to run the code, and ownership of the 60-day token forever. That last part is the one people underestimate, and it is the next section.
Webflow adds that most implementations combine two or more of these, which is a fair description of what happens when the first choice runs out of road.
Route 4's Real Cost Is the 60-Day Token
A long-lived Instagram access token lasts 60 days. Refreshing it is one scheduled call, so the naive version of this problem looks solved. It is not: in our own production data on 4 October 2026, 42 of 43 dead-token accounts broke before their expiry date — mostly because the account owner changed their Instagram password or removed the app. A refresh job prevents neither.
That is the part a Webflow build has nowhere to put. Detecting a dead token, telling the client, and getting them to re-authorise is an application, not a snippet. Full detail, including what every code 190 message means, is in our instagram access token guide.
Route 5: The Data Route Without the Server
There is a fifth route that Webflow's page does not name, and it is the one that fits a Webflow project best: a hosted feed API. It is route 4 with someone else running the server. You connect the Instagram account once with OAuth, and you get the posts back as JSON, GraphQL or RSS against one API key.
The practical difference from route 2 is that you get data, not markup. Nothing renders until you render it, so the feed is built from your own Webflow elements and your own classes. The practical difference from route 3 is that it reflects Instagram instead of accumulating a copy of it.
What goes in the Code Embed element
One fetch, then write into elements you built in the Designer. Give your wrapper an ID in Webflow's settings panel and target it:
<script>
fetch('https://feedframer.com/api/v1/me?api_key=YOUR_KEY')
.then((r) => r.json())
.then((feed) => {
// A broken connection still returns 200 with the last known posts,
// so check status rather than trusting a successful response.
if (feed.status !== 'active') {
console.warn('Feedframer: feed is', feed.status, 'since', feed.lastFetchAt);
}
document.getElementById('ig-feed').innerHTML = feed.posts
.map(
(post) => `<a href="${post.permalink}" class="ig-item">
<img src="${post.thumbnailUrl || post.mediaUrl}"
alt="${post.altText || ''}" loading="lazy">
</a>`
)
.join('');
});
</script>ig-item is a Webflow class you style in the Designer, so the grid, the hover state and the breakpoints are all yours. Response fields are id, caption, altText, mediaType, mediaUrl, thumbnailUrl, permalink, timestamp, likeCount and commentsCount, plus status and lastFetchAt on the feed itself. Filter with filter[type], filter[publishedAfter] and filter[publishedBefore], and sort with sort. The full reference is in the API docs.
Four Webflow Details Worth Knowing First
The Code Embed limit is 50,000 characters, not 10,000
Webflow's release note for the increase says you can add up to 50,000 characters of custom code across Site settings, Page settings, Code Embed elements and CMS Rich text fields, on all paid sites and workspaces. Plenty of guides still quote the old 10,000 figure. Either way the snippet above is a few hundred characters, so the limit only bites if you are pasting a widget's whole bundle.
Custom code needs a paid Webflow plan
Webflow states that a paid site plan is required to use the Code Embed element. On a free Webflow site, the Marketplace app in route 1 is the only route that does not need custom code at all.
Page Settings vs Project Settings
Put the feed script in the page's own custom code, under Page Settings, when only one page shows the feed. Project Settings code runs on every page on the site, which is what you want for a shared script and what you do not want for a fetch that only one page uses.
Nothing renders on the canvas
Embedded scripts do not run in the Webflow Designer. Webflow documents this as expected behaviour: publish to a staging or live domain to check the feed. An empty box in the Designer is not a bug.
The Single-Post Embed, and Exactly Where It Stops
If you only want one post on the page, you do not need any of the above. Open the post on instagram.com, use the three-dot menu, choose Embed, copy the code, and paste it into a Code Embed element. Webflow's fix for an embed that renders only a loading icon after publishing is to add //platform.instagram.com/en_US/embeds.js to your site's footer custom code.
This route got cheaper in 2026 and it is worth knowing why. Meta's Instagram Platform changelog entry dated 15 May 2026 says the Instagram oEmbed API can now be called without an access token. The Facebook app, the App Review for oEmbed Read and the Live-mode step that this route needed for years are no longer part of it. Guides that still describe app review as the price of embedding a post are out of date.
Where it stops, from Meta's own documentation:
- It is one post, not a feed. The endpoint is
GET /instagram_oembed?url=and takes the URL of a single post. There is no parameter that lists an account's recent media, so "my latest six posts" is not something oEmbed can answer. - It never updates. Webflow puts it plainly: the native embed does not auto-update, it shows that exact post permanently. New posts mean editing the page.
- Several account types are excluded. Meta's docs state that posts on private, inactive and age-restricted accounts are not supported, nor are accounts that have disabled embeds. Stories are not supported.
- You get Instagram's styling. The markup is theirs, so it looks like an Instagram card on your page rather than like your page.
For a single highlighted post, that is a fine trade. For "show the latest posts, forever, without me touching it", every one of those four limits is disqualifying — which is why the auto-updating routes exist.
Why the Images Break Three Days Later
This is the failure that catches Webflow builds specifically, because routes 3 and 4 both invite it. Instagram's CDN image and video URLs are temporary — they carry an expiry in the URL itself. Copy one into a Webflow CMS field or hard-code it into a page, and the image works in testing and is a broken box by the end of the week.
Any route that stores the media rather than linking to Instagram's copy avoids this. Feedframer downloads each post's image or video and serves it from cdn.feedframer.com; no Instagram CDN URL is returned in an API response at all, so there is nothing in your Webflow site with a clock on it. On Premium, each post also carries a sizes object with 320, 768, 960 and 1200-pixel variants, which is what you want behind Webflow's responsive breakpoints.
Which One to Pick
One post, one campaign. The native Instagram embed. No account anywhere, no token, no plan requirement beyond the Code Embed element itself.
A feed in a footer on a free Webflow site. The SI Instagram Feed Marketplace app. It is the only route that needs neither custom code nor a paid plan.
A feed that has to match the design. A feed API and your own markup. You are writing twenty lines of JavaScript instead of pasting one line, and in exchange the feed is made of your Webflow classes.
Posts that other Webflow content needs to reference. An automation into Webflow CMS, accepting the item count and the expiring-image problem, or a feed API writing to the Webflow Data API from your own job.
Several clients' accounts. A feed API with per-account keys. Feedframer's Premium plan is 5 Instagram accounts for $6 a month, each with its own key, which is the case the agencies who use us are actually solving.
Frequently Asked Questions
Does Webflow have an Instagram integration?
Not one that Webflow builds itself. Webflow's own Instagram integrations page states that displaying live Instagram content on a Webflow site requires third-party tools or custom server-side development, because Instagram Graph API authentication cannot be handled by frontend hosting alone. It documents four routes: the SI Instagram Feed Marketplace app, a third-party widget pasted into a Code Embed element, an automation such as Zapier syncing posts into Webflow CMS, or the Instagram Graph API with the Webflow Data API.
How do I add an auto-updating Instagram feed to Webflow?
You need something that holds a refreshed Instagram access token for you, because the feed cannot be fetched from the browser alone. The options are a Marketplace app, a widget service, an automation into Webflow CMS, a feed API such as Feedframer, or your own server. Webflow names the widget-in-a-Code-Embed route as its recommended approach for auto-updating feeds, and a paid Webflow site plan is required to use the Code Embed element.
Does the Instagram embed code need an access token?
No, not since 15 May 2026. Meta's Instagram Platform changelog entry for that date says the Instagram oEmbed API can now be called without an access token. That removes the Facebook app and App Review step that this route used to need. It does not make oEmbed a feed: the endpoint takes one post URL and returns the embed markup for that one post, so it cannot list an account's recent media.
Why does my Instagram embed not show up in the Webflow Designer?
Because third-party embeds do not execute on the Webflow canvas. Webflow documents this as expected behaviour and tells you to publish to a staging or live domain to check the feed. If Instagram's own single-post embed renders only a loading icon after publishing, Webflow's fix is to add //platform.instagram.com/en_US/embeds.js to your site's footer custom code so the script loads on every page.
What is the character limit on a Webflow Code Embed element?
50,000 characters. Webflow's release note for the increase says you can add up to 50,000 characters of custom code across Site settings, Page settings, Code Embed elements and CMS Rich text fields, and that the limit is available on all paid sites and workspaces. Older guides still quote 10,000, which is out of date.
Why do Instagram images break on my Webflow site after a few days?
Because Instagram's CDN media URLs are temporary and carry an expiry in the URL. If you copied Instagram image URLs into Webflow, or into Webflow CMS items through an automation, they stop resolving once that expiry passes. Any route that stores the media itself avoids this. Feedframer downloads each post's media and serves it from cdn.feedframer.com, so no Instagram CDN URL is ever returned in an API response.
Can I use Instagram oEmbed for a private account?
No. Meta's oEmbed documentation states that posts on private, inactive and age-restricted Instagram accounts are not supported, and that accounts which have disabled embeds are not supported either. Stories are not supported at all. The Graph API route needs an Instagram Business or Creator account, so neither route works with a personal private account.
Is it safe to put a feed API key in a Webflow Code Embed?
A Feedframer API key is passed as an api_key query parameter and is read-only: it returns one Instagram account's stored posts and nothing else. Anyone reading your published page source can see it, which is acceptable for a feed you are publishing publicly anyway, but treat it as public — do not reuse it anywhere else, and rotate it from the dashboard if you need to. Keys are issued per connected Instagram account, not per site.
What does Feedframer cost for a Webflow site?
The free plan is one Instagram account, your 6 most recent posts, unlimited API requests, and a daily refresh. Premium is $6 a month or $60 a year for 5 Instagram accounts, up to 100 posts a page, cursor pagination, responsive image sizes, and an hourly refresh. There is no trial; the pricing page carries a 30-day money-back guarantee instead.
Related Resources
Embed an Instagram Feed on Any Website
The platform-independent version of this guide — WordPress, Shopify, plain HTML and React
Instagram Long-Lived Access Token
Generate a 60-day token, refresh it, and handle the ways it dies early
All Instagram guides
Feeds, single posts, profiles, mobile apps and access tokens, in one index
Instagram Setup
Connecting a Business or Creator account
Pricing
Free and Premium, and what separates them
Try Route 5 on Your Webflow Site
Connect one Instagram account, paste the snippet above into a Code Embed element, and style the result with your own classes. Free plan: 1 account, your 6 most recent posts, unlimited API requests. No credit card.