German Construction Tenders + GAEB Bill of Quantities Extractor avatar

German Construction Tenders + GAEB Bill of Quantities Extractor

Pricing

from $0.035 / extracted gaeb tender (boq)

Go to Apify Store
German Construction Tenders + GAEB Bill of Quantities Extractor

German Construction Tenders + GAEB Bill of Quantities Extractor

German public construction tenders from the official oeffentlichevergabe.de API with their GAEB bills of quantities (.x83/.d83/.p83) as clean JSON: OZ, short/long text, quantity, unit. Plus deadline and location. No portal account needed.

Pricing

from $0.035 / extracted gaeb tender (boq)

Rating

0.0

(0)

Developer

BRK Data Systems

BRK Data Systems

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Security

Limited permissions

Share

Every German public construction tender, with its complete bill of quantities as clean JSON. No portal account needed.

This Actor reads the official open-data feed of oeffentlichevergabe.de (the German federal notice service), opens the public tender documents on the e-procurement portals, finds the GAEB bill of quantities (.x83, .d83, .p83) and turns every position into structured data: ordinal number (OZ), short text, long text, quantity, unit, position type. You also get the submission deadline, place of performance (postal code, city, NUTS region, federal state) and the contracting authority.

🇩🇪 Deutsche Beschreibung weiter unten

Why this Actor

  • The bill of quantities, not just the notice. Tender notices tell you that a school gets a new roof. The GAEB LV tells you what exactly is needed: 1,240 m² bitumen membrane, 86 m gutter, 14 roof outlets. That is the information sales teams and AI agents need.
  • Keyword search inside LV positions. Search for your product, material or brand ("Wärmepumpe", "Gussasphalt", "Rohrrahmentür") in the short and long texts of all positions, not only in the notice title. Matching positions are returned with their OZ.
  • No account, no login, no manual downloads. Only publicly accessible tender documents are used (German law, § 41 VgV, requires them to be freely and directly accessible).
  • All three GAEB formats. GAEB DA XML 3.x (.x83), GAEB 90 (.d83) and GAEB 2000 (.p83). Each format was cross-checked against the others using real tenders: identical OZ, quantities, units and texts.
  • Fair pricing. You only pay for tenders with at least one extracted position. Tenders without documents, without GAEB or with unparseable files are free.
  • Built for automation. Flat, stable JSON. One item per tender, positions as an array, plus a ready-made dataset view with one row per position.

What you get

FieldDescription
title, description, cpvCodes, procedure, lotsFrom the official notice
submissionDeadline, deadlineTypeDeadline for offers (offer) or participation requests (participationRequest), ISO 8601, Europe/Berlin. Usually date and time; date only (2026-11-19) when the portal shows no time
locationpostalCode, city, street, nutsCode, region (federal state), source (placeOfPerformance / buyer / mixed, +portal if gaps were filled from the portal page)
buyerContracting authority: name, address, NUTS code, e-mail
referenceNumberReference number (Geschäftszeichen / tender ID) of the portal
documentsUrl, portalPublic documents page
gaebFiles[]Parsed GAEB files: format, version, project name, LV name, position count
positions[]oz, category, categoryPath, shortText, longText, quantity, unit, positionType, isLumpSum, refOz, sourceFile
matchedKeywords, keywordPositionHits[]Which keywords matched and in which positions

positionType is one of normal, lumpSum (Pauschalposition), provisional (Bedarfsposition), base / alternative (Grund-/Wahlposition), reference / repetition (Bezugs-/Wiederholungsposition; repetitions inherit the long text of the referenced position).

Example output (real tender from 30 Oct 2026, shortened to 3 of 36 positions)

