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
yeah you can use the facebook graph api node to pull posts from your page. youll need a page access token and the page id, then loop through the posts and write them to google sheets with the sheets node — just map the post fields (message, created_time, likes count, etc) to your sheet columns. if you need specific fields like reach or engagement, thats in the insights endpoint
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.
good addition — token expiry is exactly the thing that catches people off guard the first time in production. worth setting up the auto-refresh workflow from the start if you’re doing scheduled exports rather than retrofitting it after the first expiry incident.