# Yelp Fusion (avis et notes) — connecteur `yelp` _Fiche générée automatiquement par `scripts/gen_connector_docs.py` le 2026-08-18 06:06 — ne pas éditer à la main, régénérer._ **État : clé requise** · Palier (tier) : 5 · Backend : direct ## Description de la source Connecteur d'ENRICHISSEMENT Yelp Fusion (avis/notes) — gratuit, 500 requêtes/jour. N'émet AUCUNE fiche restaurant : il complète les fiches existantes avec rating, review_count, price, categories et phone dans details.yelp (colonne d'enrichissement, jamais écrasée par les re-crawls des sources). Croisement CONSERVATEUR (jamais fusionner deux établissements) : 1. par TÉLÉPHONE (/businesses/search/phone) — signal fort ; si plusieurs résultats, on exige le GPS le plus proche (<300 m) ; 2. sinon par NOM+ADRESSE+GPS (/businesses/matches) — l'endpoint d'appariement officiel de Yelp, seuil par défaut (conservateur). Clé requise : YELP_API_KEY dans .env (https://www.yelp.com/developers — app gratuite). Sans clé, le connecteur lève SkipSource et le pipeline passe son tour SANS marquer d'échec (statut « clé requise » dans data/sources.json). Base légale : API officielle Yelp Fusion, conditions Display Requirements (attribution Yelp affichée avec la note sur la fiche). - **Plateforme** : yelp · **Site** : https://www.yelp.com/developers - **Extraction (registre)** : API officielle Yelp Fusion (gratuit, 500 req/jour) : rating, review_count, price, categories, phone -> details.yelp. Croisement conservateur par téléphone (/businesses/search/phone, GPS <300 m si ambigu) puis nom+adresse+GPS (/businesses/matches). N'émet aucune fiche. - **Contexte de prix** : aucun - **Module** : `restoka/connectors/yelp.py` — `YelpConnector` ## Accès - **Type d'accès** : API JSON - **Endpoint de base** : https://api.yelp.com/v3 - **URLs du module** : https://www.yelp.com/developers · https://api.yelp.com/v3 - **Pagination** : réponse unique (pas de pagination) - **Backend anti-bot / rendu** : requests direct (session UA RestoKaBot, throttling poli) - **Politesse** : 0.35 s entre requêtes, timeout 20 s, UA `RestoKaBot/1.0 (+https://www.resto-ka.com/bot)` - **Authentification** : clé API requise (voir statut) ## Champs récupérés → schéma cible Aucune fiche en BD pour cette source (connecteur en attente ou clé manquante) — schéma cible : table `restaurants` + `menus`. ## Fréquence & budget - **Cadence déclarée (registre)** : hebdomadaire, re-vérification 30 jours - **Cadence observée** (médiane sync_log) : — - **Caps / budgets du module** : `MAX_PHONE_DISTANCE_M` = 300 ## Volumétrie & complétude - Aucune donnée en BD pour cette source. - **Runs journalisés (60 derniers)** : 0, dont 0 en erreur ## Erreurs connues & dépannage Aucune erreur dans les 60 derniers runs journalisés. **Note du registre** : clé requise (YELP_API_KEY absente de .env — connecteur livré, SkipSource) Rejouer la source seule : `python3 run.py sync yelp` · vérifier `sync_log` (`SELECT * FROM sync_log WHERE source='yelp' ORDER BY ts DESC LIMIT 5;`). ## Licence, attribution & conditions - **Cadre d'accès (registre, `acces_legal`)** : API officielle avec clé, Display Requirements Yelp : attribution affichée avec la note. - **Scraping / API** : User-Agent identifiable `RestoKaBot/1.0 (+https://www.resto-ka.com/bot; contact@spboucher.ai)`, throttling poli, aucun contournement d'accès ; les fiches pointent vers la source d'origine. - Retrait sur demande : contact@spboucher.ai. ## Historique - 2026-08-18 — vague d'enrichissement : standardisation de la documentation des connecteurs (fiche générée par `scripts/gen_connector_docs.py`).