{
"title": "Los 24 - Schlosserarbeiten; Landestheater Altenburg, Theaterplatz 19, 04600 Altenburg, Sanierung Kronenboden",
"pubDay": "2026-10-30",
"submissionDeadline": "2026-12-08T10:00:00+01:00",
"deadlineType": "offer",
"referenceNumber": "HB-B 023-2025-24",
"cpvCodes": ["45262670"],
"procedure": "Open",
"location": {
"postalCode": "04600",
"city": "Altenburg",
"street": "Theaterplatz 19",
"nutsCode": "DEG0M",
"region": "Thüringen",
"country": "DEU",
"source": "placeOfPerformance"
},
"buyer": {
"name": "Landkreis Altenburger Land",
"street": "Lindenaustraße 9",
"postalCode": "04600",
"city": "Altenburg",
"nutsCode": "DEG0M",
"email": "vergabestelle@altenburgerland.de"
},
"documentsUrl": "https://www.evergabe-online.de/tenderdocuments.html?id=903055",
"portal": "evergabe-online.de",
"gaebFiles": [
{
"fileName": "LB_LV_GAEB_HB-B_023-2025-24_vom_261026.X83",
"format": "GAEB DA XML",
"version": "3.2",
"exchangePhase": "83",
"projectName": "LTA Landestheater Altenburg",
"boqName": "Schlosserarbeiten",
"positionCount": 36
}
],
"positionCount": 36,
"positions": [
{
"oz": "01.01.0001",
"category": "Planung",
"categoryPath": ["Stahlbau", "Planung"],
"shortText": "Werk - und Montageplanung",
"longText": "Erstellung einer Werk- und Montageplanung auf Grundlage eines präzisen durch den AN erstellten Ortsaufmaßes, einschl. einmaliger Einpflege von Änderungen und Plananpassung.\nAusführung erfolgt erst nach Freigabe der Pläne durch den Architekten.",
"quantity": 1.0,
"unit": "psch",
"positionType": "lumpSum",
"isLumpSum": true,
"refOz": null,
"sourceFile": "LB_LV_GAEB_HB-B_023-2025-24_vom_261026.X83"
},
{
"oz": "01.01.0003",
"category": "Planung",
"categoryPath": ["Stahlbau", "Planung"],
"shortText": "Statischer Nachweis Anprallast Geländer UG Ergänzung Bestand",
"longText": "Prüffähiger statische Nachweis für Anprallast\nfür Ergänzung Geländer Bestand UG erstellen und zum Prüfstatiker zur Prüfung als Papierformat in 2-facher Ausfertigung vorlegen.\nEin Prüfvorlauf von 4 KW ist seitens AN einzurechnen.",
"quantity": 1.0,
"unit": "St",
"positionType": "normal",
"isLumpSum": false,
"refOz": null,
"sourceFile": "LB_LV_GAEB_HB-B_023-2025-24_vom_261026.X83"
},
{
"oz": "01.01.0005",
"category": "Planung",
"categoryPath": ["Stahlbau", "Planung"],
"shortText": "Muster Beschichtung Acrylharzlack RAL",
"longText": "Rundrohr 40, Acrylharzlack RAL",
"quantity": 3.0,
"unit": "St",
"positionType": "repetition",
"isLumpSum": false,
"refOz": "01.01.0004",
"sourceFile": "LB_LV_GAEB_HB-B_023-2025-24_vom_261026.X83"
}
],
"matchedKeywords": ["Geländer"],
"keywordPositionHits": [
{ "oz": "01.01.0003", "keywords": ["Geländer"] },
{ "oz": "01.04.0004", "keywords": ["Geländer"] }
],
"status": "gaeb_extracted"
}

Input examples

Daily nationwide feed: all construction tenders with a parsed bill of quantities

{ "pubDaysBack": 1, "cpvPrefixes": ["45"], "onlyWithGaeb": true }

Building products across Germany: only tenders whose LV mentions your products

{ "pubDaysBack": 3, "cpvPrefixes": ["45"], "keywords": ["Wärmepumpe", "Beton", "Fenster", "Brandschutz"] }

Add "postalCodePrefixes": ["10", "80"] or "nutsPrefixes": ["DE1", "DE2"] to limit the search to your sales region.

Road construction, last 7 days, complete ZIP download

{ "pubDaysBack": 7, "cpvPrefixes": ["45233"], "downloadMode": "zip" }

All filters except keywords are applied before any document is downloaded, so narrow filters make runs faster and cheaper.

