New: TikTok Transcription Exporter — turn any video into timestamped text. Try it

Tutorial

How to Export Facebook Comments to Google Sheets (2026 Guide)

By The ZocialComment Team, Social-data analystsAugust 202612 min read
How to Export Facebook Comments to Google Sheets (2026 Guide)

Export Facebook comments now

Free — 3 exports a day, no signup. CSV, Excel & JSON.

Facebook comment threads hold some of the most useful unstructured feedback a brand ever receives — and Facebook gives you almost no way to work with it. You can scroll, you can click "View more comments" a hundred times, and you can read. You cannot sort by likes, count how many people asked the same question, or compare this week's post against last month's. Google Sheets does all of that in about four minutes. The only hard part is getting the comments across the gap, and this guide covers the three routes that actually work in 2026.

Why you cannot just point Sheets at a Facebook URL

The first thing most people try is =IMPORTDATA("https://facebook.com/..."), and it fails every time. Understanding why saves an hour of trying variations.

Google's import functions issue an anonymous HTTP GET and parse whatever comes back. Facebook responds to anonymous requests with a login wall or a JavaScript application shell — a few kilobytes of script tags and no comment text at all. Comments are fetched afterwards, by the browser, over separate authenticated calls. IMPORTXML fails for the same reason: there is no comment node in the document to select with XPath, because the document has not rendered yet.

Nor can you get around it with a cookie. Sheets' import functions have no way to carry your session, and Facebook's own Terms of Service govern automated access to the site. So the practical routes narrow to three: a purpose-built export, the official Graph API, or your keyboard.

Route 1: CSV export (no code, works on any public post)

This is the route that fits inside a coffee break. The export tool loads the comment thread the same way a browser does, pages through it to the end, and hands you a flat file.

Step 1 — get a clean permalink

Facebook URLs come in half a dozen shapes and not all of them identify a single post. Click the timestamp under the post's author name, or use the three-dot menu and choose Copy link. Both give you a canonical permalink. What you want to avoid is a URL copied from the address bar while scrolling the feed, which often points at the feed position rather than the post. Reels, videos, Page posts, Group posts and photo posts all work as long as the post itself is public.

Step 2 — run the export

Paste the URL into the Facebook comment exporter and start the job. Fetching runs server-side, page by page, so a thread with several thousand comments takes a minute or two and does not depend on your browser staying open. If you want replies as well as top-level comments, enable replies before starting — the flag changes what gets fetched, so it cannot be switched on afterwards without re-running.

Step 3 — download CSV

When the job finishes, pick CSV. The columns are consistent across every platform the tool supports:

  • author — display name on the comment
  • username — the account handle, where the platform exposes one
  • avatar_url — profile picture URL
  • text — the comment body, emoji intact
  • likes — reaction count on that comment
  • replies — number of replies underneath it
  • created_at — timestamp
  • language — detected language code
  • is_pinned — whether the Page pinned it
  • id and reply_to_id — the pair that lets you reconstruct threads

Eleven columns, no nesting, no JSON blobs to unpack. That shape is deliberate: it drops straight into a pivot table without any reshaping.

Step 4 — import into Sheets correctly

Open a new Sheet and choose File → Import → Upload. In the dialog:

  • Import location: Replace current sheet (or "Insert new sheet" if you are appending to a master file)
  • Separator type: Comma — not "Detect automatically". Auto-detection sometimes guesses semicolons when comment text contains a lot of them, which shears the columns apart.
  • Convert text to numbers and dates: leave this off. It is the single most common cause of mangled comment data. With it on, a comment that reads "3/4" becomes a date, "007" loses its leading zeros, and long numeric usernames turn into scientific notation.

Do not open the CSV in Excel first and re-save it. Excel on Windows still writes CSVs in the local ANSI code page unless you explicitly choose "CSV UTF-8", and that round trip is what turns emoji into question marks and Thai text into mojibake. If you want a spreadsheet file rather than a text file, take the .xlsx download directly — it carries encoding in the format itself and imports into Sheets with no settings at all.

Step 5 — make it usable

Three things, thirty seconds:

  1. View → Freeze → 1 row so headers stay visible.
  2. Data → Create a filter for per-column sorting and filtering.
  3. Select the text column and set Format → Wrapping → Clip. Wrapped comment text creates rows tall enough to make scrolling miserable; clipping keeps every row one line high while the full text stays in the cell.

Route 2: Graph API + Apps Script (for Pages you own)

If you administer the Page and want a sheet that refreshes itself, the official route is Meta's Graph API. The comments edge documentation covers the endpoint; the practical shape is GET /{post-id}/comments with fields=id,message,created_time,like_count,comment_count,from and a paging cursor.

What the docs make less obvious is the permission wall. Reading comments on a Page requires a Page access token with pages_read_engagement, and that token has to come from a user with a role on that Page. There is no supported way to read comments on someone else's Page — a competitor's, a creator's, a Group you are not an admin of. Meta closed those paths deliberately; the only sanctioned access to broader public content is the Content Library API, which is restricted to approved academic and non-profit researchers.

