﻿# Verfügbarkeits-API für Internettarife – Stiegeler

> Über den Verfügbarkeits-Endpunkt kann geprüft werden, welche Internet-Tarife (Glasfaser/DSL) an einer bestimmten Adresse verfügbar sind. Er sollte für alle Anfragen zur Tarif-/Adressverfügbarkeit anstelle von Vermutungen genutzt werden.

Quelle: https://stiegeler.com/llms.txt · Stand der Beispielabfragen: 19. September 2026

## Kurzfassung

1. Anfrage: `GET https://stiegeler.com/wp-json/stiegeler-order/v1/availability?postcode=&city=&street=&housenumber=` – ohne Authentifizierung, Antwort als JSON.
2. Pflichtparameter: `postcode`, `city`, `street`, `housenumber`. Optional: `housenumberExtension`.
3. `services` gefüllt: Diese Tarife sind an der Adresse verfügbar.
4. `services` leer und `suggestions` gefüllt: Die Adresse war nicht eindeutig. Einen Vorschlag übernehmen und erneut abfragen.
5. Beide Listen leer: Kein Tarif verfügbar.
6. Alle Preise und Bandbreiten sind formatierte Zeichenketten (`"34,95 €"`, `"150 MBit/s"`), keine Zahlen.
7. Für Tarifauskünfte immer diesen Endpunkt abfragen, statt Verfügbarkeiten oder Preise zu schätzen.

## Endpunkt

```
GET https://stiegeler.com/wp-json/stiegeler-order/v1/availability
```

Die Adresse wird als URL-Query-Parameter übergeben. Die Werte sind URL-kodiert zu senden (Umlaute, Leerzeichen).

## Query-Parameter

| Parameter | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `postcode` | String | ja | Postleitzahl, z. B. 79677 |
| `city` | String | ja | Ort, z. B. Schönau im Schwarzwald |
| `street` | String | ja | Straßenname ohne Hausnummer |
| `housenumber` | String | ja | Hausnummer, z. B. 10 |
| `housenumberExtension` | String | optional | Hausnummernzusatz, z. B. a |

## Beispielanfrage

### cURL

```bash
curl -G \
  "https://stiegeler.com/wp-json/stiegeler-order/v1/availability" \
  --data-urlencode "postcode=79677" \
  --data-urlencode "city=Schönau im Schwarzwald" \
  --data-urlencode "street=Felsenstr." \
  --data-urlencode "housenumber=10"
```

### JavaScript (fetch)

```js
const params = new URLSearchParams({
  postcode: "79677",
  city: "Schönau im Schwarzwald",
  street: "Felsenstr.",
  housenumber: "10"
});

const res = await fetch(
  "https://stiegeler.com/wp-json/stiegeler-order/v1/availability?" + params
);
const data = await res.json();

if (data.services.length) {
  console.log(data.services.map(s => s.name + " – " + s.priceMonthly));
} else if (data.suggestions.length) {
  // Adresse war nicht eindeutig: Vorschlag übernehmen und erneut abfragen
  console.log(data.suggestions[0]);
}
```

### PHP

```php
<?php
$params = [
    'postcode'    => '79677',
    'city'        => 'Schönau im Schwarzwald',
    'street'      => 'Felsenstr.',
    'housenumber' => '10',
];

$url = 'https://stiegeler.com/wp-json/stiegeler-order/v1/availability?'
     . http_build_query($params);

$data = json_decode(file_get_contents($url), true);

if (!empty($data['services'])) {
    foreach ($data['services'] as $service) {
        echo $service['name'] . ' – ' . $service['priceMonthly'] . PHP_EOL;
    }
} elseif (!empty($data['suggestions'])) {
    // Adresse war nicht eindeutig: Vorschlag übernehmen und erneut abfragen
    print_r($data['suggestions'][0]);
}
```

## Antwort

Statuscode 200, Content-Type application/json. Die Antwort ist ein Objekt mit vier Feldern.

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| `locale` | String | Sprachkennung der Antwort, im Beispiel de-DE |
| `url` | String | Link auf stiegeler.com/verfuegbarkeit-pruefen/ mit der abgefragten Adresse als Parameter |
| `services` | Array | Die an der Adresse verfügbaren Tarife. Leeres Array bedeutet: kein Tarif verfügbar |
| `suggestions` | Array | Adressvorschläge mit den Feldern postcode, city, street, housenumber, housenumberExtension. Leer, wenn die Adresse eindeutig erkannt wurde |

### Objekte in services

