Vérification fermeture
Vérifier si chaque point d'intérêt est toujours en activité, a fermé, ou est incertain : à partir des signaux réels d'abandon sur son site.
Objet
Le module dead_check inspecte le site web associé à chaque point d'intérêt (POI) et détermine si l'activité sous-jacente semble vivante, fermée ou incertaine. Il corrèle plusieurs signaux d'abandon sur le même domaine : nom de domaine en expiration, redirection vers une propriété sans rapport (revente ou rebranding), pages de parking déguisées en vrais sites, certificats TLS expirés ou invalides. Les annuaires (Doctolib, Pages Jaunes, Yelp, etc.) sont reconnus comme tels plutôt que catalogués à tort en site personnel.
Inputs
Une liste de POI, chacun portant au moins un site web. Les entrées sans site_web sont filtrées à la soumission.
| Champ | Type | Requis | Description |
|---|---|---|---|
items |
array d'objets POI | oui | 1 à 10 000 entrées. Les entrées sans site_web sont écartées avant exécution. |
source_job_id |
string | non | Identifiant du job amont produisant la liste (typiquement un scrap). Sert au lignage dans l'UI et le pipeline. |
Aucun autre paramètre : le module tourne dans un mode unique.
Outputs
Chaque ligne d'entrée garde ses colonnes d'origine et reçoit les colonnes suivantes :
| Colonne | Type | Description |
|---|---|---|
status |
string | Verdict : alive (le site répond comme une activité en marche), stale (joignable mais à l'abandon : page en construction ou aucune mise à jour depuis plus de deux ans), dead (échec DNS, connexion refusée, erreur serveur, page parking, page serveur par défaut, page vide), unknown (impossible de trancher : page protégée, délai dépassé ou pas d'URL), aggregator (l'URL est une fiche d'annuaire, pas le site propre de l'entreprise). |
reasons |
string | Signaux à l'origine du verdict, séparés par \| (par exemple parking_page, http_403_protected, no_url). |
final_url |
string | URL atteinte après redirections. |
http_status |
entier | Code HTTP de la réponse finale. |
last_modified |
string | Date de dernière modification annoncée par le serveur, si disponible. |
ssl_valid |
string | Validité du certificat TLS. |
response_ms |
entier | Temps de réponse en millisecondes. |
domain_expires_at |
string | Date d'expiration du domaine, quand le registre la publie. |
domain_expires_in_days |
entier | Jours restants avant l'expiration du domaine. |
registrar |
string | Bureau d'enregistrement du domaine. |
redirect_off_domain |
string | Le site redirige-t-il vers un autre domaine (revente ou changement de marque). |
L'entrée site_alive du registre des modules est un signal, pas un en-tête du CSV : dans un pipeline, la règle alive_only de filter garde les lignes dont status vaut alive ou stale.
L'unité de progression est sites ; l'unité de résultat aussi.
Cycle de vie
États de job standard. Voir Cycle de vie des jobs. Des compteurs partiels sont diffusés en SSE, ce qui permet de consommer les premiers verdicts sans attendre l'export final.
Pipeline
Pipelinable ; typiquement inséré juste après l'étape produisant la liste, avant tout enrichissement coûteux.
| Slot | Valeur |
|---|---|
needs |
site_web |
produces |
site_alive |
| Catégorie | verify |
| Amont typique | scrap |
| Aval typique | emails, techstack, ads_intelligence, filter |
Enchaînement courant : scrap, puis dead_check, puis filter avec alive_only (garde status alive ou stale), puis n'importe quel module d'enrichissement. Cela évite de dépenser du budget sur des activités fermées.
Endpoints
Créer un job :
POST /api/jobs/dead-check
Content-Type: application/json
{
"items": [
{ "site_web": "https://example.com", "nom": "Example Co" }
],
"source_job_id": "…"
}
Réponse : un objet JobPublic avec id, status et les métadonnées de job standard. Poller GET /api/jobs/{id} ou s'abonner au flux SSE pour la progression ; télécharger le CSV final depuis la page de détail du job une fois status = "done".
Pour la surface complète de l'API des jobs (liste, détail, cancel, export, events), voir API Jobs. Pour les quotas par compte, voir Limites.
Erreurs
| HTTP | detail |
Cause |
|---|---|---|
| 400 | Aucun établissement avec site web |
Aucun item d'entrée ne porte de champ site_web. |
| 400 | Quota dépassé : … |
Le coût estimé dépasse le quota équivalent-France par job. |
| 401 / 403 | — | Session manquante ou inactive. |
Les erreurs levées après la création du job remontent sur la page de détail et via l'événement SSE error ; le job termine en status = "error" et les résultats partiels, s'il y en a, restent téléchargeables.