Guides
Guides API13 juin 202613 min de lecture

Extraire les e-mails d'un site web : le guide 2026

Extraire des e-mails d'un site web : code source, regex, script Python, API. Chaque méthode expliquée avec ses limites (formulaires, adresses en image).

Des e-mails extraits des pages contact et mentions légales d'un site web, dédupliqués et vérifiés pour la délivrabilité avant l'outreach.

Si vous devez extraire des e-mails d'un site web, la réponse honnête est qu'il n'existe pas de bouton unique qui marche toujours. Certains sites affichent un lien mailto: propre en pied de page, d'autres enfouissent l'adresse dans une image, d'autres la cachent derrière un formulaire de contact, et d'autres éparpillent plusieurs adresses sur des mentions légales, une page équipe et une page carrières. Ce guide parcourt chaque méthode pratique, de la lecture manuelle du code source jusqu'à un script Python, et est honnête sur les limites de chacune. Puis il montre comment biz collect fait l'extraction d'e-mails de site à grande échelle, en transformant une ville et un jeu de mots-clés en fiches d'entreprises structurées avec des e-mails de contact dédupliqués tirés des propres domaines des entreprises.

Pourquoi l'extraction d'e-mails est plus dure qu'il n'y paraît

L'expression "extraire les e-mails de n'importe quel site" promet plus qu'aucun outil ne peut livrer, donc autant être clair sur ce qui se passe réellement. Un e-mail d'entreprise vit quelque part dans le HTML, la page rendue, un document lié ou parfois seulement à l'intérieur d'une soumission de formulaire que le site n'expose jamais comme adresse lisible. Chacun de ces emplacements demande une approche d'extraction différente, et une vraie entreprise en utilise souvent plusieurs.

Voici les schémas que vous rencontrerez :

  • Un simple lien mailto:. Le cas le plus facile. L'adresse est là dans le HTML, en général en pied de page ou sur une page contact.
  • Du texte brut sur la page. L'adresse est visible mais non liée, par exemple hello [at] example point com écrite pour esquiver les scrapers naïfs.
  • Une page contact, à propos ou mentions légales séparée. La page d'accueil n'a pas d'adresse, mais une page liée en a une. Les sites allemands, autrichiens et suisses sont légalement tenus de publier des mentions légales, souvent la meilleure source unique.
  • Un formulaire de contact uniquement. Aucune adresse nulle part, juste un formulaire. Une vraie impasse pour l'extraction directe.
  • Une adresse en image ou obfusquée. L'adresse rendue en image ou assemblée par JavaScript, spécifiquement pour déjouer l'extraction.
  • Plusieurs adresses. Info, ventes, support et un propriétaire nommé, répartis sur plusieurs pages, souvent avec des doublons.

Toute méthode choisie est en réalité un compromis entre effort et couverture. L'inspection manuelle est la plus précise par site et la plus lente. Scripts et APIs sont rapides mais manquent les cas obfusqués et à formulaire. Le savoir d'emblée garde vos attentes honnêtes et votre liste d'outreach propre.

Méthode 1 : lire le code source à la main

Le moyen le plus rapide de trouver un e-mail sur un seul site est de lire le HTML directement. Dans n'importe quel navigateur, appuyez sur Ctrl+U (Cmd+Option+U sur Safari après avoir activé le menu développeur) pour ouvrir le code source, puis utilisez Ctrl+F pour chercher.

Cherchez ceci, dans l'ordre :

  1. mailto: trouve instantanément chaque e-mail lié sur la page.
  2. @ attrape les adresses en texte brut, mais matche aussi les identifiants sociaux et autre bruit.
  3. email, contact ou kontakt comme mots se trouvent souvent près de l'adresse dans le markup.

