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.
curl "https://apidirect.io/v1/instagram/user/posts?url=https://instagram.com/natgeo&pages=2" \
-H "X-API-Key: YOUR_API_KEY"
{
"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
}
Provide either a profile url (e.g. https://instagram.com/natgeo) or a username (e.g. natgeo). Pass exactly one of the two.
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).
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.
The endpoint returns 404 with code: "not_found". You are not charged for not_found responses.
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.
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.
Yes, there's a concurrency limit of 3 simultaneous requests per endpoint per user. If you need more, just get in touch.
Get your API key and start making requests in minutes. 50 requests/month free every month.
Get API Key