Aller au contenu principal
Recette Google Sheets Veille appels d’offres

Comment suivre les appels d’offres publics dans un Google Sheet ?

Peter Cools · Mis à jour le · 5 min de lecture · Version Markdown

En bref

Créez un signal Appels d'offres publics dans Rodz avec vos mots-clés, vos départements et vos types de marché, puis collez l'URL de votre Google Sheet dans l'onglet Intégrations du signal. Chaque avis BOAMP ou TED qui correspond ajoute une ligne : acheteur, objet, lien vers l'avis, type de marché, date limite de réponse et contact publié. Un appel d'offres coûte 7 crédits.

Chiffres clés

  • Un appel d'offres livré coûte 7 crédits, plus 0,5 crédit par email trouvé si vous activez le ciblage par persona et l'option Trouver les e-mails.
  • Deux sources officielles : le BOAMP pour la France et TED pour les avis européens (sources: boamp, ted).
  • Chaque avis est livré une seule fois, dans la limite quotidienne du signal.
  • Rodz identifie 400 000+ signaux par mois (moyenne de juillet à septembre 2026).
Coût : 7 crédits par appel d'offres Mise en place : 10 min

Avant de commencer

  • Un compte Rodz avec des crédits (le compte de test en inclut 100).
  • Un compte Google qui a les droits de modification sur le Google Sheet de destination.
  • Vos mots-clés métier (par exemple « maintenance informatique », « nettoyage »), et si besoin vos départements, codes CPV et types de marché.

Étapes

  1. Étape 1. Connectez Google Sheets à Rodz

    Dans le tableau de bord Rodz, ouvrez Intégrations et cliquez sur Google Sheets. Une fenêtre Google s'ouvre : choisissez le compte Google et autorisez l'accès. Cette connexion se fait une fois, dans le tableau de bord (OAuth) ; elle ne se fait pas par clé API.

  2. Étape 2. Créez le signal Appels d’offres publics

    Dans Mes signaux, cliquez sur Activer un signal et choisissez le signal Appels d'offres publics et réglez :

    • les sources : boamp (avis français) et/ou ted (avis européens) ;
    • les mots-clés cherchés dans l'objet du marché (keywords) et les mots-clés exclus (keywordsExclude) ;
    • les départements (departmentCodes, par exemple 44, 75) pour le BOAMP, les pays (countryCodes) et codes CPV (cpvCodes) pour TED ;
    • les types de marché (marketTypes : Services, Fournitures, Travaux) ;
    • le Délai minimum de réponse (minDaysUntilDeadline), pour écarter les avis qui ferment trop tôt pour répondre.

    Configuration équivalente (POST /api/v1/signals/public-tenders)

    {
      "name": "Appels d'offres maintenance informatique Ouest",
      "status": "draft",
      "dailyLeadLimit": 20,
      "config": {
        "sources": ["boamp"],
        "keywords": ["maintenance informatique", "infogérance"],
        "keywordsExclude": ["travaux"],
        "departmentCodes": ["44", "35", "49"],
        "marketTypes": ["Services"],
        "minDaysUntilDeadline": 10
      }
    }
  3. Étape 3. Collez l’URL du Google Sheet dans le signal

    Créez un Google Sheet vide (ou un onglet dédié), copiez son URL, puis dans l'onglet Intégrations du signal, activez Google Sheets et collez l'URL. Par l'API, c'est un PATCH sur le signal avec la destination googleSheets.

    Rodz écrit la ligne d'en-tête lui-même si la feuille est vide.

    Même réglage par l'API

    curl -X PATCH "https://api.rodz.io/api/v1/signals/$SIGNAL_ID" \
      -H "Authorization: Bearer $RODZ_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"destinations": {"googleSheets": {"sheetUrl": "https://docs.google.com/spreadsheets/d/VOTRE_ID/edit"}}}'
  4. Étape 4. Fixez la limite quotidienne et activez

    Dans Paramètres de base, fixez la Limite quotidienne de prospects : elle plafonne le nombre d'avis livrés, donc la dépense. Passez le signal en Actif. Chaque nouvel avis correspondant ajoute une ligne à la feuille.

  5. Étape 5. Triez et partagez la feuille

    Ajoutez vos propres colonnes à droite des colonnes Rodz (statut, responsable, décision de répondre) : Rodz place chaque valeur sous l'en-tête du même nom et ne touche pas aux colonnes qu'il n'a pas créées. Triez sur Response Deadline pour voir d'abord les avis qui ferment bientôt.

Exemple de payload

Ce que Rodz livre pour un appel d'offres (format du webhook et de `GET /api/v1/signals/{signal_id}/leads`, sans ciblage par persona). La feuille en reçoit les colonnes principales.