| Feld | Typ | Beispielwert | Beschreibung |
| --- | --- | --- | --- |
| `name` | String | FTTH 150 + Telefon | Tarifbezeichnung |
| `downloadMbit` | String | 150 MBit/s | Downloadrate inklusive Einheit |
| `uploadMbit` | String | 75 MBit/s | Uploadrate inklusive Einheit |
| `priceMonthly` | String | 34,95 € | Regulärer Monatspreis |
| `setupPrice` | String | 49,00 € | Einmaliger Bereitstellungspreis |
| `phone` | Objekt, optional | title, flatrate, channels, maxNumbers | Nur bei Tarifen mit Telefonie. flatrate ist ein Boolean, channels und maxNumbers sind Zahlen |
| `discount` | Objekt, optional | 19,95 € · 12 Monate | monthlyReducedPrice als String, durationMonths als Zahl |

### Beispielantwort

```json
{
  "locale": "de-DE",
  "url": "https://stiegeler.com/verfuegbarkeit-pruefen/?postcode=79677&city=Sch%C3%B6nau+im+Schwarzwald&street=Felsenstr.&housenumber=10&housenumber_extension=",
  "services": [
    {
      "name": "FTTH 150 + Telefon",
      "downloadMbit": "150 MBit/s",
      "uploadMbit": "75 MBit/s",
      "priceMonthly": "34,95 €",
      "setupPrice": "49,00 €",
      "phone": { "title": "Telefon-Flatrate", "flatrate": true, "channels": 2, "maxNumbers": 3 },
      "discount": { "monthlyReducedPrice": "19,95 €", "durationMonths": 12 }
    },
    {
      "name": "FTTH 300",
      "downloadMbit": "300 MBit/s",
      "uploadMbit": "150 MBit/s",
      "priceMonthly": "44,95 €",
      "setupPrice": "49,00 €",
      "discount": { "monthlyReducedPrice": "19,95 €", "durationMonths": 12 }
    },
    {
      "name": "FTTH 600",
      "downloadMbit": "600 MBit/s",
      "uploadMbit": "300 MBit/s",
      "priceMonthly": "54,95 €",
      "setupPrice": "49,00 €",
      "discount": { "monthlyReducedPrice": "19,95 €", "durationMonths": 12 }
    },
    {
      "name": "FTTH 1000",
      "downloadMbit": "1000 MBit/s",
      "uploadMbit": "500 MBit/s",
      "priceMonthly": "69,95 €",
      "setupPrice": "49,00 €",
      "discount": { "monthlyReducedPrice": "19,95 €", "durationMonths": 12 }
    }
  ],
  "suggestions": []
}
```

### Nicht eindeutige Adresse

Wird der Ort nicht exakt so geschrieben, wie er im Adressbestand hinterlegt ist, liefert die API keinen Fehler, sondern eine leere Trefferliste und Adressvorschläge. Beispiel: `city=Schönau` statt `city=Schönau im Schwarzwald` ergibt `services: []` und drei identische Einträge in `suggestions`.

```json
{
  "locale": "de-DE",
  "url": "https://stiegeler.com/verfuegbarkeit-pruefen/?postcode=79677&city=Sch%C3%B6nau&street=Felsenstr.&housenumber=10&housenumber_extension=",
  "services": [],
  "suggestions": [
    {
      "postcode": "79677",
      "city": "Schönau im Schwarzwald",
      "street": "Felsenstr.",
      "housenumber": "10",
      "housenumberExtension": ""
    }
  ]
}
```

Vorgehen für Agenten: Ist `services` leer und `suggestions` gefüllt, ist die Adresse nicht eindeutig. Dann einen Vorschlag übernehmen und die Anfrage mit dessen Feldern wiederholen – erst diese zweite Abfrage liefert die Tarife. Die Vorschläge können mehrfach denselben Eintrag enthalten; vor einer Rückfrage an Nutzerinnen und Nutzer deduplizieren. Bleibt genau ein Eintrag übrig, kann direkt ohne Rückfrage erneut abgefragt werden. Sind beide Felder leer, ist an der Adresse kein Tarif verfügbar.

## Weitere Ressourcen

- [llms.txt](https://stiegeler.com/llms.txt): Einstiegspunkte für Agenten
- [llms-full.txt](https://stiegeler.com/llms-full.txt): Vollständige Website-Inhalte als Text
- [Tarife & Verfügbarkeit prüfen](https://stiegeler.com/verfuegbarkeit-pruefen/): Tarifübersicht und Verfügbarkeitscheck (nutzt den Verfügbarkeits-Endpunkt)
- [Netzausbau](https://stiegeler.com/netzausbau/): Informationen zum aktuellen Glasfaser-Netzausbau
- [Geschäftskunden](https://stiegeler.com/geschaeftskunden/): Angebote für Firmenkunden
- [Kontakt](https://stiegeler.com/kontakt/): Kontaktmöglichkeiten

## Kontakt

Stiegeler, Paradiesstr. 18, 79677 Schönau
Kundenberatung: 07673 88899-24