Si la page d'accueil n'a rien, ouvrez la page contact, à propos, équipe, imprint ou mentions légales et répétez. Cela paraît fastidieux, mais pour un prospect à forte valeur, cela prend moins d'une minute et vous voyez exactement ce qui est là, y compris quelle boîte est laquelle. Pour une référence faisant autorité sur la structure des liens mailto:, la documentation MDN sur les liens e-mail vaut une lecture rapide.

La limite est évidente : cela ne passe pas à l'échelle. Dix prospects, ça va. Mille entreprises locales, non. C'est là qu'interviennent les méthodes suivantes.

Méthode 2 : outils et extensions de navigateur

Un cran au-dessus de l'inspection manuelle, il y a l'extracteur basé navigateur. Les extensions de navigateur peuvent scanner la page courante (et parfois les pages liées) pour des motifs d'e-mail et les verser dans une liste copiable.

Ces outils sont pratiques pour une poignée de pages et ne demandent pas de code. Ils partagent le même plafond que l'inspection manuelle plus quelques nouveaux caveats :

  • Ils lisent en général seulement la page où vous êtes, ou un ensemble superficiel de pages liées, donc manquent les adresses sur des pages contact ou mentions légales plus profondes.
  • Ils ne voient pas les adresses rendues en images ou assemblées par JavaScript après le chargement.
  • Beaucoup d'extensions demandent de larges permissions, alors revoyez ce qu'une extension peut accéder avant de l'installer.
  • La sortie est rarement dédupliquée ou validée, donc vous obtenez la même adresse trois fois et l'occasionnel faux positif image@2x.png.

Les extracteurs de navigateur sont un juste milieu raisonnable pour du travail rapide et à faible volume. Pour des jobs répétables et plus grands, vous voulez soit un script que vous contrôlez, soit une API qui gère le parcours et la déduplication pour vous.

Méthode 3 : regex et un workflow view-source

Si vous êtes à l'aise avec un peu de traitement de texte, une expression régulière transforme le code source brut en une liste propre d'adresses candidates. La regex e-mail classique équilibre entre attraper de vraies adresses et éviter les faux matchs :

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}

Le workflow est simple. Enregistrez le code source dans un fichier, passez le motif dessus, puis dédupliquez les résultats. Sur la plupart des systèmes, vous pouvez faire cela sans écrire de programme :

# Enregistrer une page, puis extraire les chaînes uniques en forme d'e-mail
curl -s https://example.com | grep -Eio '[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}' | sort -u

C'est rapide et transparent, et ça marche sur le HTML brut de toute page que vous pouvez récupérer. Attention à ses angles morts :

  • Il matche tout ce qui a la forme d'un e-mail, donc noreply@, des noms de fichiers de pixels de tracking et des adresses d'exemple se faufilent. Filtrez-les.
  • Il ne voit que le HTML que curl renvoie. Les pages qui construisent leur contenu avec JavaScript sembleront vides.
  • Il ne suit pas les liens, donc vous devez récupérer les pages contact et mentions légales vous-même.

Un passage regex est le bon outil quand vous avez une liste d'URLs connues et voulez une extraction rapide et auditable. Pour la découverte (trouver les sites d'abord) et pour suivre automatiquement les bonnes pages internes, vous voulez un vrai script ou une API.

Méthode 4 : un script Python pour plusieurs sites

Quand vous avez de nombreuses URLs, un petit script Python gère récupération, correspondance de motif, suivi de liens internes et déduplication en un passage. Voici une version compacte qui récupère une page, suit les pages contact probables et renvoie un ensemble d'adresses dédupliqué :

import re
import requests
from urllib.parse import urljoin
from bs4 import BeautifulSoup

EMAIL_RE = re.compile(r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}")
CONTACT_HINTS = ("contact", "kontakt", "about", "impressum", "team", "imprint")
SKIP = ("noreply@", "no-reply@", "example.com", "sentry", "wixpress")


def emails_from_html(html: str) -> set[str]:
    found = set(EMAIL_RE.findall(html))
    return {e for e in found if not any(s in e.lower() for s in SKIP)}


