Instagram Posts API
Pull an account's recent feed — photos, videos, and carousels — with captions, engagement counts, and media URLs. Paginated so you can walk back as far as Instagram allows.
50 free credits on signup · no card required
curl "https://api.instagramapi.dev/v1/profile/posts?handle=nike" \
-H "Authorization: Bearer $INSTAGRAMAPI_KEY"What you get
Structured JSON, not raw HTML
- ▹Every post type: single photos, videos, and multi-image carousels
- ▹Like count, comment count, and caption for each post
- ▹Direct media URLs for images and video
- ▹Author info embedded on every post
- ▹Cursor-based pagination through an account's full feed
Endpoints
Every endpoint behind this page
Example response
What comes back
{
"data": {
"items": [
{
"id": "3912183471120209303",
"shortcode": "DZK3iOsRlWX",
"type": "photo",
"product_type": "feed",
"url": "https://www.instagram.com/p/DZK3iOsRlWX/",
"caption": "Just Do It.",
"taken_at": "2026-06-04T15:59:27Z",
"like_count": 2499414,
"comment_count": 55165,
"view_count": null,
"image_url": "https://instagram.com/.../media.jpg",
"video_url": null,
"video_duration": null,
"location": null,
"author": {
"id": "13460080",
"username": "nike",
"full_name": "Nike",
"is_verified": true,
"is_private": false,
"profile_pic_url": "https://instagram.com/.../nike.jpg"
}
}
],
"next_cursor": "3919055228681437041_13460080"
}
}Response fields
Fields returned by GET /v1/profile/posts
| Field | Description |
|---|---|
| items | The page of posts. |
| items[].id | Numeric post/media id. |
| items[].shortcode | The post's shortcode, the part after /p/ in its instagram.com URL. |
| items[].type | Media type: photo, video, or carousel. |
| items[].product_type | More specific format (e.g. feed, clips, igtv). |
| items[].url | Canonical instagram.com URL for the post. |
| items[].caption | The post's caption text. |
| items[].taken_at | When the post was published (ISO 8601, UTC). |
| items[].like_count | Number of likes. |
| items[].comment_count | Number of comments. |
| items[].view_count | View count for video/reel content; null for photos. |
| items[].image_url | URL of the post's image (cover frame for video). |
| items[].video_url | URL of the video file; null for photos. |
| items[].video_duration | Video length in seconds; null for photos. |
| items[].location | Place tagged on the post, if any; null otherwise. |
| items[].author | The account that published the post. |
| items[].author.id | Numeric account id (stable even if the username changes). |
| items[].author.username | The account's @handle. |
| items[].author.full_name | Display name shown on the profile (may be empty). |
| items[].author.is_verified | Whether the account has a verified badge. |
| items[].author.is_private | Whether the account is private. |
| items[].author.profile_pic_url | URL of the account's profile picture. |
| next_cursor | Pass back as `cursor` to fetch the next page; null when there are no more results. |
No login required
Nothing to authenticate but your API key
No OAuth flow
One static API key in an Authorization: Bearer header. No redirect, no refresh tokens, no expiring session.
No Meta app review
Never touch Meta's developer platform, Business Verification, or a connected Facebook Page. Sign up directly with Instagram API.
Public data only
Every endpoint returns only what's already visible on Instagram without logging in. Private accounts are never accessible.
Pricing
2 credits per request. Credits start at $8.00 per 1,000 and drop to $6.00 per 1,000 at volume — no subscription, no minimums. New accounts get 50 free credits.
See full pricingFAQ
Instagram Posts API, explained
What post types are returned?
Photos, videos, and carousel (multi-image) posts, all in one consistent JSON shape.
Can I fetch a single post by URL instead of listing a feed?
Yes — GET /v1/post accepts a post id, shortcode, or full instagram.com/p/... URL and returns that one post's full detail; comments and likers are separate endpoints.
How do I get engagement numbers per post?
Every post includes like_count and comment_count directly — no separate call needed.
How far back does pagination go?
As far as Instagram's own feed pagination allows — keep passing next_cursor until it returns null.
What does listing posts cost?
2 credits per page of posts.
Related
More ways to pull Instagram data
Start pulling posts api data
Create a free key and make your first request in under a minute — 50 credits on us.