Scrapiky is a modern, elegant web application and scraper that automatically extracts business data from Google Maps. It features a full React frontend, a FastAPI WebSocket backend, anti-detection stealth scraping via Playwright, and real-time logging.
| Feature | Description |
|---|---|
| 🎨 Elegant Interface | Clean, modern UI built with React, Vite, and Tailwind-like styling. |
| 🕵️ Anti-Detection | Uses Playwright stealth techniques to bypass bot detection. |
| ⚡ Real-time WebSockets | Watch the scraping process live directly on your dashboard. |
| 🛡️ Smart Filters | Skip places without phones, websites, reviews, or low ratings (< 3.0). |
| 📦 Instant CSV Export | Download the harvested data neatly formatted in one click. |
| 🔐 Firebase Auth | Secure Google Login integration. |
The project has been split into two independent parts to allow seamless deployment (e.g. Cloudflare Pages for Frontend, and a VPS for Backend).
/pages: The React (Vite) frontend application./server: The Python FastAPI backend and Playwright scraper logic.
We have created an automated setup script that works across all operating systems. Just ensure you have Python 3.9+ and Node.js installed on your computer.
- Open a terminal in the root folder of the project.
- Run the setup script:
python setup.pyThis script will automatically create the virtual environment, install Python dependencies, install the Chromium browser for Playwright, and install all Node.js modules for the frontend.
We have provided a cross-platform Python launcher that will start both the Frontend and the Backend simultaneously!
From the root directory of the project, simply run:
python run.py(This script works automatically on Windows, macOS, and Linux).
Alternative (Manual Run): If you prefer running them separately:
- Terminal 1 (Backend):
cd server && .venv/bin/uvicorn server:app --reload(oruvicorn server:app --reloadif venv is activated). - Terminal 2 (Frontend):
cd pages && npm run dev
- Push this repository to GitHub.
- Go to Cloudflare Pages and connect your repository.
- Set the Root directory to
pages. - Set the Build command to
npm run build. - Set the Build output directory to
dist.
- Host the
serverfolder on any server that supports Python and can run headless Chrome (e.g., Ubuntu VPS). - Install Python, create a virtual environment, and install
requirements.txt&playwright. - Run the server using
uvicorn server:app --host 0.0.0.0 --port 8000. - Update the WebSocket URL inside
pages/src/App.jsxto point to your new backend server IP/Domain.