LinkedIn Scraper
Open source desktop app for exporting LinkedIn data
- GitHub stars
- 140
- Forks
- 22
- Release downloads
- 787
- Platforms
- Windows, macOS, Linux
- License
- AGPL-3.0
- First release
- June 2024
A cross-platform desktop app for Windows, macOS and Linux that lets a user export LinkedIn people, companies, jobs and posts to CSV using their own LinkedIn account. It runs locally, keeps tasks and results in a local SQLite database, and needs no official API access and no browser automation. Released under AGPL-3.0 with a Discord community and a video walkthrough.
The problem
Recruiters, founders and researchers often need a LinkedIn search or the people who engaged with a post in a spreadsheet, but official API access is restricted and browser-automation tools are slow and brittle. The project packages a direct, local workflow into an installer anyone can run, and publishes the code so others can learn from it and extend it.
How it is built
The app is built with Nextron: an Electron main process hosts the data layer and a Next.js renderer provides the interface with Material UI and Tailwind. Screens map to the supported jobs: people profiles, company profiles, people search exports, posts (including likes and comments from a post URL) and account setup.
Each export is a task. Tasks and their results are written to a local SQLite database through small per-table modules, so data stays on the user's machine and can be reviewed and exported to CSV later.
Installers are produced with electron-builder for Windows (x64 and x86), macOS (Apple silicon and universal) and Linux (AppImage), and published through GitHub Releases alongside the source.
What it taught me
- Shipping installers for three operating systems from one codebase is mostly a build-matrix problem; Nextron and electron-builder reduce it to a few npm scripts.
- A local database turns a one-shot script into a tool people return to: task history, review and export all fall out of it.
- For an unofficial tool, a plain disclaimer, a strong license and a visible support channel set expectations before the first issue is filed.
Architecture
The user configures an export task in the Next.js renderer, which talks to the Electron main process over IPC. The main process performs the job with the user's own LinkedIn account, writes tasks and results into a local SQLite database, and exports finished results to CSV. Everything runs on the user's machine; there is no server component.
Layer 1
UserClient
Desktop app on their machine
→ Next.js renderer (configures task)
Layer 2
Next.js rendererClient
Task screens and results
→ Electron main (IPC)
Layer 3
Electron mainService
Runs tasks, owns data layer
→ LinkedIn (fetches data) → SQLite (saves results)
Layer 4
LinkedInExternal
User's own account
SQLiteStore
Accounts, tasks, results
→ CSV export (export)
Layer 5
CSV exportStore
Spreadsheet-ready output
→ User (download)
Stack
Frontend
- Electron 29
- Next.js 13 via Nextron
- React 18
- Material UI
- Tailwind CSS
Backend
- Node.js main process
Data
- SQLite (better-sqlite3)
- CSV export
Infrastructure
- electron-builder
- GitHub Releases