def extract_site_emails(base_url: str, timeout: int = 10) -> set[str]:
    emails: set[str] = set()
    try:
        resp = requests.get(base_url, timeout=timeout)
        emails |= emails_from_html(resp.text)
        soup = BeautifulSoup(resp.text, "html.parser")
        for link in soup.find_all("a", href=True):
            href = link["href"].lower()
            if any(hint in href for hint in CONTACT_HINTS):
                page = urljoin(base_url, link["href"])
                try:
                    emails |= emails_from_html(requests.get(page, timeout=timeout).text)
                except requests.RequestException:
                    continue
    except requests.RequestException:
        return emails
    return emails


for url in ["https://example.com", "https://another-example.com"]:
    print(url, sorted(extract_site_emails(url)))

Ce schéma - récupérer la page d'accueil, trouver les liens de type contact, les suivre, puis dédupliquer et filtrer - est exactement la forme de la vraie extraction d'e-mails de site. C'est aussi là que la maintenance commence. Vous finirez par avoir besoin de retries, de rate limiting poli, d'un vrai user agent, du rendu JavaScript pour certains sites et d'une étape de découverte pour trouver les entreprises avant de pouvoir les scraper. Rien de tout cela n'est difficile isolément, mais ensemble cela devient un petit système à posséder.

Si vous voulez un regard plus profond sur le côté découverte et en quoi il diffère du scraping au niveau page, voyez l'entrée du glossaire sur le web scraping. Pour une comparaison entre exécuter vos propres scripts et utiliser une source de données structurée, l'article sur Google Places API vs scrapers vs APIs de données d'entreprises expose clairement les compromis.

Les caveats juridiques et de délivrabilité

Extraire un e-mail est une étape technique. L'utiliser est une étape juridique et réputationnelle, et les deux ne sont pas la même chose.

Côté juridique, le scraping de données de contact professionnelles publiquement visibles est traité très différemment selon les juridictions, et l'outreach à froid vers ces adresses est régulé par des lois comme le RGPD, l'UK GDPR, la FADP suisse, CAN-SPAM aux États-Unis et des règles équivalentes ailleurs. Le contact B2B a souvent une base légale au titre de l'intérêt légitime dans certaines régions, mais consentement, listes de suppression, identification claire et opt-out facile sont couramment requis quoi qu'il arrive. Cet article n'est pas un conseil juridique. Avant de lancer de l'outreach, confirmez ce que votre juridiction et celle de votre destinataire exigent.

Côté délivrabilité, une liste scrapée est le moyen le plus rapide de ruiner un domaine d'envoi si vous la traitez sans soin. Les adresses génériques comme info@ et contact@ sont souvent proches des spam traps, et envoyer à des adresses mortes ou mal orthographiées fait grimper votre taux de rebond. Deux habitudes vous protègent :

  • Vérifiez avant d'envoyer. Confirmez que la boîte est réelle et que le domaine accepte le courrier. L'entrée du glossaire sur la vérification d'e-mails explique les contrôles qui comptent.
  • Chauffez et segmentez. N'envoyez pas une liste scrapée entière depuis un domaine froid. Commencez petit, priorisez les adresses adaptées au rôle et retirez tout ce qui rebondit.

Traiter extraction et outreach comme des disciplines séparées est ce qui sépare une pipeline propre et conforme d'un domaine grillé.

Comment biz collect fait l'extraction d'e-mails de site à grande échelle

Tout ce qui précède marche pour une liste d'URLs connue. Le problème plus dur est celui d'avant : trouver les bonnes entreprises dans une ville puis extraire leurs coordonnées sans materner un scraper. C'est le problème pour lequel biz collect est bâti.

Vous appelez un endpoint async avec une localisation, des mots-clés, un rayon et une option d'e-mail. biz collect exécute la recherche locale en direct, puis visite le site propre de chaque entreprise et en extrait les e-mails de contact, en suivant les pages contact et mentions légales comme le script Python ci-dessus, mais en tant que service maintenu. Vous pollez le job et récupérez des fiches structurées propres.

