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
Les lignes sans signal sont conservées et marquées price_confidence = low afin de préserver la cardinalité d'entrée.
| Colonne | Type | Description |
|---|---|---|
price_amount |
number | Tarif publié le plus bas visible chez le fournisseur, en valeur numérique |
price_currency |
string | Code ISO-4217 de la devise, typiquement EUR ou USD |
price_period |
string | Période de facturation associée au montant : month, year, one_time ou unknown |
price_confidence |
string | Confiance d'extraction : high, medium ou low |
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("price_amount >= 1000").
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 price_amount vide et price_confidence = low. Le job termine en done. |
| Mur de connexion | Ligne renvoyée avec price_amount vide et price_confidence = low. |
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.