{
  "signal": {
    "id": "d4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8",
    "name": "Appels d'offres maintenance informatique Ouest",
    "type": "public_tenders",
    "last_signal": "Public Tender",
    "last_signal_date": "2026-10-08",
    "job_offer_title": "Maintenance du parc informatique des services municipaux",
    "job_offer_url": "https://www.boamp.fr/avis/detail/26-000000",
    "matched_keywords": "maintenance informatique",
    "tender_description": "Maintenance préventive et curative du parc informatique, 3 lots.",
    "tender_deadline": "2026-11-06T12:00:00+00:00",
    "tender_published_date": "2026-10-07T02:00:00+00:00",
    "tender_cpv_code": "50320000",
    "tender_market_type": "services",
    "tender_nature": "cn-standard",
    "tender_submission_url": "https://marches.example/dossier/123456",
    "tender_source": "boamp",
    "buyer_siren": "000000000",
    "buyer_city": "Nantes",
    "buyer_website": "https://ville.example",
    "buyer_contact_email": "commande.publique@ville.example",
    "buyer_contact_phone": "+33 2 00 00 00 00"
  },
  "company": {
    "name": "Ville Exemple",
    "website": "https://ville.example",
    "hq_country_code": "FR",
    "hq_city": "Nantes"
  }
}

Colonnes de la feuille ← champs Rodz

Colonne Google SheetsChamp Rodz (payload)
Companycompany.name (l’acheteur public)
Tender Subjectsignal.job_offer_title (objet du marché)
Tender URLsignal.job_offer_url (lien vers l’avis)
Market Typesignal.tender_market_type
Response Deadlinesignal.tender_deadline
Tender Descriptionsignal.tender_description
Published Datesignal.tender_published_date
CPV Codesignal.tender_cpv_code
Notice Sourcesignal.tender_source
Buyer SIREN, Buyer City, Buyer Websitesignal.buyer_siren, signal.buyer_city, signal.buyer_website
Buyer Contact Email, Buyer Contact Phonesignal.buyer_contact_email, signal.buyer_contact_phone
Signal Namesignal.name

Bien régler ses mots-clés

Les mots-clés portent sur l’objet du marché. Quelques règles simples :

  1. Partez large, excluez ensuite : trois ou quatre expressions métier, puis des exclusions (keywordsExclude) pour les faux positifs que vous voyez arriver.
  2. Utilisez minDaysUntilDeadline : un avis qui ferme dans trois jours est rarement exploitable. Dix jours est un point de départ courant.
  3. Un signal par offre : si vous répondez à des marchés de natures différentes, créez un signal et un onglet par offre, pour que chaque équipe ait sa feuille.

Dépannage

  • Aucune ligne n’arrive : vérifiez que Google Sheets est activé dans l’onglet Intégrations du signal, que le signal est Actif et que le compte Google connecté peut modifier la feuille.
  • Valeurs absentes dans une colonne : l’avis publié ne contient pas l’information (par exemple pas de date limite ou pas de contact).
  • Colonne renommée : Rodz place chaque valeur sous l’en-tête du même nom ; une colonne Rodz renommée n’est plus reconnue. Gardez les en-têtes d’origine.

Questions fréquentes

Quelles colonnes Rodz écrit-il dans la feuille ?

Notamment : Timestamp, Company (l'acheteur), Tender Subject, Tender URL, Market Type, Response Deadline, Tender Description, Published Date, CPV Code, Notice Source, Buyer SIREN, Buyer City, Buyer Website, Buyer Contact Email, Buyer Contact Phone et Signal Name.

Puis-je recevoir les avis européens ?

Oui. Ajoutez ted dans les sources, puis filtrez avec countryCodes (codes pays ISO à 2 lettres) et cpvCodes. Les départements et les types de marché s'appliquent aux avis BOAMP.

Un même avis peut-il arriver deux fois ?

Non : chaque appel d'offres est livré une seule fois par signal, dans la limite quotidienne.

Puis-je obtenir un contact chez l'acheteur ?

La ligne contient déjà l'email et le téléphone publiés sur l'avis. Pour un décideur nommé, activez le ciblage par persona (enablePersonaTargeting, targetPersonas) : la personne trouvée est livrée comme contact.

Combien cela coûte-t-il par mois ?

7 crédits par avis livré, plafonnés par la limite quotidienne. Avec une limite de 5 avis par jour, le maximum est de 35 crédits par jour. Le prix du crédit va de 0,10 € à 0,05 € HT selon le pack.

Sources

Essayez sur votre marché

Créez un compte : 100 crédits offerts pour tester, sans carte bancaire.