Parse
Any GAEB file becomes typed JSON: lots, titles, positions, long texts and quantities.
FIG. 1 — GAEB API FOR CONSTRUCTION SOFTWARE
Read, write, validate and convert GAEB DA XML, GAEB 2000, GAEB 90 and ÖNORM straight from your software, for every exchange phase from X81 to X89.
§1 FEATURES
Any GAEB file becomes typed JSON: lots, titles, positions, long texts and quantities.
Switch between versions and phases without losing long texts or quantities.
Schema and rule checks with error reports down to the single line.
AI that reads PDF tenders and classifies positions.
§2 FORMATS
Every common GAEB generation and the Austrian ÖNORM B 2063, plus Excel and JSON to connect your own data model.
| Format | Read | Write | Validate |
|---|---|---|---|
| GAEB DA XML 3.x | ● | ● | ● |
| GAEB 2000 | ● | ● | ● |
| GAEB 90 | ● | ● | ● |
| ÖNORM B 2063 | ● | ● | ○ |
| Excel / CSV | ● | ● | — |
| JSON | ● | ● | ● |
| PDF (AI) | soon | — | — |
§3 API
/api/conversion/… or /api/validation/… (cURL, Python, PHP, .NET, Java).curl https://www.gaeb-box.de/api/conversion/gaeb/ava \
-H "Authorization: Bearer $GAEBBOX_KEY" \
-F "file={{ $filename }}"
import requests
r = requests.post(
"https://www.gaeb-box.de/api/conversion/gaeb/ava",
headers={"Authorization": f"Bearer {GAEBBOX_KEY}"},
files={"file": open("tender.x83", "rb")},
)
print(r.json())
$client = new \GuzzleHttp\Client();
$response = $client->post('https://www.gaeb-box.de/api/conversion/gaeb/ava', [
'headers' => ['Authorization' => "Bearer {$gaebboxKey}"],
'multipart' => [[
'name' => 'file',
'contents' => fopen('tender.x83', 'r'),
]],
]);
echo $response->getBody();
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", gaebboxKey);
using var form = new MultipartFormDataContent();
form.Add(new StreamContent(File.OpenRead("tender.x83")), "file", "tender.x83");
var response = await client.PostAsync(
"https://www.gaeb-box.de/api/conversion/gaeb/ava", form);
var json = await response.Content.ReadAsStringAsync();
OkHttpClient client = new OkHttpClient();
RequestBody body = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", "tender.x83",
RequestBody.create(new File("tender.x83"),
MediaType.parse("application/octet-stream")))
.build();
Request request = new Request.Builder()
.url("https://www.gaeb-box.de/api/conversion/gaeb/ava")
.header("Authorization", "Bearer " + gaebboxKey)
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println(response.body().string());
}
{
"name": "…",
"currencyShort": "EUR",
"elements": [{
"oz": "01.02.0010",
"shortText": "Baugrube ausheben",
"quantity": 420.5,
"unit": "m3"
}]
}
§4 ROADMAP
Every exchange phase from X81 to X89.
Upload a PDF or scan, receive a structured bill of quantities.
Classification, matching and comparison of positions across projects.
§5 FAQ
GAEB is the German standard for exchanging bills of quantities and tender data in construction, published by the Gemeinsamer Ausschuss Elektronik im Bauwesen.
GAEB DA XML 3.x, GAEB 2000, GAEB 90, ÖNORM B 2063, Excel/CSV and JSON for exchange phases X81 to X89.
No. The trial runs for 7 days with full API access and ends automatically.
Extraction from PDF tenders is in development. For early access, email us at [email protected].
§6 NEWS
Full API access with your own GAEB files. The trial ends automatically.
Sign up free