Use cases

  • n8n: a Schedule Trigger runs the Actor every morning through the Apify node. An IF node routes tenders with matchedKeywords to Slack, Microsoft Teams or your CRM (HubSpot, Pipedrive) as new leads with deadline, location and matching LV positions.
  • Make.com: the Apify module Watch Actor Runs plus Get Dataset Items writes the positions view (one row per LV position) to Google Sheets or Airtable. Sales gets a live list of quantities per product group.
  • LangChain / LlamaIndex: load the dataset with ApifyDatasetLoader, embed shortText + longText per position and let an agent answer questions like "Which tenders with a deadline in the next 3 weeks need more than 500 m² of facade insulation?".
  • AI agents via MCP: through the Apify MCP server the Actor becomes a tool for Claude, ChatGPT, Cursor and other MCP clients. The agent can fetch current tenders and reason over real bills of quantities.
  • Building material suppliers and manufacturers: find every tender that specifies your product category, with quantities for lead scoring, before your competitors read the PDF.
  • Contractors and estimators: pre-screen tenders by scope and quantity, and import positions into your own calculation tool.

Coverage and status values

Notices come from all of Germany (about 300 to 400 construction notices per working day). Documents are currently read from:

  • evergabe-online.de (federal platform)
  • evergabe.de (most tenders from Saxony, Saxony-Anhalt and Thuringia, plus many municipalities nationwide)
  • subreport ELViS (subreport-elvis.de, widely used by municipalities in NRW, Lower Saxony, Rhineland-Palatinate, Saarland and Baden-Württemberg). The portal is a JavaScript application, so the Actor opens it in a headless Chromium that is only started when a run actually contains subreport tenders. Procedures whose contracting authority allows downloads only after login are reported as login_required (free)
  • AI NetServer platforms: Die Autobahn GmbH des Bundes (vergabe.autobahn.de), HAD / eHAD Hessen (had.de), vergabe.hessen.de, Land Baden-Württemberg, Bremen, Brandenburg, Düsseldorf, Köln, Frankfurt, Halle, vergabekooperation.berlin, tender24, Fraunhofer and other platforms running the same software
  • Healy Hudson bidder portals: Deutsche Bahn (bieterportal.noncd.db.de) and the City of Hamburg (fbhh-evergabe). Railway tenders often pack the bill of quantities into 150-550 MB archives with drawings. Archives up to 2.5 × maxZipSizeMb (250 MB by default) are streamed to disk and only their GAEB files are read; raise maxZipSizeMb to include larger ones
  • Deutsche eVergabe (deutsche-evergabe.de, including procedures hosted in its partner system)
  • RIB meinauftrag (Vergabeplattform Bayern, Berlin, Stuttgart, Hannover, Wuppertal, GMSH). Note: RIB publishes the bill of quantities as a generated PDF; GAEB files are only public when the contracting authority uploads them, so only a small share of RIB tenders yields positions
  • cosinex marketplaces: dtvp.de, evergabe.nrw.de, vergabe.niedersachsen.de, vergabemarktplatz.brandenburg.de, vergabeportal-bw.de, vergabe.rlp.de, vergabe.metropoleruhr.de and others with the same software

Live check on two working days (29/30 Oct 2026, 648 construction notices): 551 notices (85 %) are on supported portals; 347 of them yielded a parsed bill of quantities with 70,983 positions in total.

portaltenderswith GAEB positionshit rate
cosinex marketplaces1547448 % (Niedersachsen 95 %, Brandenburg 91 %)
subreport ELViS1017978 %
evergabe.de686088 %
RIB meinauftrag6212 %
AI NetServer: other platforms (Hessen, Land BW, Bremen, Düsseldorf, ...)614574 %
Deutsche eVergabe353086 %
Deutsche Bahn (Healy Hudson)181267 % (4 more above the default 250 MB archive limit)
evergabe-online.de171588 %
HAD Hessen (AI NetServer)141071 %
Die Autobahn (AI NetServer)1313100 % in a local test; currently not reachable from the Apify cloud (portal_unreachable, free)
Hamburg (Healy Hudson)88100 %

The remaining tenders have no public GAEB (PDF-only documents, login-only procedures, ex-post notices, informal procedures), use another software version (e.g. the new xvergabe.de portal) or the portal was temporarily unreachable. They are free.

Each tender gets a status:

statusmeaningcharged
gaeb_extractedat least one GAEB position extractedyes
no_gaeb_listeddocuments are public but contain no GAEB fileno
no_public_documentsno public documents (e.g. ex-post transparency notices, restricted procedures)no
login_requiredthe portal requires a login / registration for the documentsno
gaeb_not_found / gaeb_failedarchive without GAEB / file not parseableno
unsupported_portal / portal_unreachable / errorportal not supported yet / temporarily unreachableno

With onlyWithGaeb: true (default) only gaeb_extracted tenders are written to the dataset.

