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
- Stack technique : détecte les technologies derrière les mêmes sites pour croiser prix et profil de build.
- Profil marketing : repère parmi les fournisseurs tarifés ceux qui investissent activement en acquisition payante.