Instagram giveaway entries live inside a comment thread that Instagram never shows as a list. To download Instagram giveaway entries properly — username, comment text, @mentions and timestamp — export the comments to CSV or Excel and filter them yourself. This is the do-it-yourself route: one paste to get the file (free for the first 100 comments, no signup), four spreadsheet filters that turn raw comments into valid entries, then a draw you can show your audience.
Why the comment badge on your post is not your entry list
The number under your giveaway post is a count, not a roster. It tells you roughly how many people commented; it does not tell you who, how many times, or whether they followed the rules. Three things make it unreliable as an entry list:
- It undercounts. Instagram hides some replies, comments it has filtered for keywords, and comments from restricted accounts from the badge. When hosts export, the row count is routinely higher than the number on the post.
- It counts duplicates. One person commenting twenty times shows as twenty in the badge. If your rules say one entry per account, the badge is wrong by nineteen.
- It counts non-entries. Your own replies, "when is the draw?" questions, and comments posted after the deadline are all in the number.
Scrolling the thread does not fix this. Instagram loads comments in batches, sorts them by relevance and collapses replies; a two-thousand-comment giveaway is unscrollable in any honest sense. A spreadsheet is the only format where you can see every row, sort by any column, and apply the same rule to every entrant.
Get the entries out of Instagram in one paste
You do not need Meta's API, a developer account or a browser extension. The Instagram comment exporter takes a post link and returns the thread as a file.
- Open the giveaway post or Reel in Instagram, tap the three dots and choose Copy link. Any public post URL works:
instagram.com/p/…,instagram.com/reel/…, with or without the tracking parameters Instagram appends. - Paste the link on the export page and start. A preview appears with the first rows and the running count.
- Download as CSV, Excel (.xlsx) or JSON. For a giveaway, Excel is the least friction — it opens with the columns already split and timestamps recognised. CSV is better if you plan to import into Google Sheets.
The first 100 comments of any post are free, with no signup and no limit on posts per day. If your giveaway pulled more than 100 comments, the rest of the thread is a one-time payment — never a subscription (details on the pricing page). You do not log in to Instagram through the tool, you do not hand over a password, and nothing is posted, liked or followed on your behalf; the export reads what any visitor to the post can already see.
Reading the spreadsheet: which columns matter for a giveaway
Every export has the same core columns, and these names are the live product values — what you see in the file is what is listed here:
author, username, avatar_url, text, likes, replies, created_at, language, is_pinned, id, reply_to_id — followed by any Instagram-specific extras.
For a giveaway, five of those do the work:
| Column | Why it matters for entries |
|---|---|
username | The handle. This is your deduplication key and the name you will announce. Prefer it over author, which is the display name and can be anything. |
text | The entry itself — the keyword, the answer, the @mentions. Every rule you set is checked against this column. |
created_at | ISO timestamp in UTC. Your deadline cut runs on this. |
reply_to_id | Empty for top-level comments, populated for replies. Most giveaway rules only count top-level comments. |
is_pinned | True for comments you pinned — usually your own rules comment, which is not an entry. |
The likes column is occasionally useful for "most-liked comment wins" contests, but likes are easy to buy. A random draw from valid entries is easier to defend.
Four filters that turn comments into valid entries
Open the file, turn the header row into a filter (Excel: Data → Filter; Sheets: Data → Create a filter), and apply these in order. Each one is a single column operation.
1. Cut everything after the deadline
Convert your announced closing time to UTC and filter created_at to rows on or before it. If you announced "midnight Friday" without a timezone, take the latest reasonable interpretation — entrants will argue the other way. Move the cut rows to a second tab rather than deleting them, so you can show anyone their timestamp.
2. Drop replies and your own comments
Filter reply_to_id to blank rows only — that removes replies, which are almost all you answering questions. Then exclude your own handle and any co-host account from username. A pinned rules comment is caught by is_pinned.
3. Keep only comments that meet the entry rule
This depends on what you asked for:
- Keyword entries ("comment ROUTINE to enter"): filter
textwith contains the keyword. Make it case-insensitive — Excel's filter already is; in Sheets use a helper column with=REGEXMATCH(LOWER(D2),"routine"). - Tag-a-friend entries ("tag 2 friends"): add a column that counts @mentions. In Excel or Sheets:
=LEN(D2)-LEN(SUBSTITUTE(D2,"@","")), where D is thetextcolumn. Filter that column to>= 2. This also exposes entries that tagged themselves or the host. - Answer entries ("which colour is your favourite?"): any non-empty top-level comment counts; drop emoji-only rows if your rules require an actual answer.
- Multi-step entries ("follow, like, tag 3"): only the tagging part is verifiable from the sheet. Check following and liking for the drawn winner at announcement time, and redraw if they fail.
4. One entry per account
If the rule is one entry per person, deduplicate on username. In Excel: select the table, Data → Remove Duplicates, tick only the username column. In Sheets: Data → Data cleanup → Remove duplicates. Sort by created_at ascending first so the surviving row is each person's earliest entry. If multiple entries are allowed, skip this step but add a =COUNTIF(B:B,B2) column so you can see who entered fifty times.
What is left is your entry list. Copy it to a tab called Valid entries and number the rows from 1. The entry verification walkthrough goes deeper on edge cases.
Drawing the winner from the filtered sheet
With N numbered rows, you need one random integer between 1 and N, produced somewhere the audience can trust. Two options work:
- In the sheet:
=RANDBETWEEN(1,N)— documented for Google Sheets here, identical in Excel. It recalculates every time the sheet changes, so paste the result as a value immediately and note it in a cell next to the winner's row. - Outside the sheet: random.org's integer generator, which uses atmospheric noise and lets you screen-record the draw. Enter 1 to N, generate, and match the number to the row.
For more than one prize, generate as many numbers as winners plus two backups, discarding repeats. Record the winning row's username, text and created_at together — that trio proves the winner was a real, on-time, rule-following entry.
If you would rather not touch a formula, the Instagram comment picker draws from the same list in a browser; the trade-offs are in picker apps versus exporting comments. The spreadsheet wins whenever your rules are more complicated than "one random comment".
What we see when Instagram giveaway hosts export
We run the exporter, so we see the shape of giveaway threads across thousands of exports. Patterns worth knowing before you open your file:
- Entries are short. One Instagram post we processed had close to 7,000 entries and almost every comment was a single word — a name like "Enzo" or "Caius", because the contest asked for a baby name. Photo-vote contests produce thousands of rows reading "Foto 27"; answer contests a thousand rows of "A1"; keyword contests page after page of "Routine" or "Book". Your text filter mostly works on the chatter around the entries, not the entries.
- Tag-a-friend threads are mostly @mentions. The typical entry is two or three handles and an emoji, or "Done all steps ✅ @a @b @c". The mention-count column is the filter that matters.
- Hosts export at closing time, in bursts. The typical pattern is several posts within ten minutes on the night the contest closes — often the same campaign across Instagram, Facebook and TikTok. If you cross-posted, export each platform's thread and stack them in one sheet; the core columns are identical, and the Facebook and TikTok guides cover the platform quirks (Facebook photo and share URLs work as-is; TikTok replies are off by default and toggled in the preview).
- The badge is low. The count on the post is very often lower than the rows exported, because the platform hides replies and filtered comments from the number. More rows than expected is the full thread, not an error.
The free cap and the column names in this guide are the live product values as of writing. Anything about what Instagram itself allows in a promotion comes from Instagram's own promotion guidelines, not from us.
Reels, carousels and pinned comments: the edge cases
Reels
A Reel giveaway exports exactly like a photo post — paste the instagram.com/reel/… link. The difference is volume: Reels reach non-followers, so the thread is larger and your "must follow" rule matters more at announcement time.
Carousels
A carousel is one post with one thread, however many slides it has. The link ends in /p/… and the export covers every comment; "comment which slide you like" answers are in text as usual.
Pinned comments
Pinned comments carry is_pinned = true. Since the host almost always pins the rules, filter them out in step 2 — but if you pinned an entrant's comment as a highlight, it is still a valid entry.
Edited and deleted comments
Instagram does not let users edit comments, so the text you export is the text they posted. Deleted comments are gone — a delete-and-repost shows only the repost, with the later timestamp. Export as soon as the deadline passes to freeze the state. Comments Instagram has hidden or filtered by your keyword settings are not visible to visitors and are not in the export, so switch comment filters off before the giveaway runs.
Keeping the sheet as your proof
The filtered spreadsheet is the record that lets you answer anyone who says the draw was rigged. Keep it organised:
- Tab 1: Raw export. The untouched file, with its row count. Never edit this tab.
- Tab 2: Excluded. Every row you cut, with a column stating why: after deadline, reply, host account, missing keyword, fewer than two tags, duplicate account.
- Tab 3: Valid entries. Numbered 1 to N.
- Tab 4: Draw. The random number, where it came from (formula or random.org screenshot), the winning row, and the date and time of the draw.
This matters beyond public relations. In the US the FTC's endorsement guidance treats an entry that requires a post or tag as an incentivised endorsement, and in the UK the CAP Code on prize promotions requires that winners are selected fairly and that promoters can show it. A four-tab workbook is that demonstration. Download and keep your own copy; your giveaway terms may require you to hold it longer than the 30 days paid exports stay on the exports page.
When you announce, post the winner's username and entry text and say how the draw was done. Do not post the sheet itself — it is a list of your entrants' handles, and the excluded tab is nobody's business but yours. If a runner-up asks, show them their own row and the reason; that resolves nearly every complaint.
Download Instagram giveaway comments free →
Related reading: Instagram comment picker, How to export Instagram post comments, Picking a giveaway winner from comments.
