Skip to content
Open source202412 / 12

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.

My part. I am the sole author and maintainer: the Electron shell, the Next.js interface, the local database layer and all three releases.

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.

  1. Layer 1

    • UserClient

      Desktop app on their machine

      → Next.js renderer (configures task)

  2. Layer 2

    • Next.js rendererClient

      Task screens and results

      → Electron main (IPC)

  3. Layer 3

    • Electron mainService

      Runs tasks, owns data layer

      → LinkedIn (fetches data) → SQLite (saves results)

  4. Layer 4

    • LinkedInExternal

      User's own account

    • SQLiteStore

      Accounts, tasks, results

      → CSV export (export)

  5. Layer 5

    • CSV exportStore

      Spreadsheet-ready output

      → User (download)

ClientServiceExternalStoreDashed: feedback loop

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