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
| Option | Any public post by URL | Returns the video file | What it costs you |
|---|---|---|---|
| Instagram API (Graph) | No — only accounts you own or manage | Yes, via media_url | Meta app, professional account, app review |
| oEmbed | Yes | No, embed HTML only | Meta app access token |
| Basic Display API | — | — | Retired December 2024 |
| instaloader / yt-dlp | Yes, when not blocked | Yes | Login cookies on servers, frequent breakage |
| Hosted URL API (soclip) | Yes, public posts | Yes, 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.