Pricing

Pay per event: one event per tender with at least one extracted LV position (gaeb-tender-extracted). Notice filtering, failed downloads and tenders without a bill of quantities are never charged. Set a maximum cost per run in the Apify Console; the Actor stops cleanly before exceeding it. See the Pricing tab for the current price.


🇩🇪 Öffentliche Bauausschreibungen + GAEB-Leistungsverzeichnisse als JSON

Alle öffentlichen Bauausschreibungen in Deutschland, inklusive vollständigem Leistungsverzeichnis als strukturierte Daten. Ohne Portal-Account.

Der Actor liest den amtlichen Open-Data-Bekanntmachungsservice oeffentlichevergabe.de, öffnet die frei zugänglichen Vergabeunterlagen auf den Vergabeplattformen, findet das GAEB-Leistungsverzeichnis (.x83, .d83, .p83) und liefert jede Position als JSON: Ordnungszahl (OZ), Kurztext, Langtext, Menge, Einheit, Positionsart. Dazu kommen Angebotsfrist, Ausführungsort (PLZ, Ort, NUTS-Region, Bundesland) und Vergabestelle.

Ihre Vorteile

  • Das Leistungsverzeichnis statt nur der Bekanntmachung. Die Bekanntmachung sagt, dass eine Schule ein neues Dach bekommt. Das LV sagt, was genau gebraucht wird: 1.240 m² Bitumenbahn, 86 m Dachrinne, 14 Dachgullys. Genau das brauchen Vertrieb und Kalkulation.
  • Keyword-Suche direkt in den LV-Positionen. Suchen Sie nach Ihrem Produkt, Material oder Fabrikat („Wärmepumpe“, „Gussasphalt“, „Rohrrahmentür“) in Kurz- und Langtexten aller Positionen. Treffer kommen mit Ordnungszahl zurück.
  • Kein Account, kein Login, kein manueller Download. Es werden nur öffentlich zugängliche Vergabeunterlagen verarbeitet (§ 41 VgV: unentgeltlich, uneingeschränkt, vollständig und direkt abrufbar).
  • Alle drei GAEB-Formate. GAEB DA XML 3.x (.x83), GAEB 90 (.d83) und GAEB 2000 (.p83). Die Formate wurden an echten Ausschreibungen gegeneinander geprüft: identische OZ, Mengen, Einheiten und Texte.
  • Faire Abrechnung. Sie zahlen nur für Ausschreibungen mit mindestens einer extrahierten LV-Position. Ausschreibungen ohne Unterlagen, ohne GAEB oder mit defekten Dateien sind kostenlos.
  • Gebaut für Automatisierung. Flaches, stabiles JSON: ein Datensatz pro Ausschreibung, Positionen als Array, dazu eine fertige Ansicht mit einer Zeile pro LV-Position.

Typische Einsatzszenarien

  • Baustoffhandel und Hersteller: Jeden Morgen alle Ausschreibungen im Vertriebsgebiet (PLZ- oder NUTS-Filter), deren LV Ihr Produkt enthält, inklusive Mengen für die Lead-Priorisierung.
  • Bauunternehmen und Kalkulation: Ausschreibungen nach Leistungsumfang vorfiltern, Positionen direkt in die eigene Kalkulation übernehmen und Fristen im Blick behalten.
  • n8n / Make.com: täglicher Lauf per Zeitplan; Treffer gehen als Lead ins CRM, in Teams oder Slack, die Positionen landen in Google Sheets oder Excel.
  • KI-Agenten (LangChain, MCP): Fragen wie „Welche Ausschreibungen mit Frist in den nächsten drei Wochen enthalten mehr als 200 m Geländer?“ beantwortet der Agent auf Basis der echten LV-Daten.

Eingabe-Beispiel: Bauausschreibungen von gestern aus ganz Deutschland, deren LV Ihre Produkte enthält

{ "pubDaysBack": 1, "cpvPrefixes": ["45"], "keywords": ["Wärmepumpe", "Beton", "Fenster", "Brandschutz"] }

Für ein Vertriebsgebiet ergänzen Sie z. B. "postalCodePrefixes": ["10", "80"] oder "nutsPrefixes": ["DE1", "DE2"].