The build, once you have a token, is about forty lines of Apps Script: fetch a page of comments, append rows to the sheet, follow paging.cursors.after until it stops coming back, and write the last cursor into script properties so the next run resumes rather than restarting. Then a time-based trigger runs it nightly.

Two operational cautions. First, script runtime is capped — consumer accounts get six minutes per execution, per Google's Apps Script quotas — so a large backfill has to checkpoint and resume across runs rather than looping to the end in one go. Second, Graph API versions expire on a roughly two-year cycle, so a script left untouched will eventually start returning errors on a version that no longer exists. Budget maintenance, not just a build.

The honest trade: Apps Script is worth it when you want an always-current sheet for a Page you own and you are comfortable owning code. For a one-off analysis, or for any post you do not administer, it is strictly more work for less coverage.

Route 3: copy and paste (the honest baseline)

For twenty comments, select the thread, copy, paste into Sheets, and use Data → Split text to columns. It takes two minutes and needs nothing.

It stops working almost immediately. You lose like counts, timestamps and the reply structure; you have to click "View more comments" and "View more replies" for every collapsed branch; and Facebook's markup pastes with the author name and comment body in the same cell more often than not. Past about fifty comments, cleanup takes longer than either other route. Worth knowing as a floor, not a method.

What to actually build once the data is in Sheets

Getting the file in is the boring half. Here is what earns the effort.

Sort by likes, read the top 50

The single highest-value action, and it takes one click. Facebook's "Most relevant" ordering blends reactions, replies, recency and your own social graph — you and a colleague looking at the same thread see different comments in different orders. Sorting by likes descending gives one deterministic ranking that everyone sees identically. On most threads the top fifty rows contain the great majority of what a full analysis will conclude.

Count commenters vs comments

A pivot on username answers a question the interface never will: how many distinct people are in this thread? A post with 800 comments from 190 accounts is a conversation. A post with 800 comments from 40 accounts is an argument between a handful of people, and reporting it as "800 comments of engagement" is misleading. The same pivot exposes repeat commenters — your actual community — and, at the other extreme, the accounts posting near-identical text every hour, which is what bot comment patterns look like in a spreadsheet.

Comments per hour after publish

Put created_at on the rows of a pivot, grouped by hour, with a count of id as the value. The curve tells you when the post peaked and whether it had a second life from sharing. Compare that against your posting time across several posts and you have a data-backed answer to the question every Page asks — covered in more depth in the best time to post on Facebook.

Question extraction

Add a helper column: =IF(REGEXMATCH(D2, "\?"), "question", ""), then filter it. Every unanswered question in the thread is a customer service gap and, collectively, a content brief — if forty people ask about shipping under one post, that is the next post. This is the fastest path from a comment export to something a team can act on tomorrow.

The language split

Pivot on language. Pages with any international reach routinely find that a quarter of their comments are in a language nobody on the team reads, which means a quarter of the feedback has never actually been read. Translate that segment and analyse it separately; the themes rarely rank in the same order across markets.

Reply-rate audit

Filter for rows where replies is zero and likes is high. Those are popular comments the Page never engaged with — the cheapest engagement wins available, and the reason the 24-hour reply rule works.

Keeping a running sheet across posts

One export is a snapshot; a stack of them is a dataset. Because the columns are identical for every post and every platform, appending is trivial. Add a post_url column to a master sheet, paste each new export underneath the last, and fill the column down. From there:

  • Pivot on post to compare comment volume, unique commenters and average likes per comment across your whole content history.
  • Pivot on username across all posts to find the people who show up every single time — a genuine advocate list, sourced from behaviour rather than a follower count.
  • Re-run the theme counts monthly. Themes that persist across posts are structural; themes that appear once are noise, and you cannot tell them apart from a single thread.

Keep the raw files, too. Comments get deleted, Pages get unpublished, and people clean up threads before a campaign wraps. The export you took today is the only copy of that thread that will still exist in six months, and it costs nothing to keep.

Sheets limits worth knowing before you scale

Google caps a spreadsheet at 10 million cells across all tabs, documented in Drive's file size limits. With eleven columns that is roughly 900,000 comments on paper. In practice, responsiveness degrades well before the cap: past about 50,000 rows, filters get sluggish and any volatile formula recalculates the whole sheet on every edit. Two mitigations, both simple — convert helper formula columns to static values with Paste special once the analysis is done, and split by month or by post into separate files, with a small summary sheet pulling totals via IMPORTRANGE.

If you are consistently past a few hundred thousand rows, Sheets is the wrong tool and you want the CSVs in BigQuery or DuckDB. That is a rare place to end up from comment exports, but worth naming so you recognise it when you arrive.

Which route to pick

  • Any public post, one-off or occasional analysis: CSV export. No token, no code, no Page role, works on posts you do not own.
  • A Page you administer, needing a self-refreshing sheet: Graph API + Apps Script. Real setup cost and ongoing maintenance, but genuinely hands-off once running.
  • Twenty comments and never again: copy and paste.

Most teams that start with Apps Script end up running both — the API for their own Pages, an export for everything else, since competitor and creator threads are simply out of the API's reach.

Export Facebook comments now

Paste any public Facebook post, Reel, or video URL. Free, no Facebook login required.