To verify Instagram giveaway entries properly you need two things: every comment on the post in a spreadsheet, and a handful of formulas that check each row against your rules. This guide gives you both. You will download the comments free (the first 100 comments of any post, no signup), open the file in Excel or Google Sheets, and build an Instagram giveaway entries spreadsheet that counts tags, catches duplicate entrants, confirms the required answer, drops late entries, removes your own replies, and ends as a frozen audit copy. Every formula below uses the real column names from the export, so you can paste them in as-is.
What a verifiable entry list looks like
An entry list is verifiable when a stranger could open it, read your rules, and reach the same set of valid entries you did. That means one row per comment, the original text and timestamp untouched, and a separate check column for each rule rather than one mystery "valid" column, so an entrant who complains can be shown exactly which rule their comment failed.
Here is the shape we are building towards. Columns A to K are the export exactly as downloaded; L onwards are the checks you add.
| username (B) | text (D) | created_at (G) | is_pinned (I) | reply_to_id (K) | tags (L) | dup (M) | answer (N) | time (O) | excl (P) | VALID (Q) |
|---|---|---|---|---|---|---|---|---|---|---|
| maya.runs | Done all steps ✅ @a @b @c | 2026-08-25T14:02:11Z | FALSE | 3 | keep | yes | in time | VALID | ||
| maya.runs | @d @e @f | 2026-08-25T14:03:40Z | FALSE | 3 | dup | no | in time | |||
| enzo_k | Routine @a | 2026-08-25T21:15:02Z | FALSE | 1 | keep | yes | in time | |||
| yourbrand | Winner announced Friday! | 2026-08-24T09:00:00Z | TRUE | 0 | keep | no | in time | exclude | ||
| lina.b | Routine ✨ @x @y @z | 2026-08-26T00:12:55Z | FALSE | 3 | keep | yes | late |
Row 1 passes every check. Row 2 is the same person's second comment. Row 3 only tagged one friend. Row 4 is the host's own pinned comment. Row 5 has everything right but arrived after the deadline. All five stay in the sheet; only one gets the VALID label.
Getting the comments into a sheet
Open the Instagram comment exporter, paste the giveaway post URL and download the comments. Choose Excel (.xlsx) if you will work in Excel and CSV if you will import into Google Sheets (File → Import → Upload, then "Replace spreadsheet"). The same tool exports TikTok and Facebook giveaway posts with the same first columns, so one sheet template covers a campaign that ran on all three; Facebook posts at facebook.com/photo?... or facebook.com/share/p/... URLs work as-is.
The columns you get, in order, are author, username, avatar_url, text, likes, replies, created_at, language, is_pinned, id, reply_to_id, followed by a few platform-specific extras. These are the live column names, as is the free cap of 100 comments per post; anything larger is a one-time payment, never a subscription (see pricing). Before writing a formula, freeze the header row, do not sort yet (the duplicate check depends on order), and put your deadline in cell S1 as a real date-time, e.g. =DATE(2026,8,25)+TIME(23,59,59). Everything below assumes the first entry is on row 2 and fewer than 5,000 rows; change 5000 if your post is bigger.
Formula 1: counting the tags in each entry
"Tag three friends" is the most common rule and the most common thing entrants get wrong. Count the @ symbols in the text column with the length-minus-substitute trick, which works identically in Excel and Sheets. In L2:
=LEN(D2)-LEN(SUBSTITUTE(D2,"@",""))
Take the length of the comment, remove every @, take the length again; the difference is the number of @ symbols. Fill it down and compare it to your rule: =IF(L2>=3,"ok","too few tags").
Edge cases worth handling
- Email addresses contain an @ and would count as a tag. They are rare in giveaway comments; in Sheets, strip them with
REGEXREPLACEbefore counting if you see any. - The same friend tagged three times ("@a @a @a") counts as three. In Sheets,
=COUNTUNIQUE(IFERROR(REGEXEXTRACT(SPLIT(D2," "),"@[A-Za-z0-9._]+")))as an array formula counts unique handles instead; in Excel the raw @ count is usually good enough. - Tagged accounts that do not exist still contain an @. The export cannot check whether
@ais real, so open the winner's tagged profiles by hand before announcing. A string of handles created the same week is the classic "tag your own alts" pattern.
Formula 2: one person, one entry
Repeat commenters are the second biggest source of disputes. The COUNTIF function handles it in one line. In M2:
=IF(COUNTIF($B$2:B2,B2)=1,"keep","dup")
The range $B$2:B2 grows as you fill down, so each row asks "how many times has this username appeared up to and including me?" The first appearance returns 1 and is kept; every later appearance is a dup. Sort by created_at ascending before filling this down if you want the earliest comment to be the surviving entry, or descending if your rules say the latest comment counts.
Match on username, not author: display names are free text and two people can both be "Maya". To see how many times someone entered overall, =COUNTIF($B$2:$B$5000,B2) in a spare column; a username with 40 entries on a "comment once" giveaway tells you something.
Decide whether a dup rule means "the extra comments are ignored" or "the person is disqualified". Both are defensible, but write it in the terms before the giveaway opens. Instagram's promotion guidelines make you responsible for the official rules and eligibility requirements, and a spreadsheet only enforces the rules you actually published.
Formula 3: did they answer the question?
Keyword and answer contests ("comment the word Routine", "which photo do you prefer, reply Foto 1 to Foto 30", "answer A1 to D4") need a text match. The trap is case: entrants type "routine", "ROUTINE" and "Routine ✨" and all three should pass.
Excel and Sheets, case-insensitive contains, in N2:
=IF(ISNUMBER(SEARCH("routine",D2)),"yes","no")
SEARCH ignores case and returns a position or an error, so wrapping it in ISNUMBER gives a clean yes/no. For several acceptable spellings, chain them: =IF(OR(ISNUMBER(SEARCH("a1",D2)),ISNUMBER(SEARCH("a 1",D2))),"yes","no").
Google Sheets, when the answer must be the whole comment rather than appear somewhere inside it:
=IF(REGEXMATCH(LOWER(TRIM(D2)),"^(foto|photo) *27$"),"yes","no")
This accepts "Foto 27", "photo27" and "FOTO 27" but rejects "Foto 27 and 28" from someone hedging. Excel without regex can approximate it with =IF(SUBSTITUTE(LOWER(TRIM(D2))," ","")="foto27","yes","no").
Rules that combine the two ("comment Routine and tag two friends") should stay as two columns. When the tally comes out lower than expected, two columns show in seconds whether the tags or the keyword did the cutting.
Formula 4: entries after the deadline
The created_at column is an ISO timestamp in UTC, for example 2026-08-25T14:02:11Z. Excel and Sheets usually read it as text, which is why a bare comparison against a date fails. Convert it in O2:
=IF(DATEVALUE(LEFT(G2,10))+TIMEVALUE(MID(G2,12,8))<=$S$1,"in time","late")
LEFT(G2,10) takes the date, MID(G2,12,8) takes the time, and adding them gives a real date-time to compare with $S$1; the formula is the same in both programs. If Excel already recognised created_at as a date, the simpler =IF(G2<=$S$1,"in time","late") works.
Mind the time zone: timestamps are UTC, so a deadline of "midnight Friday, Bangkok time" goes into S1 as 17:00 UTC on the Friday, or you will wrongly exclude seven hours of entries. Now that you have a real date column, you can also sort on it before filling the dup formula down.
Excluding your own comments, replies and pinned posts
Three kinds of row belong in the export but not in the draw: your own replies ("Good luck!"), the pinned rules comment, and replies from entrants to each other. The export flags all three. is_pinned is TRUE for a pinned comment, and reply_to_id is filled for any reply and empty for a top-level comment. In P2:
=IF(OR(LOWER(B2)="yourbrand",LOWER(I2&"")="true",K2<>""),"exclude","")
Replace yourbrand with your username, lowercase. The I2&"" trick turns the pinned flag into text so the comparison works whether the spreadsheet imported it as a boolean or as the word "true". If your team answered from several accounts, list them: OR(LOWER(B2)="yourbrand",LOWER(B2)="yourbrand.support").
Whether to exclude replies is a judgement call. On Instagram they are usually "@friend look at this", a tag that was not posted as a top-level entry; most hosts count top-level comments only and say so in the rules. To count replies, drop the K2<>"" clause.
Bringing it together
Now the single VALID column, in Q2:
=IF(AND(L2>=3,M2="keep",N2="yes",O2="in time",P2=""),"VALID","")
Fill down, then =COUNTIF(Q:Q,"VALID") gives the pool size. A 30 to 50 percent pass rate on a tag-three-friends giveaway is typical, not a sign that something broke.
Backups, re-draws and the audit copy
Pull the valid usernames into a clean list. In Google Sheets and Excel 365, in a new sheet cell A2:
=FILTER(Sheet1!B2:B5000,Sheet1!Q2:Q5000="VALID")
Number them in column B (=ROW()-1) and draw with random.org between 1 and the pool size, or in-sheet with RANDBETWEEN: =INDEX(A2:A,RANDBETWEEN(1,COUNTA(A2:A))). random.org gives a timestamped result you can screenshot; either is fine if you record what it returned.
Backups: draw two or three extra numbers straight away, in order, and label them backup 1, 2, 3. If the winner never replies within your window, or their tagged accounts turn out to be fresh alts, you move to backup 1 without drawing again, which removes any suggestion that you re-rolled until a friend came up.
Then freeze the whole thing:
- Select all, copy, and paste as values only, so
RANDBETWEENcannot recalculate and the checks cannot silently change. - Add a small block at the top: the post URL, the published rules, the deadline in UTC, the pool size, the random number(s) drawn, the draw time and who ran it.
- Export a PDF or lock the sheet, and keep the original download next to it: the file is the raw evidence, the sheet is your working.
Regulators care about this record more than about the draw. The UK's CAP Code guidance on prize promotions expects winners selected in accordance with the rules, by a verifiably random method or under independent supervision; the FTC's endorsement guidance adds disclosure duties when entrants post for you. A frozen sheet with a VALID column covers both.
Patterns we see in real giveaway exports
We run the exporter, so we see what giveaway comment sections actually look like, and they shape the defaults above. A single Instagram post can carry around 7,000 entries in which almost every comment is one word, a baby name like "Enzo" or "Caius" for a name-the-product contest. Photo-vote posts produce thousands of near-identical "Foto 27" comments; answer contests produce a thousand "A1"s; keyword contests are page after page of "Routine" or "Book". The exact-match regex in Formula 3 exists because a contains-match would pass "Foto 27, 28 and 29" from someone voting three times.
Tag-a-friend giveaways look different: most comments are two or three @mentions and an emoji, with a healthy share of "Done all steps ✅ @a @b @c". The @-count formula is where the surprises hide, because a run of entries tagging the same three brand-new handles usually comes from one person.
Hosts export the night the contest closes, often several posts within ten minutes, and frequently the same campaign across Instagram, Facebook and TikTok. That is why the sheet is built around the shared column set: one template, three files, same VALID formula. Two platform quirks matter for the checks. The comment count shown on the post is often lower than the rows you download, because platforms leave replies and some hidden comments out of the badge count, so do not panic when the sheet has more rows than the post claims. And on TikTok, replies are off by default and switched on in the preview, so if you want reply rows there, tick the box before downloading. TikTok's community guidelines and Facebook's Pages promotion terms both put the running of a promotion squarely on the host, which in practice means: keep the sheet.
If you would rather not touch formulas, the Instagram comment picker applies the dedup and tag rules for you; for unusual rule sets, the spreadsheet is still what lets you show your working. Either way, the export is the first step, and it is free.
Download Instagram giveaway comments free →
Related reading: Instagram giveaway entries download, Instagram giveaway picker apps or export comments, how to pick a giveaway winner from comments.
