Screens several public procurement portals for tenders relevant to KWB research topics (e.g. groundwater), scores them and renders one combined overview report. See Covered portals below.
For details on how to install KWB-R packages checkout our installation tutorial.
### Optionally: specify GitHub Personal Access Token (GITHUB_PAT)
### See here why this might be important for you:
### https://kwb-r.github.io/kwb.pkgbuild/articles/install.html#set-your-github_pat
# Sys.setenv(GITHUB_PAT = "mysecret_access_token")
# Install package "remotes" from CRAN
if (! require("remotes")) {
install.packages("remotes", repos = "https://cloud.r-project.org")
}
# Install KWB package 'kwb.tenders' from GitHub
remotes::install_github("KWB-R/kwb.tenders")library(kwb.tenders)
# Credentials via environment variables (e.g. in ~/.Renviron):
# VMP_BB_USERNAME = "you@example.com"
# VMP_BB_PASSWORD = "your-password"
# One-shot: log in, scrape, score and write to reports/
check_tenders() # headless
check_tenders(headless = FALSE) # watch the browser (debug the login)This writes reports/vmp-bb_<date>.xlsx (sheets Relevant / Alle / Neu)
and reports/latest.md, flagging tenders that are new since the previous run.
Tenders are scored against all KWB research groups (Grundwasser, Energie &
Ressourcen, Regenwasser & Gewässer, Smart City & Infrastruktur, Wasseraufbereitung
& -wiederverwendung, Wasser & Risiko) and tagged with the matching group(s).
Keywords live in inst/extdata/keywords_<group>.yml (one file per group, fully
configurable). See vignette("tutorial") for details.
screen_all_portals() queries six sources and writes one combined report:
| Portal | Connector | Access |
|---|---|---|
| Vergabemarktplatz Brandenburg | vmp_bb_tenders() |
cosinex; login-free (optional login) |
| Vergabemarktplatz NRW | vmp_nrw_tenders() |
cosinex; login-free (optional login) |
| Deutsches Vergabeportal (DTVP) | dtvp_tenders() |
cosinex; login-free |
| Vergabeplattform Berlin | berlin_tenders() |
berlin.de / iTWO; HTTP, login-free |
| Datenservice Öffentlicher Einkauf (Bund + Länder + Kommunen) | oeffentlichevergabe_tenders() |
OCDS API, login-free |
| TED (EU) | ted_tenders() |
TED v3 API, login-free |
e-Vergabe des Bundes (evergabe-online.de) needs no separate connector: its
announcements are published into the Datenservice Öffentlicher Einkauf
(oeffentlichevergabe.de) and — for EU-wide procedures — into TED, both already
covered above. Verified on a sample: federal buyers (incl. the operator,
Beschaffungsamt des BMI) and notices linking to evergabe-online.de show up in
the oeffentlichevergabe feed.
The workflow .github/workflows/check-tenders.yaml runs screen_all_portals()
on a schedule (weekdays 03:00 UTC by default) and publishes the report to the
gh-pages branch under reports/:
- Overview (sortable / filterable table): https://kwb-r.github.io/kwb.tenders/reports/latest.html
- Excel:
https://kwb-r.github.io/kwb.tenders/reports/tenders_<date>.xlsx
The public tender search needs no login, so no repository secrets are
required. Publishing to gh-pages keeps the report out of the main history and
browsable on the project site. The Excel file is also kept as a build artifact.
Note: The portal scrape runs in a headless browser on CI (login is optional, off by default). If a future logged-in scrape is blocked headless, run the workflow on a self-hosted runner instead.
Release: https://kwb-r.github.io/kwb.tenders
Development: https://kwb-r.github.io/kwb.tenders/dev