Instagram Hashtag Scraper

How to collect user generated content on Instagram

Published

The reliable way to collect user generated content on Instagram is to give customers one branded hashtag, read everything posted to it on a regular schedule, and keep each post as a row with its link, its author and its date. Mentions and tags in your notifications catch some of it. A hashtag you read yourself catches the rest, and it gives you a record you can sort, share with a team and come back to. This guide covers the whole job: choosing the tag, collecting the posts by hand, collecting them as a dataset when there are too many to scroll, and getting permission before anything is reposted.

What counts as user generated content on Instagram

User generated content (UGC) is anything a customer, fan or member of the public posts about your brand without you making it. On Instagram that means photos, carousels and Reels, and it reaches you in three ways:

Most brands already watch the first route. The second route is where a campaign lives, because a hashtag is what you print on packaging, put in a contest brief or ask an event crowd to use. It is also the route that quietly loses posts if nobody reads it.

Step 1: choose a hashtag you can actually read

A branded hashtag only works as a collection bin if the posts in it are yours. Before you print it anywhere:

  1. Search it on Instagram first. If it already has posts from unrelated accounts, pick another. You will be sorting strangers' holiday photos out of your campaign for as long as it runs.
  2. Keep it short and unambiguous. One spelling, no numbers people might swap for letters.
  3. Use one tag per campaign. A contest tag separate from the evergreen brand tag makes each one's entries easy to count and easy to close.

If you want to see how busy a candidate tag already is, the free hashtag checker reads its recent posts and reports its pace and the tags that usually appear with it.

Step 2: the manual way, in the app

For a small campaign, the app is enough:

  1. Open the hashtag's page and switch to the most recent posts.
  2. For each post you might use, copy its link and the author's username into a sheet, with the date.
  3. Mark the ones you would like to reuse, then move on to permission (Step 5).

Always record the link and the username at the moment you find a post. A screenshot without them is a picture you cannot credit and cannot ask permission for.

When the manual way is enough

Stay with the app when:

It stops working when the tag is busy, when a contest needs every entry counted rather than a sample, or when you want to read it again next week and see only what is new.

Step 3: collect the posts as a dataset

The repeatable version is the same job with the scrolling replaced by a download: every post on the tag, one row each, in a spreadsheet you can filter.

This is what the Instagram Hashtag Scraper does. You give it one hashtag and a date window and it writes that tag's recent posts to a dataset, newest first. The fields that matter for UGC:

FieldWhy it matters for UGC
ownerUsernameWho to credit and who to ask for permission
urlThe post itself, for review and for the permission request
takenAtWhen it was posted, in UTC, so you can check contest deadlines
captionWhat the creator said, including whether they used your tag as intended
hashtagsEvery tag in the caption, useful for spotting spam and contest rules
mediaTypeImage, carousel or video, since a Reel and a photo get used differently
likeCount, commentCountHow the post did, read at the moment of the run
displayUrlA preview image link, so a reviewer can scan the sheet without opening every post

A typical run for a campaign tag:

  1. Set Hashtag to your campaign tag, without the #.
  2. Set Only posts newer than to the start of the campaign, or to 7 days for a weekly sweep. The run stops when the feed reaches that date, so older posts are never read or charged.
  3. Set Maximum posts to a ceiling you are comfortable with. The limit is exact.
  4. Paste the session cookie of an Instagram account you control. Instagram serves hashtag posts only to signed-in requests, so any method that reads a tag needs one. The step-by-step scraping guide shows where to find it.
  5. Run it and export the dataset as CSV or Excel. The Excel export guide covers getting it into a sheet cleanly.

The scraper charges $0.0005 per post delivered to your dataset, so a campaign tag that collected 400 posts costs $0.20 to read in full, and a weekly run that finds nothing new costs nothing.

Step 4: sort the collection into a shortlist

With the posts in a sheet, reviewing them is quicker than scrolling. Add three columns of your own:

Then work through it:

  1. Filter out your own posts and your team's accounts by ownerUsername.
  2. Drop the spam. Posts carrying thirty unrelated tags in hashtags are rarely genuine entries.
  3. Sort by takenAt for a contest, so you can see who posted before the deadline.
  4. Sort by engagement when you are looking for the posts people already responded to. Leave a row blank when a count is empty, since Instagram hides counts on some posts and a hidden count is unknown rather than zero.

For an ongoing brand tag, run the same read every week with a seven-day window and paste each week's rows under the last. Keep the windows from overlapping, because deduplication happens within one run, and two overlapping runs would collect the same posts twice.

Step 5: ask for permission before you reuse anything

Collecting a post and reusing it are different things. A post on your hashtag is still the creator's work, and using a hashtag is not permission to put their photo in your ad. Before any reuse:

  1. Ask in a comment or a direct message, from the brand account, naming exactly where you would like to use it. Something like: "We love this! Could we share it on our page and website, with credit to you? Reply #yes to agree."
  2. Record the answer in your sheet, with the date and a link or screenshot of the reply.
  3. Credit the creator by username wherever the post appears.
  4. For paid ads, get it in writing. A comment reply is a reasonable record for a repost. An ad usually deserves a proper release, and your platform's ad rules or a lawyer can tell you what yours needs.

The ownerUsername and url columns are what make this step fast: every row already names who to ask and what you are asking about.

The approaches, side by side

ApproachCatchesKeeps a recordScales to a busy tag
Notifications and Tagged tabTags and mentions onlyNoYes, for that route
Hashtag page, by handBranded hashtag postsOnly what you copyNo
Free hashtag checkerA tag's pace and companion tagsThe summary onlyYes
Hashtag ScraperEvery recent post on the tag, as rowsYes, as a datasetYes

Most brands end up using two of these together: notifications for mentions, and a scheduled hashtag read for the campaign tag.

What a hashtag read cannot collect

Plan around the limits so nothing surprises you mid-campaign:

The limits page lists every one, and the output page shows a full sample row. If you want to go further than a campaign and track how a tag moves over months, the hashtag tracker guide compares the options for that.

The short version

Collecting user generated content on Instagram comes down to four moves: give customers one clean branded hashtag, read it on a schedule, keep every post as a row with its author and link, and ask before you reuse. The app handles a quiet tag. When the tag gets busy or a contest needs every entry counted, run the scraper on the campaign window and review the whole collection in one sheet.

All articles