Scripts

Instagram Embed

Instagram is a photo and video sharing social media platform.

Nuxt Scripts provides a <ScriptInstagramEmbed> component that fetches Instagram embed HTML server-side and proxies all assets through your server - no client-side API calls to Instagram.

<ScriptInstagramEmbed>

The <ScriptInstagramEmbed> component:

  • Fetches the official Instagram embed HTML server-side
  • Rewrites all image and asset URLs to proxy through your server
  • Removes Instagram's embed.js script (not needed)
  • Caches responses for 10 minutes

Demo

Instagram
Instagram post shared by @cloudflare
cloudflare

.
The Cloudflare Zaraz ecosystem is expanding! Read more to learn how you can now connect with Certified Zaraz Developers to help you with migrating to Zaraz, maintaining your configuration and more.

These certified developers are now available to assist you with everything related to Zaraz, whether it's migration, configuration, or ongoing support. They are well-equipped to ensure that you get the most out of your Zaraz experience, and they have a direct line of communication with the Cloudflare Zaraz team when a need arises.

Read more on our blog from the link in our BIO or stories feed.

Props

The <ScriptInstagramEmbed> component accepts the following props:

PropTypeDefaultDescription
postUrlstringRequiredThe Instagram post URL (e.g., https://www.instagram.com/p/ABC123/)
captionsbooleantrueWhether to include captions in the embed
apiEndpointstring/api/_scripts/instagram-embedCustom API endpoint for fetching embed HTML
rootAttrsHTMLAttributes{}Root element attributes

Slot Props

The default slot receives:

interface SlotProps {
  html: string      // The processed embed HTML
  shortcode: string // The post shortcode (e.g., "C3Sk6d2MTjI")
  postUrl: string   // The original post URL
}

Named Slots

SlotDescription
defaultMain content, receives { html, shortcode, postUrl }. By default renders the HTML.
loadingShown while fetching embed HTML
errorShown if embed fetch fails, receives { error }

Supported URL Formats

  • Posts: https://www.instagram.com/p/ABC123/
  • Reels: https://www.instagram.com/reel/ABC123/
  • TV: https://www.instagram.com/tv/ABC123/

How It Works

  1. Server-side fetch: The Instagram embed HTML is fetched from {postUrl}/embed/
  2. Asset proxying: All images from scontent.cdninstagram.com and assets from static.cdninstagram.com are rewritten to proxy through your server
  3. Script removal: Instagram's embed.js is removed (not needed for static rendering)
  4. Caching: Responses are cached for 10 minutes at the server level

This approach is inspired by Cloudflare Zaraz's embed implementation.

Privacy Benefits

  • No third-party JavaScript loaded
  • No cookies set by Instagram/Meta
  • No direct browser-to-Instagram communication
  • User IP addresses not shared with Instagram
  • All content served from your domain

Limitations

  • Only supports single-image posts (galleries show first image only)
  • Videos display as static poster images
  • Some interactive features are not available (likes, comments)