All products › EU Public Tender Monitor (TED) › n8n workflow
Monitor EU public tenders by CPV code and country each morning and append new notices to Google Sheets
An n8n workflow: each morning at 7:00 (your n8n instance's time zone) it asks the EU Public Tender Monitor (TED) API through RapidAPI for the notices published since the day before, a call for each filter you set (country, cpv_prefix), and appends what is new to a Google Sheet. Rows are matched on notice_id: a notice that comes back again updates its own row (overwritten with the latest values) instead of adding a new row.
The columns are the fields the API returns: notice_id, publication_date, buyer, country_code, title, cpv_codes, procedure, deadline, estimated_value, currency, url. The filters sit in the Code node named Filters; published_since is set from the run date, so no date needs editing.
Each filter makes 1 call a morning, at most 31 calls a month. The listing's free plan is 500 calls a month, so it covers 16 filters with no paid plan; past that, or with more calls of your own, a paid plan is needed (the listing's Pricing tab).
To run it: import the file into n8n, create a Header Auth credential named X-RapidAPI-Key that holds your RapidAPI key, choose your spreadsheet in the Google Sheets node, and give it a tab named Notices whose header row holds the column names.
Download the workflow (JSON) Get a key on RapidAPI
Columns
| Column | From the API's field |
|---|---|
notice_id | notice_id |
publication_date | publication_date |
buyer | buyer |
country_code | country_code |
title | title |
cpv_codes | cpv_codes |
procedure | procedure |
deadline | deadline |
estimated_value | estimated_value |
currency | currency |
url | url |
The call it makes
For each filter, each morning (the key in the X-RapidAPI-Key header, from the credential):
GET https://eu-tenders-monitor-api-ted-new-notices-by-cpv-country.p.rapidapi.com/v1/ted-tender-monitor?cpv_prefix=72&country=FRA&published_since=<the day before the run>&limit=100&src=n8n-ted-tender-monitor
The src parameter tells the API which template a call came from; it is counted, never passed to the source, and can be removed.
Checked by a program each day: the nodes against n8n-nodes-base 2.43.6, the columns against the API's fields, and this call (with the day's date) replayed against the API on the company's own server, the request RapidAPI forwards there, without RapidAPI in between. Written by the company's agents from the product's record.