Die wichtigsten Filter:

  • cpvPrefixes: z. B. 45 Bau gesamt, 4526 Dach, 4533 Gebäudetechnik, 45233 Straßenbau
  • postalCodePrefixes: PLZ des Ausführungsorts
  • nutsPrefixes: z. B. DED Sachsen, DEA NRW, DE2 Bayern
  • keywords: durchsucht Titel, Beschreibung und alle LV-Positionen

Alle Filter außer keywords greifen vor dem Download. Enge Filter sparen also Zeit und Kosten.

Abdeckung

Bekanntmachungen aus ganz Deutschland (ca. 300 bis 400 Bau-Bekanntmachungen pro Werktag). Vergabeunterlagen werden derzeit gelesen von evergabe-online.de, evergabe.de (der Großteil der Ausschreibungen aus Sachsen, Sachsen-Anhalt und Thüringen sowie viele Kommunen bundesweit), subreport ELViS (viele Kommunen in NRW, Niedersachsen, Rheinland-Pfalz, Saarland und Baden-Württemberg; das Portal wird in einem Headless-Browser geöffnet, der nur startet, wenn ein Lauf subreport-Ausschreibungen enthält), den AI-NetServer-Plattformen (Die Autobahn GmbH des Bundes, HAD/eHAD Hessen, Vergabeplattform Hessen, Land Baden-Württemberg, Bremen, Brandenburg, Düsseldorf, Köln, Frankfurt, Halle, Vergabekooperation Berlin, tender24, Fraunhofer u. a.), den Healy-Hudson-Bieterportalen (Deutsche Bahn, Freie und Hansestadt Hamburg; Archive bis 2,5 × maxZipSizeMb, also standardmäßig 250 MB, werden auf die Festplatte gestreamt und nur ihre GAEB-Dateien gelesen; für größere Bahn-Archive maxZipSizeMb erhöhen), Deutsche eVergabe (inkl. Partnersystem), RIB meinauftrag (Vergabeplattform Bayern, Berlin, Stuttgart, Hannover, Wuppertal, GMSH) und den cosinex-Vergabemarktplätzen (u. a. DTVP, Vergabemarktplatz NRW, Niedersachsen, Brandenburg, Baden-Württemberg, Rheinland-Pfalz, Metropole Ruhr). Bei RIB liegt das Leistungsverzeichnis meist nur als von RIB erzeugtes PDF vor; GAEB-Dateien sind nur öffentlich, wenn die Vergabestelle sie selbst hochlädt. Daher liefern nur wenige RIB-Ausschreibungen Positionen (die übrigen sind kostenlos). Stichprobe an zwei Werktagen (29./30.10.2026, 648 Bau-Bekanntmachungen): 551 Bekanntmachungen (85 %) liegen auf unterstützten Plattformen, bei 347 davon wurde das Leistungsverzeichnis mit insgesamt 70.983 Positionen extrahiert. Trefferquoten: Die Autobahn 100 % (im lokalen Test; aus der Apify-Cloud antwortet die Plattform derzeit nicht, Status portal_unreachable, kostenlos), Hamburg 100 %, evergabe.de 88 %, evergabe-online.de 88 %, Deutsche eVergabe 86 %, subreport ELViS 78 %, weitere AI-NetServer-Plattformen 74 %, HAD Hessen 71 %, Deutsche Bahn 67 % (4 weitere Archive über dem Standardlimit von 250 MB), cosinex 48 % (Niedersachsen 95 %), RIB 2 %. Unterlagen, die erst nach Registrierung verfügbar sind (Status login_required), werden nicht verarbeitet und nicht berechnet. Die Angebotsfrist enthält in der Regel Datum und Uhrzeit; zeigt das Portal keine Uhrzeit, wird nur das Datum geliefert (2026-11-19).

Abrechnung

Pay-per-Event: ein Event pro Ausschreibung mit mindestens einer extrahierten LV-Position. Alles andere ist kostenlos. Über das Kostenlimit pro Lauf in der Apify Console behalten Sie die volle Kostenkontrolle. Der Actor hält vor Überschreiten des Limits sauber an.


Data source: open-data notice exports of oeffentlichevergabe.de and the public documents pages of the respective e-procurement portals. Tender documents are processed in memory (subreport ELViS downloads and large Healy Hudson archives are kept in a temporary folder on the container disk that is cleared after each tender); this Actor stores nothing but the extracted JSON in your dataset.