Instagram Posts Scraper - Captions & Hashtags avatar

Instagram Posts Scraper - Captions & Hashtags

Pricing

$1.50 / 1,000 posts

Go to Apify Store
Instagram Posts Scraper - Captions & Hashtags

Instagram Posts Scraper - Captions & Hashtags

Scrape Instagram posts from any creator. Add usernames and extract captions, hashtags, mentions, tagged users, likes, comment counts, location, carousel images and timestamps. Filter posts by engagement or date and sort server-side. Export to JSON, CSV or Excel.

Pricing

$1.50 / 1,000 posts

Rating

0.0

(0)

Developer

orkait

orkait

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

📸 Instagram Posts Scraper

A creator's feed is a strategy document. This turns it into rows.

Scrape Instagram posts from any public creator. Just add Instagram usernames to get captions, hashtags, mentions, likes, comments, image URLs, location and timestamps. Export Instagram post data to JSON, CSV or Excel, or run it on a schedule.

✨ What makes this Instagram scraper different

Most Instagram scrapersThis one
FilteringReturns everything, you filter afterwardsFilters before counting, so you pay for matches
SortingWhatever order the platform gaveEnforced with a stable tiebreaker, identical every run
Missing dataA silent 0 you cannot distinguish from a real zeroNamed in meta.fields_unavailable
Bad inputBurns a run, then failsRejected before the request is made

🎯 What can I do with Instagram Posts Scraper?

Audit a content strategy

Pull a year of posts, sort by likes, and the winning formats separate themselves.

{
"targets": ["creator_username"],
"limit": 200,
"sortBy": "like_count",
"sortOrder": "desc"
}

Get the hashtags without writing a regex

Hashtags and mentions arrive already parsed out of every caption.

{
"targets": ["brand_account"],
"filters": { "posted_after": "2026-01-01T00:00:00Z" }
}

Monitor a brand account

Run it on a schedule and diff the output to catch new posts, campaigns and partnerships.

{
"targets": ["brand_account"],
"filters": { "paid_partnership_only": true }
}

🧾 What can Instagram Posts Scraper do?

  • Scrape all Instagram posts from any public account
  • Get likes, comments and view counts per post
  • Extract captions with hashtags and mentions already parsed out
  • Get image URLs, dimensions and carousel counts
  • Filter Instagram posts by engagement, date or hashtag
  • Sort posts by newest or most liked

📋 What data can I scrape from Instagram posts?

FieldDescription
idInstagram media ID
shortcodePost shortcode
urlPost permalink
kindpost or reel
captionPost caption
like_countLikes
comment_countComments
view_countViews
taken_atPublish time, UTC
owner_usernameCreator username
owner_idCreator Instagram ID
hashtagsHashtags parsed from the caption
mentionsMentions parsed from the caption
image_urlsImage URLs, including carousels
thumbnail_urlCover image
width / heightMedia dimensions
locationTagged location
is_paid_partnershipSponsored content flag

▶️ How to scrape Instagram posts

  1. Add your Instagram creator usernames to targets
  2. Set limit, and optionally Sort by and filters
  3. Click Start
  4. Download the dataset as JSON, CSV, Excel or XML, or pull it from the API

⬇️ Input

FieldRequiredDescription
targetsyesInstagram creator usernames.
limitnoMax items per target, applied after filtering. Default 15, max 5000.
sortBynoPick a field to order by. Leave empty for the default order.
sortOrdernoHighest first or lowest first. Defaults to highest first.
filtersnoApplied before sorting and before the limit.
{
"targets": [
"natgeo"
],
"limit": 50,
"sortBy": "like_count",
"sortOrder": "desc",
"filters": {
"posted_after": "2026-01-01T00:00:00Z"
}
}

🎛️ How to filter and sort Instagram posts

FilterEffect
kindpost or reel
min_like_count / min_comment_countEngagement floors
posted_after / posted_beforeDate window
caption_containsSubstring match on the caption
hashtags_anyKeep posts using any of these hashtags
paid_partnership_onlyOnly sponsored content

Filters run before the row count, so a narrow filter costs less than a broad one. Sorting is applied with a stable tiebreaker, so two identical runs return identical order, and the sort you pick is applied server-side, not left to the platform.

⬆️ Output

One row per item, exportable as JSON, CSV, Excel or XML, or straight from the API.

📸 Extracted Instagram posts data sample

{
"id": "3957463127796339198",
"shortcode": "Dbru79IAdH-",
"url": "https://www.instagram.com/p/Dbru79IAdH-/",
"kind": "post",
"caption": "A new era begins... #wildlife",
"like_count": 189113,
"comment_count": 1241,
"taken_at": "2026-08-06T14:04:20Z",
"owner_username": "natgeo",
"hashtags": [
"wildlife"
],
"mentions": [
"natgeowild"
],
"image_urls": [
"https://..."
],
"is_paid_partnership": false
}

🛡️ Why results stay reliable when Instagram changes

Instagram changes what it returns. When a field stops being available it does not vanish from the schema: it comes back empty and meta.fields_unavailable names it. You branch on that instead of guessing why a number is zero.

❓ FAQ

How many Instagram posts can I scrape?

Up to 5000 per username per run via limit, applied after filtering.

Can I scrape Instagram posts by date?

Yes. filters.posted_after and filters.posted_before set a date window, and naive values are read as UTC.

Can I get hashtags from Instagram posts?

Hashtags and mentions are parsed out of every caption into arrays, so you never write the regex yourself.

Can I scrape both Instagram posts and reels?

Yes, both come back by default. Set filters.kind to post or reel to narrow it.

How do I get the most liked Instagram posts?

Set Sort by to Likes.

Yes. image_urls returns every image in a carousel, not only the cover.

🔗 Scrape more from Instagram