REST API · GET
Instagram Media API
Download videos and photos from public Instagram posts, Reels, and carousels via a direct link.
https://api.interapi.dev/api/v1/instagram
Price: 6 credits per successful response. 5xx is free, 4xx costs at most 1 credit. Pricing
What it does
This endpoint extracts media from public Instagram content: single photos, videos, Reels, and multi-slide carousels. The response includes a media array with type (video or photo), direct file URL, and quality label when available. Additional fields include video_url for the primary video, video_hd_url for a high-quality variant, and thumbnail for the preview image.
- Posts, Reels, and carousels
- Multiple media items per response
- Direct download URLs
- Thumbnail preview
How to use it
- Copy a public link to an Instagram post, Reel, or carousel.
- Send a GET request to /api/v1/instagram with the url parameter.
- The response contains a media array with direct file URLs and a thumbnail.
Parameters
urlstringrequired- Public HTTPS link to an Instagram post or Reel (instagram.com/p/… or /reel/…).
typestringoptional- Content type hint for the parser. Default is media — works for both photos and videos.
Request example
curl -G "https://api.interapi.dev/api/v1/instagram" \
-H "X-API-Key: YOUR_API_KEY" \
--data-urlencode "url=https://www.instagram.com/p/C2VFqJMtui4/"import requests
resp = requests.get(
"https://api.interapi.dev/api/v1/instagram",
params={"url": "https://www.instagram.com/p/C2VFqJMtui4/"},
headers={"X-API-Key": "YOUR_API_KEY"},
timeout=60,
)
resp.raise_for_status()
print(resp.json())const params = new URLSearchParams({ url: "https://www.instagram.com/p/C2VFqJMtui4/" });
const resp = await fetch(`https://api.interapi.dev/api/v1/instagram?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
console.log(await resp.json());<?php
$query = http_build_query(["url" => "https://www.instagram.com/p/C2VFqJMtui4/"]);
$ch = curl_init("https://api.interapi.dev/api/v1/instagram?" . $query);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-Key: YOUR_API_KEY"],
CURLOPT_TIMEOUT => 60,
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);
Response example
{
"status": "success",
"platform": "InterAPI",
"title": "",
"description": "",
"media": [
{
"type": "photo",
"url": "https://scontent.cdninstagram.com/…/651110129_17959028681925",
"quality": "1440x1440",
"download_url": "https://dl.snapcdn.app/…/saveinsta"
},
{
"type": "photo",
"url": "https://scontent.cdninstagram.com/…/651110129_17959028681925",
"quality": "1080x1080",
"download_url": "https://dl.snapcdn.app/…/saveinsta"
}
],
"video_url": null,
"video_hd_url": null,
"music_url": null,
"thumbnail": "https://scontent.cdninstagram.com/…/651110129_17959028681925",
"duration_sec": 0,
"author": "",
"channel_url": null,
"duration_ms": 712
}duration_ms is server processing time. URLs in the example are shortened.
Test a request
Without a key — up to 30 requests per hour per IP. With your key, each request costs the API price in credits.
Paste a link and press Send. The response shows up here.