La requête est un seul POST :

{
  "location": "Berlin, Germany",
  "keywords": ["dental clinic", "orthodontist"],
  "radius_km": 15,
  "scrape_emails": true
}

Vous recevez un job_id, pollez /api/v1/jobs/:id et lisez des entreprises structurées quand le job se termine :

{
  "name": "Example Dental Clinic",
  "address": "Beispielstrasse 12, 10115 Berlin",
  "phone": "+49 30 5550100",
  "website": "https://example-dental.de",
  "emails": ["praxis@example-dental.de", "termin@example-dental.de"]
}

Quelques choix de design comptent spécifiquement pour la qualité des e-mails :

  • Les adresses on-domain sont classées en premier. Une adresse sur le propre domaine de l'entreprise, comme praxis@example-dental.de, est classée au-dessus d'une adresse chez un fournisseur gratuit comme un compte Gmail ou Outlook générique, car la boîte on-domain a bien plus de chances d'être la vraie boîte de l'entreprise.
  • Les pages contact et mentions légales sont suivies. L'extracteur ne s'arrête pas à la page d'accueil. Il suit les mêmes pages contact, à propos et imprint que vous vérifieriez à la main, où vivent la plupart des vraies adresses.
  • Les résultats sont dédupliqués. La même adresse apparaissant dans l'en-tête, le pied de page et la page contact se réduit à une entrée par entreprise, donc votre liste est propre avant d'atteindre votre CRM.

Pour la forme complète de requête et de réponse, voyez les docs API. Pour observer le cycle de vie recherche-puis-enrichissement de bout en bout, la page comment fonctionne biz collect le déroule, et la page intégrations montre où il se branche dans les outils no-code et les scripts.

Être honnête sur la couverture

Un extracteur capable ne peut toujours pas inventer une adresse qui n'est pas publiée. biz collect est délibérément honnête là-dessus, et vous devriez l'être aussi.

  • Les sites à formulaire uniquement ne renvoient pas d'e-mail. Si une entreprise publie un formulaire et aucune adresse, il n'y a rien à extraire. La fiche inclura quand même le nom, l'adresse, le téléphone et le site, ce qui compte souvent plus pour l'outreach local qu'un e-mail de toute façon.
  • Les adresses en image ou fortement obfusquées sont ignorées. Une adresse rendue en image n'est pas du texte, donc elle n'apparaîtra pas dans les résultats.
  • La couverture varie par secteur et région. Certaines catégories publient les adresses librement ; d'autres rarement. Une fiche sans e-mail n'est pas un échec de la recherche, c'est un reflet exact de ce que l'entreprise a choisi de publier.

C'est pourquoi le bon modèle mental est "fiches d'entreprises structurées, avec e-mails là où ils existent" plutôt que "un e-mail pour chaque entreprise". Vous filtrez les fiches qui portent un e-mail quand l'e-mail est requis, et gardez les fiches téléphone-et-site quand un appel ou un formulaire est le meilleur canal. L'article sur la génération de leads B2B locaux sans recherche manuelle montre comment intégrer ce filtrage dans un workflow répétable.

Choisir votre méthode

Choisissez la méthode qui correspond à votre volume et à votre tolérance à la maintenance :

  • Un ou quelques prospects : lire le code source à la main. Le plus rapide, le plus précis, zéro setup.
  • Quelques dizaines d'URLs connues : un extracteur de navigateur ou un passage regex sur du HTML récupéré.
  • Des centaines d'URLs connues : un script Python qui suit les pages contact et dédupliqe.
  • Vous devez aussi découvrir les entreprises, dans une ville ou une région : une API de données d'entreprises structurée qui combine recherche locale en direct et extraction d'e-mails de site, pour sauter à la fois le scraper de découverte et le scraper d'enrichissement.

