All endpoints
Instagram User Posts

Instagram User Posts API

Get a user's recent posts and reels (their feed) by profile URL or username. Returns post captions, engagement metrics (likes, comments, shares, views), author metadata, hashtags, and mentions. Supports fetching multiple pages of results in a single API call.

Price: $0.006 per page
Free tier: 50 requests/month
Endpoint
GET /v1/instagram/user/posts

Parameters

url
Instagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters). Provide either url or username.
username
Instagram username, with or without leading @ (max 100 characters). Provide either url or username.
pages
Number of pages to fetch, 1-10 (default: 1). Each page returns up to 12 posts.
get_sentiment
Set to true to add AI emotion analysis (+$0.001/page)

Response fields

posts
Array of the user's recent posts and reels
title
Post title (format: @username on Instagram)
url
Direct link to the post
date
Publication date and time
author
Instagram username
source
Platform name (Instagram)
domain
instagram.com
snippet
Post caption text
likes
Number of likes
comments
Number of comments
shares
Number of shares
reposts
Number of reposts
views
Number of views/plays (null for image posts)
is_video
Whether the post is a video
media_type
Post type (e.g., feed, clips, carousel_container)
author_verified
Whether the author is verified
author_name
Author's display name
hashtags
Hashtags used in the caption
mentions
Usernames mentioned in the caption
media_id
Instagram media ID
thumbnail_url
URL of the post's cover image (temporary; valid ~6-24 hours)
video_url
Direct video URL for video posts/reels, empty for images (temporary; valid ~6-24 hours)
video_duration
Video length in seconds (null for images)
width
Media width in pixels
height
Media height in pixels
carousel_media_count
Number of items in a carousel post (0 for single-media posts)
is_paid_partnership
Whether the post is a paid partnership / branded content
location
Geotag object (name, city, lat, lng) or null
tagged_users
Users tagged in the post (username, full_name, user_id)
coauthors
Collaborators on the post (username, full_name, user_id, is_verified)
carousel_media
For carousel/album posts: array of slides, each with media_id, is_video, image_url, video_url, width, height (empty for single-media posts)
audio
Audio track for reels/videos: type (music or original), title, artist, audio_id, duration_ms (null when the post has no audio)
is_pinned
Whether the post is pinned to the top of the user's profile
sentiment
Emotion analysis: emotions, dominant_emotion, emotional_intensity, polarity (when get_sentiment=true)
pages
Number of pages fetched
count
Total results returned

Example Request

curl "https://apidirect.io/v1/instagram/user/posts?url=https://instagram.com/natgeo&pages=2" \
  -H "X-API-Key: YOUR_API_KEY"

Example Response

{
  "posts": [
    {
      "title": "@natgeo on Instagram",
      "url": "https://instagram.com/p/DZkn1f0Flsc",
      "date": "2026-06-14 16:00:06",
      "author": "natgeo",
      "source": "Instagram",
      "domain": "instagram.com",
      "snippet": "Photograph by @petelas | A curious fox in the snow...",
      "likes": 530176,
      "comments": 5608,
      "shares": 9536,
      "reposts": 4353,
      "views": null,
      "is_video": false,
      "media_type": "carousel_container",
      "author_verified": true,
      "author_name": "National Geographic",
      "hashtags": [],
      "mentions": ["petelas"],
      "media_id": "3520497851234567890",
      "thumbnail_url": "https://scontent.cdninstagram.com/v/t51.82787-15/cover.jpg",
      "video_url": "",
      "video_duration": null,
      "width": 1080,
      "height": 1350,
      "carousel_media_count": 3,
      "is_paid_partnership": false,
      "location": {
        "name": "Serengeti National Park",
        "city": "Arusha",
        "lat": -2.3333,
        "lng": 34.8333
      },
      "tagged_users": [
        {"username": "natgeotv", "full_name": "National Geographic TV", "user_id": "18091046"}
      ],
      "coauthors": [],
      "carousel_media": [
        {"media_id": "3520497851234567891", "is_video": false, "image_url": "https://scontent.cdninstagram.com/v/t51.82787-15/slide1.jpg", "video_url": "", "width": 1080, "height": 1350},
        {"media_id": "3520497851234567892", "is_video": false, "image_url": "https://scontent.cdninstagram.com/v/t51.82787-15/slide2.jpg", "video_url": "", "width": 1080, "height": 1350},
        {"media_id": "3520497851234567893", "is_video": true, "image_url": "https://scontent.cdninstagram.com/v/t51.82787-15/slide3.jpg", "video_url": "https://scontent.cdninstagram.com/o1/v/t2/slide3.mp4", "width": 1080, "height": 1920}
      ],
      "audio": null,
      "is_pinned": false
    }
  ],
  "pages": 2,
  "count": 24
}

Frequently asked questions

How do I specify the user?

Provide either a profile url (e.g. https://instagram.com/natgeo) or a username (e.g. natgeo). Pass exactly one of the two.

Does this include Instagram Reels?

Yes. The feed returns both regular posts and Reels. Use the media_type field to distinguish them (clips for Reels, feed/carousel_container for regular posts).

How many posts are returned per page?

Each page returns up to 12 of the user's most recent posts, newest first. Use the pages parameter (1-10) to fetch more in a single call; you are billed per page requested.

What happens if the username doesn't exist?

The endpoint returns 404 with code: "not_found". You are not charged for not_found responses.

How does pricing work?

You only pay for successful requests. The Instagram User Posts API costs $0.006 per page. There are no monthly fees or commitments. You get 50 free requests per endpoint every month.

Do I need a credit card to start?

No. You can sign up and use the free tier (50 requests/endpoint/month) without adding a payment method. You only need to add a card when you want to exceed the free tier.

Are there rate limits?

Yes, there's a concurrency limit of 3 simultaneous requests per endpoint per user. If you need more, just get in touch.

Start using the Instagram User Posts API

Get your API key and start making requests in minutes. 50 requests/month free every month.

Get API Key