Instagram hub

Instagram Media API

One post or Reel in full detail by shortcode, URL or numeric media id, in the same media object every v2 list returns.

GET /v2/instagram/media/{media}

1 credit per lookup, found or not found +10 credits per 16 MB of files, max 60 (most posts: 10) Files that aren't hosted are free

About this endpoint

GET /v2/instagram/media/{media} takes a shortcode, a post, Reel or TV URL, or a numeric media id. Share links (instagram.com/share/…) are a 400: open the link and pass the post URL it opens. Read data.lookupStatus (found or not_found), then data.media. A post that doesn't exist, was deleted, or belongs to a private account is not_found with a null media. Every field is always present and is null when Instagram doesn't say. meta.version is v2.

The media object holds the id, shortcode and URL, kind (post or reel), mediaType (image, video or carousel), caption and time, the owner, like, comment, play, share and save counts (likeCount is null and likesHidden is true when the likes are hidden), image and video URLs, every item of a carousel, audio, co-authors, tagged users, location and the paid-partnership flag. This is the detail view, so taggedUsers is always a list, [] when nobody is tagged. Comments aren't included. Media URLs are Instagram's and expire after a while. A lookup costs 1 credit, found or not; confirm with meta.creditsCharged.

Add include=files (+10 credits) to keep the post: its original files are copied to our media CDN and data.files lists them as { url, type, expiresAt }, in the order of media.carousel (the one image or video otherwise), with videos in the best quality available. The links stay valid until expiresAt, the end of the retention period, so save the files if you need them longer. files is null when it isn't asked for, when the post is not found, and when the files couldn't be hosted (one that can't be fetched, or one too large, fails the whole set so the list is never shorter than the post); then the 10 credits aren't charged and the lookup costs 1.

Instagram Media API FAQ

How do I get an Instagram post or Reel with the v2 API?

Call GET /v2/instagram/media/{media} with your Social Fetch API key (x-api-key) and a shortcode, post or Reel URL, or numeric media id in the path. Read data.lookupStatus and data.media.

How much does it cost?

1 credit for a completed lookup, whether the post is found or not, plus 10 for include=files when the files are hosted. meta.creditsCharged is the amount billed.

What can I pass as the media identifier?

A shortcode (DePzV26vLFB), a post, Reel or TV URL (URL-encode it in the path), or the numeric media id. They all find the same post. Share links aren't accepted: open one and pass the post URL it opens.

What does a private account's post return?

lookupStatus: not_found with a null media, the same as a deleted post. Social Fetch only returns publicly visible data.

Are tagged users always included?

Yes. This detail view always fills taggedUsers: the accounts tagged in the post, in a carousel's items, or in a Reel. It is an empty list when nobody is tagged. List endpoints may return null there because a list page doesn't carry tags.

How do I download the files of a post or Reel?

Add include=files. The original image, video or every carousel item is copied to our media CDN and data.files lists url, type and expiresAt for each, in carousel order. It costs 10 credits on top of the lookup (11 in total). The links work until expiresAt, so save the files if you need them longer. If the files couldn't be hosted, files is null and only the 1-credit lookup is billed.