Hey, are you looking to pull posts from a page you own/manage or someone else’s public page? Thatll change teh approach since Facebook’s API is pretty restrictive about what you can access these days
Building on what @Benjamin_Behrens said - the Graph API approach is the way to go (free, no third-party dependency).
One thing to watch out for when using FB Graph API in n8n: the Page Access Token expires after 60 days (long-lived) or 1-2 hours (short-lived). In production this always catches people off guard.
The flow that works well:
HTTP Request node → GET /{page-id}/posts?fields=message,created_time,likes.summary(true),comments.summary(true)&access_token={token}
Loop through results (SplitInBatches)
Google Sheets node → append rows
For the token issue, you can build a small n8n workflow that auto-refreshes your long-lived token before it expires and stores it in an environment variable or Google Sheets. I’ve dealt with this a lot building FB Messenger bots - the token management is honestly the hardest part, not the API call itself.
If you’re just doing a one-time export, a short-lived token from the Graph API Explorer works fine. For recurring scheduled exports, you’ll need a long-lived token strategy.