Skip to main content

Monitor & filter French procurement tenders with BOAMP API and Google Sheets

Workflow preview

Workflow preview
100%
Monitor & filter French procurement tenders with BOAMP API and Google Sheets preview
Open on n8n.io

Important notice

This workflow is provided as-is. Please review and test before using in production.

1. Workflow Overview

French Public Procurement Tender Monitoring Workflow Overview This n8n workflow automates the monitoring and filtering of French public procurement tenders (BOAMP Bulletin Officiel des Annonces des...

Best for

  • Lead Generation automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.httprequest, n8n-nodes-base.code, n8n-nodes-base.if, n8n-nodes-base.googlesheets, n8n-nodes-base.scheduletrigger, n8n-nodes-base.splitinbatches, n8n-nodes-base.wait, n8n-nodes-base.extractfromfile

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by Growth AI.

Original n8n.io source

1.1 Workflow description

Title
Monitor & filter French procurement tenders with BOAMP API and Google Sheets
Workflow name
Monitor & filter French procurement tenders with BOAMP API and Google Sheets

French Public Procurement Tender Monitoring Workflow

Overview

This n8n workflow automates the monitoring and filtering of French public procurement tenders (BOAMP - Bulletin Officiel des Annonces des Marchés Publics). It retrieves tenders based on your preferences, filters them by market type, and identifies relevant opportunities using keyword matching.

Who is this for?

  • Companies seeking French public procurement opportunities
  • Consultants monitoring specific market sectors
  • Organizations tracking government contracts in France

What it does

The workflow operates in two main phases:

Phase 1: Automated Tender Collection

  • Retrieves all tenders from the BOAMP API based on your configuration
  • Filters by market type (Works, Services, Supplies)
  • Stores complete tender data in Google Sheets
  • Handles pagination automatically for large datasets

Phase 2: Intelligent Keyword Filtering

  • Downloads and extracts text from tender PDF documents
  • Searches for your specified keywords within tender content
  • Saves matching tenders to a separate "Target" sheet for easy review
  • Tracks processing status to avoid duplicates

Requirements

  • n8n instance (self-hosted or cloud)
  • Google account with Google Sheets access
  • Google Sheets API credentials configured in n8n

Setup Instructions

Step 1: Duplicate the Configuration Spreadsheet

  1. Access the template spreadsheet: Configuration Template
  2. Click File → Make a copy
  3. Save to your Google Drive
  4. Note the URL of your new spreadsheet

Step 2: Configure Your Preferences

Open your copied spreadsheet and configure the Config tab:

Market Types - Check the categories you want to monitor:

  • Travaux (Works/Construction)
  • Services
  • Fournitures (Supplies)

Search Period - Enter the number of days to look back (e.g., "30" for the last 30 days)

Keywords - Enter your search terms as a comma-separated list (e.g., "informatique, cloud, cybersécurité")

Step 3: Import the Workflow

  1. Copy the workflow JSON from this template
  2. In n8n, click Workflows → Import from File/URL
  3. Paste the JSON and import

Step 4: Update Google Sheets Connections

Replace all Google Sheets node URLs with your spreadsheet URL:

Nodes to update:

  • Get config (2 instances)
  • Get keyword
  • Get Offset
  • Get All
  • Append row in sheet
  • Update offset
  • Reset Offset
  • Ok
  • Target offre

For each node:

  1. Open the node settings
  2. Update the Document ID field with your spreadsheet URL
  3. Verify the Sheet Name matches your spreadsheet tabs

Step 5: Configure Schedule Triggers

The workflow has two schedule triggers:

Schedule Trigger1 (Phase 1 - Tender Collection)

  • Default: 0 8 1 * * (1st day of month at 8:00 AM)
  • Adjust based on how frequently you want to collect tenders

Schedule Trigger (Phase 2 - Keyword Filtering)

  • Default: 0 10 1 * * (1st day of month at 10:00 AM)
  • Should run after Phase 1 completes

To modify:

  1. Open the Schedule Trigger node
  2. Click Cron Expression
  3. Adjust timing as needed

Step 6: Test the Workflow

  1. Manually execute Phase 1 by clicking the Schedule Trigger1 node and selecting Execute Node
  2. Verify tenders appear in your "All" sheet
  3. Execute Phase 2 by triggering the Schedule Trigger node
  4. Check the "Target" sheet for matching tenders

How the Workflow Works

Phase 1: Tender Collection Process

  1. Configuration Loading - Reads your preferences from Google Sheets
  2. Offset Management - Tracks pagination position for API calls
  3. API Request - Fetches up to 100 tenders per batch from BOAMP
  4. Market Type Filtering - Keeps only selected market categories
  5. Data Storage - Formats and saves tenders to the "All" sheet
  6. Pagination Loop - Continues until all tenders are retrieved
  7. Offset Reset - Prepares for next execution

Phase 2: Keyword Matching Process

  1. Keyword Loading - Retrieves search terms from configuration
  2. Tender Retrieval - Gets unprocessed tenders from "All" sheet
  3. Sequential Processing - Loops through each tender individually
  4. PDF Extraction - Downloads and extracts text from tender documents
  5. Keyword Analysis - Searches for matches with accent/case normalization
  6. Status Update - Marks tender as processed
  7. Match Evaluation - Determines if keywords were found
  8. Target Storage - Saves relevant tenders with match details

Customization Options

Adjust API Parameters

In the HTTP Request node, you can modify:

  • limit: Number of records per batch (default: 100)
  • Additional filters in the where parameter

Modify Keyword Matching Logic

Edit the Get query node to adjust:

  • Text normalization (accent removal, case sensitivity)
  • Match proximity requirements
  • Context length around matches

Change Data Format

Update the Format Results node to modify:

  • Date formatting
  • PDF URL generation
  • Field mappings

Spreadsheet Structure

Your Google Sheets should contain these tabs:

  • Config - Your configuration settings
  • Offset - Pagination tracking (managed automatically)
  • All - Complete tender database
  • Target - Filtered tenders matching your keywords

Troubleshooting

No tenders appearing in "All" sheet:

  • Verify your configuration period isn't too restrictive
  • Check that at least one market type is selected
  • Ensure API is accessible (test the HTTP Request node)

PDF extraction errors:

  • Some PDFs may be malformed or protected
  • Check the URL generation in Format Results node
  • Verify PDF URLs are accessible in a browser

Duplicate tenders in Target sheet:

  • Ensure the "Ok" status is being written correctly
  • Check the Filter node is excluding processed tenders
  • Verify row_number matching in update operations

Keywords not matching:

  • Keywords are case-insensitive and accent-insensitive
  • Verify your keywords are spelled correctly
  • Check the extracted text contains your terms

Performance Considerations

  • Phase 1 processes 100 tenders per iteration with a 10-second wait between batches
  • Phase 2 processes tenders sequentially to avoid overloading PDF extraction
  • Large datasets (1000+ tenders) may take significant time to process
  • Consider running Phase 1 less frequently if tender volume is manageable

Data Privacy

  • All data is stored in your Google Sheets
  • No external databases or third-party storage
  • BOAMP API is publicly accessible (no authentication required)
  • Ensure your Google Sheets permissions are properly configured

Support and Updates

This workflow retrieves data from the BOAMP public API. If API structure changes, nodes may require updates. Monitor the workflow execution logs for errors and adjust accordingly.

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - HTTP Request

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 2 - Process Response

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 3 - Check Continue Loop

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 4 - Append row in sheet

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 5 - Format Results

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 6 - Get Offset

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 7 - Schedule Trigger

Type / Role
n8n-nodes-base.scheduleTrigger - scheduleTrigger
Config choices
Version 1.2

Block 8 - Get All

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 9 - Query match ?

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 10 - Loop Over offres

Type / Role
n8n-nodes-base.splitInBatches - splitInBatches
Config choices
Version 3

Block 11 - Get query

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 12 - Target offre

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 13 - Wait

Type / Role
n8n-nodes-base.wait - wait
Config choices
Version 1.1

Block 14 - Reset Offset

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 15 - HTTP Request4

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 16 - Extract from File

Type / Role
n8n-nodes-base.extractFromFile - extractFromFile
Config choices
Version 1

Block 17 - Wait1

Type / Role
n8n-nodes-base.wait - wait
Config choices
Version 1.1

Block 18 - Filter

Type / Role
n8n-nodes-base.filter - filter
Config choices
Version 2.2

Block 19 - Ok

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 20 - Update offset

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 21 - Get config

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 22 - Sticky Note1

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 23 - Sticky Note

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 24 - Sticky Note2

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Showing the first 24 of 55 workflow blocks. Download the JSON for the full node graph.

3. Summary Table

Workflow Monitor & filter French procurement tenders with BOAMP API and Google Sheets
Complexity advanced
Nodes 55
Categories Lead Generation
Author Growth AI
Published 06 Oct 2025

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/9315/9315.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Monitor & filter French procurement tenders with BOAMP API and Google Sheets do?

French Public Procurement Tender Monitoring Workflow Overview This n8n workflow automates the monitoring and filtering of French public procurement tenders (BOAMP Bulletin Officiel des Annonces des...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your Lead Generation use case.