Malt Messages Scraper
Pricing
$29.00/month + usage
Malt Messages Scraper
Logs into Malt, navigates to messages, and automatically applies to pending project offers with a personalized pitch. Built for freelances receiving many Malt requests. Features: login with 2FA (IMAP), cookie fallback when form is rate-limited, template-based pitch, Google Sheets export.
Pricing
$29.00/month + usage
Rating
0.0
(0)
Developer

Corentin Robert
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Répond automatiquement aux offres de projet Malt — Se connecte, détecte les conversations en attente de réponse, remplit le formulaire de candidature avec un pitch personnalisé et soumet. Export Google Sheets et notifications Telegram inclus. Conçu pour les freelances recevant de nombreuses sollicitations sur Malt.
Pourquoi l'utiliser ?
Gain de temps
- Plus besoin de se connecter manuellement plusieurs fois par jour
- Détecte automatiquement les offres en attente de réponse
- Un run = une candidature envoyée (ou notification si aucune offre)
Candidatures cohérentes
- Pitch basé sur un template, personnalisé avec le titre du projet et l'entreprise
- TJM fixe (min 600€), lien Calendly, message professionnel
- Type de prestation auto-détecté : scraping, automatisation ou prospection
Traçabilité & alertes
- Chaque run est loggé dans Google Sheets (candidatures + runs sans offre)
- Notification Telegram à chaque candidature ou si aucune offre n'est en attente
- Connexion par cookies disponible quand Malt bloque le formulaire
Comment ça marche
- Authentification — Connexion via email/mot de passe (2FA via IMAP), ou directement via cookies
- Navigation vers les messages — Accès à Malt
/messages - Détection de l'offre en attente — Recherche des conversations « En attente de votre réponse »
- Candidature — Remplit le TJM (600€+), le pitch personnalisé, le lien Calendly, et soumet
- Résultat — Envoi au Dataset Apify, optionnellement dans Google Sheets et Telegram
Démarrage rapide
Minimal (identifiants uniquement)
{"email": "votre-email@exemple.com","password": "votre-mot-de-passe","imapUser": "votre-email@exemple.com","imapPassword": "mot-de-passe-application-gmail","headless": false}
Le code 2FA est récupéré depuis Gmail (IMAP). Utilisez un mot de passe d'application Gmail pour imapPassword.
Connexion directe par cookies
Si vous voulez bypasser le formulaire et vous connecter directement via vos cookies :
{"loginMethod": "cookies","maltCookies": [{"domain": "www.malt.fr", "name": "SESSION", "value": "...", "path": "/"},{"domain": "www.malt.fr", "name": "remember-me", "value": "...", "path": "/"}]}
Configuration complète (Google Sheets + Telegram)
{"email": "...","password": "...","imapUser": "...","imapPassword": "...","loginMethod": "form","dailyRate": 600,"calendlyLink": "https://calendly.com/vous/20min","googleSheetsEnabled": true,"googleSheetsSpreadsheetId": "ID_DE_VOTRE_SPREADSHEET","googleSheetsCredentials": {"type": "service_account", "project_id": "...", "private_key": "...", "client_email": "..."},"googleSheetsTab": "Feuille 1","telegramEnabled": true,"telegramBotToken": "VOTRE_TOKEN_BOT","telegramChatId": "VOTRE_CHAT_ID"}
Partagez le Google Sheet avec l'email du Service Account (éditeur). Les en-têtes de colonnes sont créés automatiquement.
Paramètres d'entrée
| Paramètre | Description |
|---|---|
loginMethod | "form" (défaut) = formulaire + 2FA IMAP. "cookies" = bypass direct via cookies |
email | Email de connexion Malt |
password | Mot de passe Malt |
imapUser | Adresse Gmail (même que Malt) pour récupérer le code 2FA |
imapPassword | Mot de passe d'application Gmail |
maltCookies | Tableau JSON de cookies — requis si loginMethod = "cookies" |
openaiApiKey | Optionnel — pour les conversations directes (pas les offres projet) |
dailyRate | TJM en €/jour. Min 600, défaut 600 |
calendlyLink | URL Calendly pour le pitch |
headless | true = navigateur invisible, false = navigateur visible |
googleSheetsEnabled | Logger les runs dans Google Sheets |
googleSheetsSpreadsheetId | ID du sheet (dans l'URL) |
googleSheetsCredentials | JSON du Service Account |
googleSheetsTab | Nom de l'onglet, ex : "Feuille 1" |
telegramEnabled | Envoyer des notifications Telegram |
telegramBotToken | Token du bot depuis @BotFather |
telegramChatId | ID du chat/canal |
Variables d'environnement (secrets Apify) : MALT_EMAIL, MALT_PASSWORD, MALT_IMAP_USER, MALT_IMAP_PASSWORD, MALT_COOKIES, OPENAI_API_KEY, GOOGLE_SHEETS_SPREADSHEET_ID, GOOGLE_SHEETS_CREDENTIALS, TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID
Résultat
| Champ | Description |
|---|---|
replied | true si une candidature ou un message a été envoyé |
reason | candidature_submitted, no_pending_reply, submit_button_not_found, etc. |
pitchMessage | Contenu du pitch de candidature |
messageSent | Contenu de la réponse directe (conversations uniquement) |
dailyRate | TJM utilisé dans la candidature |
accompagnement | Type de prestation : scraping, automatisation, prospection |
projectContext | { title, companyName, description } |
Colonnes Google Sheets
Créées automatiquement si l'onglet est vide :
| Colonne | Contenu |
|---|---|
| Date | Horodatage du run (ISO) |
| Entreprise | Nom de l'entreprise |
| Titre projet | Titre du projet |
| Type accompagnement | Scraping, automatisation, prospection |
| Taux (€/jour) | TJM |
| Message envoyé | Pitch envoyé |
| Statut | soumis, aucune_offre, ou raison d'erreur |
Notifications Telegram
Quand une candidature est soumise :
Malt: candidature ✅ soumisEntreprise: JoyaProjet: Déployer une acquisition B2B LinkedIn...
Quand aucune offre n'est en attente :
Malt: aucune offre en attente ✓
Limites
- Sélecteurs — Malt peut mettre à jour son interface ; les sélecteurs peuvent nécessiter des ajustements.
- Fréquence recommandée — 1 à 2 fois par jour. Les actions automatisées peuvent être contraires aux CGU Malt ; utilisation à vos risques.
Lancer en local
cd apify/scrapers/malt-messages-scrapernpm install# Créer un input.json (copier depuis input.json.example)npm start
Déployer sur Apify
$apify push

