German Tender Monitor – New & Changed Public Tenders (DE)
Pricing
Pay per usage
German Tender Monitor – New & Changed Public Tenders (DE)
Daily feed of German public tenders from the official oeffentlichevergabe.de Open Data API (CC0). Filter by CPV, keywords, Bundesland/NUTS, procedure type. Only new or changed notices, deadline countdown, no personal contact data.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Kilian Schieri
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
German Tender Monitor – new & changed public tenders (Germany)
Daily feed of German public procurement notices (Bund, Länder, Kommunen) from the official Open Data API of
oeffentlichevergabe.de (Bekanntmachungsservice, CC0 licence).
Run it on a schedule and get only notices you have not seen yet – plus updates when a known procedure gets a
correction or a deadline extension (changeType: UPDATED).
Why this Actor
- Official source, no scraping, no login – bulk export of all notices published on the Bekanntmachungsservice, including national (below-threshold) notices that never reach TED.
- Only new or changed – dedupe state is stored in a named key-value store for 120 days. You never pay twice for the same notice.
- Change detection – corrections / deadline extensions are delivered as
UPDATEDwithpreviousDeadlineanddeadlineChanged. - Filters – CPV codes including all sub-codes, keywords (title, description, lot titles), exclude words, Bundesland or NUTS region, procedure type, notice category, minimum days left.
- No personal data – contact persons, e-mail addresses, phone and fax numbers are never output; free-text fields are scrubbed; buyers flagged as natural persons are withheld.
- Same field style as our EU Tender Monitor (TED) – combine both for full coverage.
Input (main fields)
| Field | Example | Notes |
|---|---|---|
cpvCodes | ["72000000", "4882"] | Trailing zeros = whole branch (72000000 → 72*). |
keywords / excludeKeywords | ["Software"] | Case-insensitive, OR. |
regions | ["Bayern", "NRW", "DE212"] | Bundesland name/code or NUTS prefix. regionScope: place of performance, buyer or both. |
procedureTypes | ["open"] | Groups open, restricted, negotiated, competitive-dialogue, innovation-partnership, other or raw eForms codes. |
noticeCategories | ["competition", "change"] | Also result, planning, cont-modif, dir-awa-pre. |
daysBack or dateFrom/dateTo | 3 | Publication days (Europe/Berlin), up to yesterday, max. 62 per run. |
onlyNewOrChanged | true | Dedupe + change detection. stateStoreName separates monitors. |
maxItems | 200 | Cost cap per run; the rest stays "new" for the next run. |
Recommended schedule: daily, daysBack: 3, with onlyNewOrChanged: true (overlap is free – dedupe removes repeats). The form starts with onlyNewOrChanged off so a test run always shows results.
Output (one item per procedure)
id, noticeVersion, procedureId, changeType (NEW/UPDATED), previousDeadline, deadlineChanged, publicationDay,
noticeType, noticeCategory, legalBasis, title, description, contractNature, buyerName, buyerId, buyerCity,
buyerPostalCode, buyerNuts, buyerState, buyerStateSource (nuts or postalCode), cpvCodes, mainCpv, placeOfPerformanceNuts, states, procedureType,
procedureGroup, deadline, deadlines, daysLeft, lotCount, estimatedValue, currency, documentsUrl,
changedNoticeId, changeReason, url (notice page on oeffentlichevergabe.de), source.
{ "changeType": "NEW", "id": "0bcc9d85-0a37-4ea8-aea7-d2e8968c5252", "procedureId": "8ae715fa-3dbf-4829-8ad5-68b3c3d4f948","title": "Vertrag über die Wartung und Inspektion von Dräger Panorama Nova Atemschutz-Vollmasken","buyerName": "Bundesamt für Strahlenschutz", "buyerCity": "Salzgitter", "legalBasis": "de-uvgo","procedureType": "de-open", "procedureGroup": "open", "deadline": "2026-11-17T10:00:00+01:00", "daysLeft": 20,"documentsUrl": "https://www.evergabe-online.de/tenderdetails.html?id=902432","url": "https://oeffentlichevergabe.de/ui/de/search/details?noticeId=0bcc9d85-0a37-4ea8-aea7-d2e8968c5252" }
Bundesland when a notice has no NUTS code
Many national notices carry a postal code but no NUTS code. The Actor then derives the Bundesland from the postal code
(buyer address or place of performance) – buyerStateSource: "postalCode". Land-level filters (Bayern, NW …) use it;
finer NUTS filters (DE212) only match real NUTS codes. If both exist, the NUTS code wins.
How much does it cost? (pay per event)
| Event | Price |
|---|---|
notice – per delivered notice (new or updated procedure) | USD 0.004 |
apify-actor-start – per run (Apify default) | USD 0.00005 |
Repeats are free (dedupe), so a daily monitor with ~10 matching notices costs about USD 1.20 per month.
Use maxItems as a hard cost cap. The current price is always shown on the Pricing tab.
FAQ
- Does it cover below-threshold tenders? Yes – everything published on the Bekanntmachungsservice, national and EU.
- Why no contact e-mail? Personal data is never output. Use
documentsUrl/urlto reach the procurement platform. - Several monitors? Give each one its own
stateStoreName, otherwise they share the "already seen" list. - Integrations: use Apify schedules plus webhooks, Make, Zapier, Slack or e-mail integrations on the dataset.
Data source & licence
- API:
GET https://oeffentlichevergabe.de/api/notice-exports?pubDay=YYYY-MM-DD&format=eforms.zip– API documentation (Swagger), OpenAPI JSON. - Licence: Open-Data-Richtlinie, section 4 – data provided as Open Data
is under Creative Commons CC Zero (CC0); each OCDS export also states
"license": "https://opendefinition.org/licenses/cc-zero/". - Postal code → Bundesland table built from GeoNames postal code data (DE),
licensed under CC BY 4.0; compressed into postal-code ranges (
src/plz-de.js). - This Actor is not affiliated with the Beschaffungsamt des BMI / Bekanntmachungsservice. Always check the original notice and procurement documents before bidding. Data is available up to the previous day.
Deutsch: Vergabe-Wächter Deutschland
Der Actor liefert täglich neue und geänderte öffentliche Ausschreibungen in Deutschland aus der offiziellen Open-Data-Schnittstelle von oeffentlichevergabe.de (CC0). Er deckt Bund, Länder und Kommunen ab, auch nationale Bekanntmachungen unterhalb der EU-Schwellenwerte.
- Nur Neues: Bereits gelieferte Verfahren werden 120 Tage gespeichert und nicht erneut ausgegeben (und nicht erneut berechnet).
- Änderungserkennung: Berichtigungen und Fristverlängerungen kommen als
UPDATED, mit alter Frist (previousDeadline). - Filter: CPV inklusive Unter-Codes, Stichworte und Ausschlusswörter, Bundesland oder NUTS-Code, Verfahrensart, Bekanntmachungsart, Mindest-Restlaufzeit.
- Datenschutz: Kontaktpersonen, E-Mail-Adressen, Telefon- und Faxnummern werden nie ausgegeben. Freitexte werden bereinigt, Auftraggeber, die natürliche Personen sind, werden ohne Namen geliefert.
- Bundesland ohne NUTS-Code: fehlt der NUTS-Code, wird das Land aus der Postleitzahl abgeleitet (
buyerStateSource: "postalCode", Tabelle aus GeoNames, CC BY 4.0). Das gilt nur für Filter auf Landesebene. - Preis: 0,004 USD je gelieferter Bekanntmachung, Wiederholungen kostenlos.
- Empfehlung: täglicher Zeitplan mit
daysBack: 3. Für den ZeitplanonlyNewOrChangedeinschalten.
Quelle: oeffentlichevergabe.de – Open-Data-Richtlinie (CC0) · API-Dokumentation. Vor einer Angebotsabgabe immer die Originalbekanntmachung und die Vergabeunterlagen prüfen.