Guides · Updated 2026-10-25

Can You Download Instagram Videos with the Official API?

Short answer: only your own. Instagram's official API returns video files for posts on accounts you own or manage, after you authorize those accounts through a Meta app. There is no official endpoint that takes a public Reel URL from someone else and returns the video.

Here is what each official option actually gives you, and what people use when they need arbitrary public posts.

Instagram API (Graph API): your own media

The current Instagram API (with Instagram Login or Facebook Login) works with professional accounts — Business or Creator. Once a user authorizes your app, you can list their media and read fields like media_type, permalink, thumbnail_url and media_url. For a video, media_url points at the MP4.

That is the right tool if you're building a dashboard or backup tool for accounts you control. It doesn't help if the URL belongs to someone else: you can't look up a post by its URL, and you need a Meta app, the right permissions and usually app review before it works for other users.

oEmbed: embed, not download

Instagram's oEmbed endpoint takes a public post URL and returns HTML for embedding the post on your page. It needs a Meta app access token and it does not return a video file. Fine for showing a Reel in a blog post, useless for saving it.

Basic Display API: gone

Older tutorials use the Instagram Basic Display API. Meta shut it down on December 4, 2024. Code built on it no longer works, and personal (non-professional) accounts have no official API at all now.

What people use instead

OptionAny public post by URLReturns the video fileWhat it costs you
Instagram API (Graph)No — only accounts you own or manageYes, via media_urlMeta app, professional account, app review
oEmbedYesNo, embed HTML onlyMeta app access token
Basic Display API——Retired December 2024
instaloader / yt-dlpYes, when not blockedYesLogin cookies on servers, frequent breakage
Hosted URL API (soclip)Yes, public postsYes, HD and SD links$0.002 per lookup, 500 free credits

Scrapers are free and work well from a home connection. From a cloud server they hit Instagram's login wall and rate limits quickly; this guide on the yt-dlp login error covers why. A hosted API moves that problem off your machine.

Getting a video from a public Reel URL

With soclip it is one request. Sign in with GitHub at soclip.dev to get a key, then:

curl -X POST https://api.soclip.dev/v1/media \
  -H "Authorization: Bearer $SOCLIP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.instagram.com/reel/DcTa7nogl9z/"}'

The response has the caption, author, thumbnail and a medias list with the HD video first. Download the url of the entry you want. Photo posts and carousels come back as image entries. Private posts are refused, and failed lookups aren't charged.

Step-by-step code: Python · Node.js · n8n, no code. Endpoint details are on the Instagram video download API page.

500 free credits on signup — 250 lookups across Instagram, TikTok, X and Facebook. Credits never expire.

Related guides