FetchFox
Get started

Instagram profile reels API

Retrieve recent reels from a known public Instagram profile’s reels tab. Use a separate reels snapshot when your research focuses on short-form video rather than the entire profile feed.

Make a request

GET /instagram/channel-reels accepts query parameters. POST /instagram/channel-reels accepts the same inputs as JSON. Send your project key in the x-access-key header; keep it on your server.

Credits: 1 credit per 20 returned items, minimum 1. Your balance must cover the requested limit.

curl request example
curl
curl --fail-with-body --get 'https://api.fetchfox.net/instagram/channel-reels' \
  -H 'x-access-key: YOUR_KEY' \
  --data-urlencode 'url=https://www.instagram.com/example_creator/' \
  --data-urlencode 'limit=20'
JavaScript request example
JavaScript
// Run on your server with FETCHFOX_API_KEY set.
const url = new URL('https://api.fetchfox.net/instagram/channel-reels');
url.searchParams.set('url', 'https://www.instagram.com/example_creator/');
url.searchParams.set('limit', '20');
const response = await fetch(url, {
  headers: { 'x-access-key': process.env.FETCHFOX_API_KEY },
  signal: AbortSignal.timeout(130000)
});
if (!response.ok) throw new Error('HTTP ' + response.status);
const result = await response.json();
if (!result.success) throw new Error('Request unsuccessful');
console.log(result.data);
Python request example
Python
import json, os
from urllib.parse import urlencode
from urllib.request import Request, urlopen

query = urlencode({"url":"https://www.instagram.com/example_creator/","limit":20})
request = Request('https://api.fetchfox.net/instagram/channel-reels?' + query,
    headers={'x-access-key': os.environ['FETCHFOX_API_KEY']})
with urlopen(request, timeout=130) as response:
    result = json.load(response)
if not result.get('success'):
    raise RuntimeError('Request unsuccessful')
print(result['data'])

Replace placeholder source IDs with real public URLs. See limits and retries before automating calls.

Keep the source set consistent

The required input is the profile URL, not the URL of an individual reel. Optional limit caps the requested result count. Compare reels with reels over similar retrieval windows when evaluating multiple profiles.

Plan for partial lists

Unavailable views, plays and duration are null. A source-reported zero count remains zero; do not treat null as a measured value.

The platform may return fewer items than requested or restrict access. When hasMore is true, continue with the returned opaque cursor and the same profile; complete archive coverage is not guaranteed. Store the actual item count and avoid describing a sample as a creator’s complete publication history.

Follow up on a specific reel

Use /instagram/stats with the reel URL for a single-item metrics read. If your analysis requires verified video views, choose requireViews=true on that request and handle an unavailable-view failure explicitly. This does not provide downloadable media files or a transcript endpoint.

Continue building