Web-based Facebook groups scraper that opens Chrome, searches groups, extracts posts, and exports CSV.
For the full startup flow, see:

Public groups filter before collecting linksAuthorPost TimeContentPost Linkdocker compose up --build -d
Open:
http://localhost:5000
For Facebook login inside the Selenium browser container, open:
http://localhost:7900
The noVNC password is disabled for local development in the current compose file.
requirements.txt is still required because the Docker image for the Flask app installs Python packages from it during build.
app - Flask web appredis - queue and live job statepostgres - persistent run historyselenium - Chrome browser automationIf you expose this app with ngrok, users open the ngrok URL in their browser and use it directly. They do not install Python, ChromeDriver, Docker, or this repository.
Run starts a new scraping jobStop stops your own current jobProcess Timeline shows user-friendly progress logsDownload CSV becomes active when run is completeClear clears timeline logs for your jobMy Runs shows your own run historyDelete removes a specific saved run and its CSVDelete All removes all saved runs and CSV files for the current browser userclient_id, and users can control only their own jobs.Redis when configured.Redis stores queue and live job statePostgreSQL stores persistent run history48 hours30 daysSelenium exposes:
4444 for WebDriver7900 for noVNC browser accessSearch in FacebookPhrase sent to Facebook search.
Group links numberRequested number of groups to process.
Posts from each groupRequested number of posts per group.
Expected rows =
group_links_number * posts_from_each_group(best effort, based on available data and page behavior).
web_outputs\facebookposts-<job_id>.csvfacebookposts.csvIf you want to share a temporary public link to your local app:
docker compose up --build -d
ngrok http 5000
https://...ngrok... URL.Do not commit browser profile/cache/history folders (web_profiles/** should be ignored).
If sensitive data was already committed, rewrite history and rotate exposed credentials.
Make sure ngrok is installed and in PATH, or run the full executable path.
When Facebook login is required, use:
http://localhost:7900That page shows the Selenium browser through noVNC so you can log in manually when needed.