EN
Copied
Modules

Tarifs

Tarifs

Extrait les grilles tarifaires publiées sur le site web de chaque point d'intérêt. Le module parcourt une cascade de sources structurées (JSON-LD, Microdata, Open Graph, routes tarifaires dédiées, repli sur la page d'accueil) et retourne un montant normalisé, une devise et une période de facturation pour chaque site résolu.

C'est une étape d'enrichissement, pas de découverte. Elle attend une liste préalable de POI avec un site_web résolu : typiquement la sortie d'un job scrap.

Entrées

Les items sans site_web sont silencieusement écartés à la validation.

Champ Type Requis Notes
items array oui 1 à 10 000 points d'intérêt
items[].site_web string oui URL absolue du site principal du fournisseur
source_job_id string non ID du job amont ayant produit la liste

Sorties

Chaque ligne d'entrée garde ses colonnes d'origine et reçoit les colonnes ci-dessous. Les lignes sans prix sont conservées avec ces colonnes vides, afin de préserver la cardinalité d'entrée.

Colonne Description
pricing_min_eur Prix le plus bas trouvé, nombre à deux décimales. Malgré le nom, le montant est donné dans la devise détectée, sans conversion.
pricing_max_eur Prix le plus haut trouvé, même règle.
pricing_currency EUR, USD ou GBP.
pricing_period mois ou an quand une période accompagne le prix, vide sinon.
pricing_source Où le prix a été lu : json_ld, microdata, og, pricing_page ou homepage_regex.
pricing_source_url URL de la page où le prix a été lu.
pricing_confidence high, medium ou low.

Le registre liste price_amount, price_currency, price_period et price_confidence sous produces : ce sont des noms de signaux qui correspondent aux colonnes ci-dessus.

Cycle de vie

Cycle de vie standard des jobs outsend ; voir /docs/fr/concepts/jobs-lifecycle. Les jobs pricing sont sérialisés avec les autres jobs réseau intensifs du même compte.

Pipeline

needs:    [site_web]
produces: [price_amount, price_currency, price_period, price_confidence]

Chaîne typique : scrap -> pricing -> filter, avec une règle category sur pricing_confidence (valeurs high, medium) pour garder les fournisseurs dont le prix a été lu de façon fiable.

Endpoints

Méthode Chemin Rôle
POST /api/jobs/pricing Créer un job de tarifs
GET /api/jobs Lister les jobs de l'appelant
GET /api/jobs/{id} Lire un job et sa progression
GET /api/jobs/{id}/download Télécharger les résultats en JSON ou CSV
POST /api/jobs/{id}/cancel Arrêter un job en cours

Créer un job

POST /api/jobs/pricing
Content-Type: application/json

{
  "items": [
    { "site_web": "https://example-saas.com" },
    { "site_web": "https://another-vendor.io" }
  ],
  "source_job_id": "job_01HX..."
}

Limites

Voir /docs/fr/concepts/limits. Un seul job pricing concurrent par compte.

Erreurs

Issue par item plutôt qu'échec du job entier.

Condition Comportement
Aucune page tarifs trouvée Ligne renvoyée avec les colonnes pricing_* vides. Le job termine en done.
Mur de connexion Ligne renvoyée avec les colonnes pricing_* vides.

Les erreurs au niveau du job (payload invalide, entrée vide après filtrage, quota dépassé) apparaissent en 400 depuis POST /api/jobs/pricing avec un message JobValidationError.

Pour aller plus loin