herascrape
API reference

Hashtags

Hashtag metadata, and its top, recent and reels feeds.

Hashtags are addressed by name, without the #. Names are case-insensitive.

GET /hashtags/travel
GET /hashtags/travel/top

Hashtag info

Post count, profile media, and Instagram's metadata for the tag.

Path Parameters

name*Name
GET
/hashtags/{name}
curl -X GET "https://example.com/hashtags/string"
{}
{}

What comes back

{
  "id": "17841562887056054",
  "name": "travel",
  "media_count": 683000000,
  "formatted_media_count": "683M",
  "search_result_subtitle": "683M posts",
  "is_trending": false,
  "profile_pic_url": "https://scontent.cdninstagram.com/..."
}

media_count is Instagram's own estimate and moves in large steps on big tags. Treat it as an order of magnitude, not a count.

Top, recent and reels

Three feeds over the same tag: ranked, chronological, and clips-only. All three use the standard cursor and return media objects identical in shape to /posts/{id}.

top is Instagram's ranking and is not stable between calls — the same page number can return different posts minutes apart. recent is chronological and the right choice for monitoring a tag.

Path Parameters

name*Name

Query Parameters

cursor?|

Opaque pagination cursor from a previous next_cursor

GET
/hashtags/{name}/top
curl -X GET "https://example.com/hashtags/string/top"
{}
{}

Path Parameters

name*Name

Query Parameters

cursor?|

Opaque pagination cursor from a previous next_cursor

GET
/hashtags/{name}/recent
curl -X GET "https://example.com/hashtags/string/recent"
{}
{}

Path Parameters

name*Name

Query Parameters

cursor?|

Opaque pagination cursor from a previous next_cursor

GET
/hashtags/{name}/reels
curl -X GET "https://example.com/hashtags/string/reels"
{}
{}

What comes back

The standard list envelope, with media objects in the same shape as a post.

Errors

CodeWhen
not_foundNo such tag, or Instagram has blocked it.
invalid_cursorThe cursor was not one we issued.
upstream_errorTransient. Retry.

On this page