biz collect se situe à ce dernier niveau. Un POST démarre une recherche d'entreprises locales, le polling async renvoie le JSON structuré, les e-mails on-domain sont classés au-dessus de ceux des fournisseurs gratuits, les pages contact et mentions légales sont suivies, et les adresses sont dédupliquées, le tout sans navigateur headless à maintenir. Il est gratuit à démarrer avec 200 crédits d'inscription et sans carte, assez pour lancer une vraie recherche de ville et juger la couverture e-mail pour votre propre secteur.

Si votre but est d'atteindre des entreprises dont vous n'avez pas encore de liste d'URLs, commencez un niveau plus haut avec trouver l'adresse e-mail d'une entreprise, qui couvre la voie légitime découverte-plus-enrichissement de bout en bout.

Ouvrez les docs API, revoyez les intégrations, vérifiez les tarifs et lancez votre première extraction d'e-mails à l'échelle d'une ville aujourd'hui.

Questions fréquentes

Comment extraire des e-mails d'un site web gratuitement ?
Pour un seul site, ouvrez le code source avec Ctrl+U et cherchez mailto: et le symbole @, puis vérifiez les pages contact et mentions légales. Pour de nombreux sites, un passage regex sur du HTML récupéré ou une API de données d'entreprises à palier gratuit extrait les adresses sans outils payants. biz collect est gratuit à démarrer avec 200 crédits d'inscription et sans carte.
Est-il légal de scraper des e-mails de sites web ?
Le scraping de données de contact professionnelles publiquement visibles est traité différemment selon les juridictions, et l'outreach vers ces adresses est régulé par des lois comme le RGPD, l'UK GDPR, la FADP suisse et CAN-SPAM. Le contact B2B a souvent une base légale, mais les règles de consentement, suppression et opt-out s'appliquent couramment. Ce n'est pas un conseil juridique ; confirmez les règles de votre juridiction avant d'envoyer.
Pourquoi un outil ne peut-il pas trouver chaque e-mail d'un site ?
Certaines entreprises publient seulement un formulaire de contact, d'autres rendent leur adresse en image, et d'autres l'assemblent en JavaScript pour déjouer les scrapers. Rien de tout cela n'est du texte lisible, donc aucun extracteur ne peut le récupérer. Traitez la couverture e-mail comme partielle et gardez téléphone et site pour ces fiches.
Quel est le meilleur moyen d'extraire des e-mails de nombreux sites à la fois ?
Pour une liste d'URLs connue, un script Python qui suit les pages contact et mentions légales et dédupliqe les résultats marche bien. Si vous devez aussi trouver les entreprises d'abord, une API de données d'entreprises qui combine recherche locale en direct et extraction d'e-mails on-domain retire à la fois le scraper de découverte et celui d'enrichissement.
Dois-je e-mailer les adresses scrapées immédiatement ?
Non. Vérifiez d'abord chaque adresse pour confirmer que la boîte et le domaine acceptent le courrier, filtrez les adresses de rôle et proches des spam traps, et chauffez un domaine d'envoi froid progressivement. Envoyer une liste scrapée brute depuis un domaine froid fait grimper les taux de rebond et peut bloquer le domaine.
biz collect classe-t-il les e-mails on-domain au-dessus de ceux des fournisseurs gratuits ?
Oui. Une adresse sur le propre domaine de l'entreprise est classée au-dessus d'une adresse Gmail ou Outlook générique, car la boîte on-domain a bien plus de chances d'être la vraie boîte de l'entreprise. L'extracteur suit aussi les pages contact et mentions légales et dédupliqe les résultats avant de les renvoyer.

Collectez des contacts d'entreprises à grande échelle.

Commencez avec 200 crédits gratuits et 20 de plus chaque jour. Sans carte, sans installation.

Sans carte bancaire200 crédits d'inscription20 crédits quotidiens