Agrégateur d'offres d'emploi — application desktop multi-sources
JobScrapper centralise toutes vos recherches d'emploi en un seul endroit. Il scrape simultanément 14 plateformes françaises, déduplique les résultats et vous permet de gérer votre pipeline de candidatures directement depuis l'interface.
- Multi-sources — scrape 14 job boards en parallèle depuis une seule recherche
- Résultats en temps réel — progression par site affichée via Server-Sent Events
- Gestion des candidatures — statuts Nouveau / Vu / Intéressé / Rejeté
- Corbeille — archivez les offres non pertinentes, restaurez-les si besoin
- Filtres dynamiques — par site, par statut, recherche textuelle instantanée
- Export CSV — exportez vos offres filtrées (compatible Excel UTF-8)
- Déduplication intelligente — hash + matching flou (85% seuil) pour éviter les doublons
- Mode sombre / clair — thème persistant entre les sessions
- 100% local — aucune donnée envoyée vers un serveur tiers, base SQLite locale
- Anti-détection — curl-cffi TLS fingerprinting + Playwright Stealth pour les sites protégés
Saisissez vos mots-clés, localisation, rayon et sélectionnez les sites à scraper.
La progression s'affiche en direct pendant le scraping, site par site.
Cards expansibles avec description, actions directes et sidebar de navigation par source.
| Site | Méthode | Notes |
|---|---|---|
| APEC | HTTP | Résolution géographique via autocomplete |
| Playwright | Scraping headless | |
| Indeed | curl-cffi | TLS fingerprinting |
| Glassdoor | Playwright | Interception payload RSC |
| Welcome to the Jungle | Playwright | Interception Algolia |
| France Travail | HTTP | API officielle |
| Cadremploi | HTTP | — |
| Cadres Online | HTTP | — |
| HelloWork | HTTP | — |
| Malt | HTTP | Freelance / missions |
| Monster | HTTP | — |
| Adzuna | HTTP | — |
| Jobijoba | HTTP | — |
| Wizbii | HTTP | — |
Rendez-vous sur la page Releases pour télécharger la dernière version.
| Plateforme | Fichier |
|---|---|
| macOS (Apple Silicon / Intel) | JobScrapper-x.x.x-arm64.dmg |
| Windows 11 | JobScrapper Setup x.x.x.exe |
macOS peut afficher « l'application est endommagée » car elle n'est pas signée avec un certificat Apple. Pour l'ouvrir :
xattr -cr /Applications/JobScrapper.appPuis double-cliquez normalement.
- Node.js ≥ 20
- Python ≥ 3.12
- uv (gestionnaire de paquets Python)
- Playwright navigateurs installés
git clone https://github.com/Bono2007/JobScrapper.git
cd JobScrapper
# Dépendances Node
npm install
# Dépendances Python
cd python
uv sync
uv run playwright install chromium
cd ..npm run devCela lance esbuild en mode watch et Electron simultanément.
cd python
uv run uvicorn src.api:app --reload --port 8000Puis ouvrez http://localhost:8000/docs pour l'interface Swagger.
JobScrapper/
├── src/
│ ├── main/ # Electron main process
│ │ ├── index.js # BrowserWindow, cycle de vie app
│ │ └── python.js # Spawn du backend Python
│ ├── renderer/ # Interface utilisateur
│ │ ├── index.html
│ │ ├── style.css # Thèmes dark/light (CSS variables)
│ │ └── tabs/ # search.js, results.js
│ └── preload.js # Bridge IPC sécurisé
├── python/
│ └── src/
│ ├── api.py # FastAPI endpoints
│ ├── scrapers/ # 14 scrapers
│ ├── models/ # JobOffer, SearchQuery, JobStatus
│ └── db/ # Repository SQLite
├── dist/ # Bundle JS généré (gitignore)
├── resources/
│ └── python-dist/ # Binaires PyInstaller (gitignore)
└── .github/workflows/
└── release.yml # CI/CD Mac + Windows
Flux de données :
UI (Electron Renderer)
↕ HTTP (localhost)
FastAPI Backend (Python subprocess)
↕ Playwright / curl-cffi / httpx
14 Job Boards
↕
SQLite (~/Library/Application Support/JobScrapper)
| Composant | Technologie |
|---|---|
| Desktop | Electron 28 |
| Bundler JS | esbuild |
| Packaging | electron-builder |
| Backend API | FastAPI + Uvicorn |
| HTTP scraping | curl-cffi, httpx |
| Browser scraping | Playwright + Stealth |
| HTML parsing | BeautifulSoup4, selectolax |
| Base de données | SQLite (stdlib) |
| Déduplication | thefuzz |
| Binaire Python | PyInstaller |
| CI/CD | GitHub Actions |
MIT — voir LICENSE



