Extraire les emails d'un texte
Collez n'importe quel texte et recevez toutes ses adresses e-mail dans une liste propre : d'une phrase qui cite hello@example.com sort cette adresse, avec un total de 1. Les doublons sont fusionnés ou gardés, à votre choix. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- Contact us at hello@example.com today.
- Adresses e-mail extraites
- hello@example.com
- Nombre d’adresses
- 1
- Mode de correspondance
- Unique
Collez un texte brut et obtenez chaque adresse ressemblant à un email dans une liste propre. Choisissez unique pour dédupliquer sans casse en gardant la première forme, ou all pour chaque occurrence. Sans réseau ni contrôle de boîte: extraction locale pure.
Adresses uniques ou toutes les occurrences
Collez des notes, un fil d'e-mails ou le texte d'une page : l'outil le parcourt de gauche à droite et repère tout ce qui a la forme nom@domaine.extension. Avec l'option par défaut, les adresses qui ne diffèrent que par les majuscules ne comptent qu'une fois : la première graphie est conservée, dans l'ordre où chaque adresse est apparue. L'autre option garde chaque occurrence avec ses majuscules d'origine, ce qui sert quand vous devez savoir combien de fois une adresse revient. Une phrase comme Contact us at hello@example.com today donne une seule adresse et un total de 1.
Ce qu'il ne fait pas, et où il aide
L'outil repère les adresses uniquement par leur forme. Il n'effectue aucun appel réseau et ne corrige pas une adresse pour la rendre plus conforme : une bizarrerie comme deux points d'affilée avant l'arobase apparaît telle qu'elle est écrite. Il sert donc à extraire les contacts de notes collées pour une liste de prospects, à réunir toutes les personnes citées dans un long ticket d'assistance ou à préparer une liste d'adresses uniques avant de l'importer dans un tableur.
Extracteur souple, pas un validateur RFC complet
Parcourt le texte de gauche à droite avec un motif ASCII fixe local@domaine.tld. Capture les adresses telles quelles, y compris les bizarreries comme les doubles points dans le local. Ne prouve pas que la boîte existe et ne réécrit pas la chaîne pour la rendre plus stricte.
Unicode et messagerie internationalisée hors v1
Les caractères non ASCII dans le local n'entrent pas dans le motif, donc un local mixte peut produire un match partiel ASCII plutôt que le jeton complet ou le vide. IDN et punycode ne sont pas pris en charge dans cette version.
Quelle longueur de texte est acceptée
Le texte est obligatoire et plafonné à cent mille caractères. La réponse n'écho pas le texte source complet, seulement emails, count et mode.
Cas d’usage
CRM et leads
Extrayez des adresses de notes collées.
Support
Rassemblez les contacts d'un long ticket.
Nettoyage
Construisez une liste unique avant import.
Questions fréquentes
L'outil vérifie-t-il que la boîte aux lettres existe ?
Non. Il se contente de repérer des passages qui ont la forme d'une adresse, sans interroger aucun serveur de messagerie ni passer par le réseau. Pour savoir si une boîte existe vraiment, une vérification séparée est nécessaire.
Les adresses avec accents ou les domaines internationaux sont-ils pris en charge ?
Pas entièrement. Les lettres accentuées ou d'autres alphabets avant l'arobase ne font pas partie du motif recherché : le résultat peut ne contenir que la partie sans accent, ou rien. Les domaines internationaux ne sont pas acceptés dans cette version.
Quelle quantité de texte puis-je coller ?
Jusqu'à 100 000 caractères. Au-delà, découpez votre texte en plusieurs parties avant de le coller ; la zone ne peut pas non plus rester vide, car un texte à analyser est toujours nécessaire.
Mon texte d'origine figure-t-il dans le résultat ?
Non. Le résultat contient seulement les adresses trouvées, leur nombre et l'option choisie. Le reste de ce que vous avez collé, comme les noms ou les notes autour des adresses, n'est jamais repris.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/text/extract-emails \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Contact us at hello@example.com today."}'const res = await fetch("https://api.kit.forhosting.com/text/extract-emails", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Contact us at hello@example.com today."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/extract-emails",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Contact us at hello@example.com today."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/extract-emails", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Contact us at hello@example.com today."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Contact us at hello@example.com today."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/extract-emails", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"text": "Contact us at hello@example.com today."
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.extract_emails",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_text_chars | 100000 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Unique face à all
unique regroupe les correspondances qui ne diffèrent que par la casse, garde la première forme et l'ordre de première apparition. all conserve chaque occurrence avec sa casse d'origine, utile pour des fréquences plus tard dans un pipeline.
Limites et erreurs typées
Modes inconnus et texte non string renvoient invalid_input typé.
Cas d'intégration
CI
Fixez les tableaux extraits en fixtures.
Questions techniques
Vérifie-t-il la boîte ?
Non. Extraction pure, sans DNS ni SMTP.
Qu'est-ce que unique ?
Dédup sans casse, première forme et ordre.
Adresses internationalisées ?
Pas pleinement en v1.
Le texte complet revient-il ?
Non. Seulement emails, count et mode.
Limite de taille ?
100000 caractères.
Gratuit dans le navigateur ?
Oui. L'app native utilise l'API à $0.002.