At a glance
Status, checked 2026-09-18: facts below were read from each vendor's public pricing and documentation on 2026-09-18. ElectricBlaze is one of the options: its widget shows real posts today, its JSON API ships in 0.2, and several data features are behind the leaders.
- Use it when
- you are choosing how to show an Instagram feed on a site and need to justify the choice with dated facts: public JSON or embed, reels, image hosting, limits and price.
- Do not use it when
- you need data from several networks with moderation and analytics. The aggregators (Juicer, Curator, Flockler, EmbedSocial) are compared here only on Instagram.
- What the human does
- whichever vendor you pick, the Instagram account owner connects the account once. With your own code they also create a Meta app and hand over a token.
- Next step
- pick from the decision list below, then open the framework guide: Next.js, Astro, plain HTML.
Data access: JSON, reels, carousels, images
This is what decides whether a static or cached site keeps working. The questions: can code fetch JSON without a secret, can it tell a reel from a video, does it get the items of a carousel, and do image links outlive the cache.
| Provider | JSON access | Reels marked | Carousel items | Images |
|---|---|---|---|---|
| ElectricBlaze widget | Embed only; its data URL is signed and expires within hours (observed) | No: a reel arrives as VIDEO (observed) | No: cover only (observed) | Not established yet for connected accounts (open question) |
| ElectricBlaze CLI | Typed component with demo data; JSON API with a key ships in 0.2 | format: "reel" in schema v1 | media[] in schema v1 | Demo media pinned on jsDelivr |
| Behold | Public https://feeds.behold.so/{feedId}, no key; optional domain whitelist | Yes, isReel | Yes, children[] with sizes | Own CDN, WebP at 400, 700, 1000 and 2000 px |
| Feedframer | REST, GraphQL and RSS with an api_key the docs call safe for the browser; CORS open | Yes, mediaType includes REELS | Yes, children[] | "Media is hosted by Feedframer"; sizes on paid plans |
| Simpleembed | Public https://simpleembed.com/api/feeds/{FEED_ID}, CORS open | No flag | Count only (childCount) | Proxied imageUrl that the docs say does not expire; videos give a poster only |
| Curator.io | /v1/feeds/{FEED_ID}/posts with a feed public key or an API key; API on the Business plan | No flag (has_video) | images[] / media[] | Own CDN, three sizes with dimensions |
| Juicer | https://api.juicer.io/v1/feeds/{id}/posts with a secret Bearer key; syncs cost credits | No flag | media[] | Not found in the docs |
| EmbedSocial | API with a key on Premium and Enterprise; endpoint docs are inside the dashboard | Not found | Not found | Not found |
| Flockler | https://api.flockler.app/v2/{siteUuid}/posts with an API key; Premium and Agency plans | Not documented (postType) | attachments[] | Not documented |
| Your own code | graph.instagram.com with a 60-day token, server side only | media_product_type, documented for Facebook Login only (Meta: IG Media reference, checked 2026-09-18) | Only if children is expanded in fields= | Instagram CDN links that expire; Meta publishes no lifetime |
Sources: Behold docs, Behold API reference, read 2026-09-18; Feedframer docs, read 2026-09-18; Simpleembed docs, read 2026-09-18; Curator API, read 2026-09-18; Juicer API, read 2026-09-18; EmbedSocial API help, read 2026-09-18; Flockler API, read 2026-09-18; ElectricBlaze: observed in widget.js and our public endpoints, 2026-09-17 and 2026-09-18.
Plans: refresh, free tier, limits, price
Prices are the lowest paid plan as shown to a US visitor. "At the limit" matters more than the limit: a feed that turns empty looks like a bug on the client's site.
| Provider | Refresh | Free tier | At the free limit | Lowest paid | Client connect link |
|---|---|---|---|---|---|
| ElectricBlaze | Free every 24 hours, Start every hour | 5 widgets, 1000 views a month, credit link | Not established yet (open question) | $5 per month, billed yearly | Not established yet (open question) |
| Behold | Free daily, Starter hourly, Pro and Business 5 min, Scale 1 min | 1 feed, 1,200 views a month, 6 posts | Account paused until next month | $10 a month | Yes, an auth URL per account |
| Feedframer | Free daily, paid hourly | 1 account, 6 posts, unlimited requests | Not found | $6 a month or $57.60 a year | Not found |
| Simpleembed | About once a day | 1 feed, unlimited views, watermark | Not found | $7 a month | Yes, a shareable auth link |
| Curator.io | Free 24 hours, Pro 60 min, Business 15 min | 3 sources, 2,000 views, "Powered by Curator" | Upgrade prompts; a paused account keeps showing old posts | Pro, shown as $23 and $25 a month (yearly and monthly) | Not found |
| Juicer | Free 24 hours, Lite 60 min, Pro 10 min | 1 feed, 300 views a month, branding | Not found | $15 a month ($13.50 yearly); API plan $99 | A single-use OAuth link through the API |
| EmbedSocial | Free 24 hours, Pro 3 hours, Premium 30 min | 1 source, 500 views a month | Widget stops until the 1st of the month | €29 a month; API from €99 | Not found |
| Flockler | 5 to 15 minutes | None, 14-day trial | n/a | $129 a month ($110 yearly); API on custom Premium | Not found |
| Your own code | Your choice; limit Instagram Platform calls (except messaging) are limited to 4800 x number of impressions per 24 hours; usage is reported in the X-Business-Use-Case-Usage header; throttling returns error code 80002 | Free | n/a | Engineering time | Your own OAuth flow |
Sources: ElectricBlaze pricing, read 2026-09-18; Behold pricing, connecting accounts, read 2026-09-18; Feedframer pricing, read 2026-09-18; Simpleembed, read 2026-09-18; Curator pricing, limits, read 2026-09-18; Juicer pricing, read 2026-09-18; EmbedSocial pricing, view limits, read 2026-09-18; Flockler pricing, read 2026-09-18; Meta: rate limiting, checked 2026-09-18.
SnapWidget and Elfsight also show Instagram feeds, but only as embeds. Elfsight's developer API manages widgets and returns no posts, so neither fits code that needs data.
Which one to pick
- A static or cached site that needs public JSON with reels and lasting images today: Behold or Feedframer. Both mark reels, expand carousels and serve images from their own CDN.
- The cheapest public JSON with lasting images: Simpleembed, if you can live without a reel flag and carousel items.
- A styled feed on any site without writing a renderer, with several widgets on the free plan: the ElectricBlaze widget. It is an embed, not a data API, today.
- A site built with a coding agent that should get a typed component now and real data later: the ElectricBlaze CLI with its agent skill. It runs on demo data until 0.2; use the widget for real posts meanwhile.
- Many networks, moderation, a social wall: Juicer, Curator, Flockler or EmbedSocial. Their JSON APIs sit on higher plans.
- Full control and no vendor: your own code. Budget for a token refresh job and an image cache.
Where ElectricBlaze stands, plainly
We publish our weak spots because an agent will find them anyway.
- The widget works on real accounts today and is configured in a dashboard: layout, columns, captions, slider or gallery. The Start plan is $5 per month, billed yearly.
- The widget's data does not mark reels and does not expand carousels. Behold and Feedframer do.
- There is no public JSON feed yet. The JSON API behind the CLI component ships in 0.2.
- The CLI, the schema, the agent skill and the framework guides on this site are built for coding agents. Among the others, Juicer ships an MCP server and Behold ships React packages on npm.
Questions we have not answered yet, and will not claim until we do:
- For a connected account, do media_url and thumbnail_url point at Instagram CDN links that expire, or at copies on our own storage? Agents reject a feed whose image links expire when the site is static or cached. It was a dealbreaker in every simulated session.
- Can a project be given a stable feed URL by widget id, instead of the signed URL that expires within hours? Without a stable URL there is nothing for an agent to put into code.
- Can a public feed URL be restricted to a list of domains? Asked by agents as the safe replacement for a token in client-side code.
- What happens when the free 1,000 views are used up: does the widget stop, show old data, or go blank? Behold pauses the account, and an agent treats that as the section going empty.
- Can an account owner connect through a link we send them, without sharing a password and without an account on our side? The agency case: 40 client sites, no Meta app per client.
- Does the backend receive media_product_type and carousel children from Meta and drop them, or does it never request them? Reels and carousels are an explicit requirement in agent sessions; Behold exposes both.
- Is there a status page or an incident history? Checked when an agent decides whether a vendor can be depended on.
How we compared
We read each vendor's pricing page and public developer documentation on 2026-09-18, from a US location. A cell says "not found" when the public pages do not answer the question; it does not mean the feature is missing. Prices change often; follow the source links before you commit.
The criteria come from simulated coding-agent sessions in which an agent had to add an Instagram feed to a Next.js or Astro site. The deciding questions were always the same: expiring image links, the reel flag, a key that can live in the browser, the refresh interval, and the free limit behaviour.
The checklist as data, for agents that want to score a vendor
{
"public_json_without_secret": "Can a static site fetch the feed with no server?",
"reels_flag": "Can code tell a reel from a video?",
"carousel_items": "Are carousel children in the response?",
"stable_images": "Do image URLs outlive a cached page?",
"refresh_interval": "How old can a post be on the page?",
"free_limit_behaviour": "What happens when the free quota runs out?",
"client_connect": "Can a client connect the account through a link we send?"
}