GET /v1/posts can include durable media URLs. Use raw endpoints when you need the source platform response; see data freshness.
Single video
CallGET /v1/raw/instagram/post/{shortcode} (1 credit, $0.01). The response includes video_url (single best stream) and video_versions[] (multi-bitrate variants).
video_versions[] if you need a specific bitrate or resolution — each entry includes a url and a type field identifying the stream quality.
All recent videos from a creator (bulk)
CallGET /v1/raw/instagram/profile/{username}?include_posts=true (0.5 credits, $0.005). Set post_limit from 1–50 (default 12) to retrieve available recent posts, with video_url for each video post.
A profile request costs 0.5 credits and can include multiple recent posts. Individual post lookups cost 1 credit each.
Carousel posts with videos
For carousel posts that contain video items, each slide is exposed incarousel_items[]. Filter by is_video to isolate the video items:
Request failures
Live profile and post retrieval share one request budget with recovery attempts. Recovery uses the remaining time in that budget; it does not start a fresh timeout window. Treat a timeout as an incomplete request. Retry temporary503 service_unavailable responses with bounded backoff and honor Retry-After when present. See the SDK retry guidance for handling live-data errors.
URL lifetime
video_url and video_versions[].url are signed Instagram CDN URLs valid for approximately 24 hours from the moment of the API call. Download promptly. If you need to retain videos long-term, store them on your own infrastructure — re-requesting the same shortcode after the URLs expire costs an additional credit.
Cost summary
Implementation advice
- Prefer the profile endpoint for bulk work. If you want the recent video content from a specific creator, one profile call is cheaper than calling the post endpoint per shortcode.
- Download before storing the URL. Don’t cache the signed URL itself — it expires. Either download the file immediately or re-fetch the URL when you need it.
- Check
is_videobefore downloading. Both profileposts[]and carouselcarousel_items[]contain mixed photo and video items. Filtering onis_video: trueavoids requesting video fields that aren’t present on photo posts.
Terms of service
Instagram’s terms of service govern downloaded content. Use videos in accordance with applicable law and Instagram’s ToS.Profile counts and omitted fields
media_count is the total profile media count, or null when unknown. Zero means an observed total of zero. posts.length counts only the posts returned by this request.
Raw Instagram profiles omit highlight_reel_count, is_business, and is_professional. Remove reads of these fields when updating an integration; their absence does not establish an account type or highlight count. These fields differ from stored profile lookups and TikTok responses.
When saving a profile response, update supplied fields and preserve previously known metadata for omitted fields.
bio_links contains available valid links. Unusable source entries are excluded during profile recovery, so an empty array does not establish that the creator has no links. Treat external_url: null as unavailable website data and preserve a previously known website when merging a recovered response.
A 502 upstream_contract_broken response means the source response failed validation. Stop automatic retries and retain your last usable result. A query error or ambiguous empty response does not establish that a profile was deleted.