All endpoints
Instagram Hashtag Posts

Instagram Hashtag Posts API

Get posts and reels for any Instagram hashtag. Returns the same post objects as post search (captions, engagement metrics, media URLs, author metadata) plus the hashtag's total post count. Choose the top, recent, or reels tab, and fetch multiple pages in a single call.

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

Parameters

hashtag *
Hashtag, with or without the leading # (max 100 characters)
pages
Number of pages to fetch, 1-10 (default: 1). Each page adds up to about 30 posts; repeats across pages are removed.
sort_by
Hashtag tab: top, recent, reels (default: top)
get_sentiment
Set to true to add AI emotion analysis (Plutchik's Wheel) to each result. Adds +$0.001 per page to the cost. Returns emotion scores, dominant emotion, intensity, and polarity.

Response fields

posts
Array of posts and reels for the hashtag
title
Post title (format: @username on Instagram)
url
Direct link to the post
date
Publication date and time
author
Instagram username
source
"Instagram"
domain
"instagram.com"
snippet
Post caption text
likes
Number of likes (null when the author hides like counts)
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: 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: each slide as 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 no audio)
sentiment
Emotion analysis results. Only present when get_sentiment=true. Returns null if analysis fails.
emotions
Plutchik emotion scores (0-100) for: joy, trust, fear, surprise, sadness, disgust, anger, anticipation.
dominant_emotion
The emotion with the highest score.
emotional_intensity
Overall emotional intensity on a scale of 0-10.
polarity
Overall sentiment polarity: positive, negative, or neutral.
hashtag
The requested hashtag, without #
total
Total number of posts using the hashtag (null for recent)
pages
Number of pages fetched
count
Total results returned

Example Request

curl "https://apidirect.io/v1/instagram/hashtag/posts?hashtag=summer&pages=2" \
  -H "X-API-Key: YOUR_API_KEY"

Example Response

{
  "posts": [
    {
      "title": "@chloeaustenn19 on Instagram",
      "url": "https://instagram.com/p/DcvNO0YDqxz",
      "date": "2026-09-01 08:14:01",
      "author": "chloeaustenn19",
      "source": "Instagram",
      "domain": "instagram.com",
      "snippet": "am i cute? #chicago #style #summer",
      "likes": 6009,
      "comments": 107,
      "shares": 228,
      "reposts": 0,
      "views": 372196,
      "is_video": true,
      "media_type": "clips",
      "author_verified": false,
      "author_name": "Chloe",
      "hashtags": [
        "#chicago",
        "#style",
        "#summer"
      ],
      "mentions": [],
      "media_id": "3976455188906945651",
      "thumbnail_url": "https://scontent.cdninstagram.com/v/t51.71878-15/cover.jpg",
      "video_url": "https://scontent.cdninstagram.com/o1/v/t2/clip.mp4",
      "video_duration": 10.1,
      "width": 1080,
      "height": 1920,
      "carousel_media_count": 0,
      "is_paid_partnership": false,
      "location": null,
      "tagged_users": [],
      "coauthors": [],
      "carousel_media": [],
      "audio": {
        "type": "original",
        "title": "Original audio",
        "artist": "chloeaustenn19",
        "audio_id": "38320043790943785",
        "duration_ms": 10076
      }
    }
  ],
  "hashtag": "summer",
  "total": 578259801,
  "pages": 2,
  "count": 64
}

Frequently asked questions

What is the difference between top, recent, and reels?

They are the three tabs on Instagram's hashtag page: most popular posts, newest first, and Reels only.

How is this different from post search?

Post search matches a keyword anywhere in a caption. This endpoint returns the hashtag page itself, so every result carries the tag.

How does pricing work?

You only pay for successful requests. The Instagram Hashtag 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 5 simultaneous requests per endpoint per user. If you need more, just get in touch.

Start using the Instagram Hashtag Posts API

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

Get API Key