MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

Api Tokens can only be provided by a System Administrator. Please contact your administrator if you need an API token.

Basics

These endpoints provide basic information about address data by their keys.

GET city by key

The key is NOT the "AGS" but a unique key that is used in the address data. It consists of 8 numbers and can contain leading zeros (e.g. '00052500').

Example request:
$client = new \GuzzleHttp\Client();
$url = 'http://tekoa.test/api/cities/58727000';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "http://tekoa.test/api/cities/58727000" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://tekoa.test/api/cities/58727000"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'http://tekoa.test/api/cities/58727000'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "data": {
        "key": "58727000",
        "name": "Stuttgart",
        "additional": null,
        "ags": "08111000",
        "short_name": "Stuttgart"
    }
}
 

Request   

GET api/cities/{key}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

key   string  optional    

The unique key of the city. Example: 58727000

GET district by keys

The city key is a unique key that is used in the address data. It consists of 8 numbers and can contain leading zeros (e.g. '00052500').

The district key is an additional 3-digit key that is used to identify a specific district within a city. It can also contain leading zeros (e.g. '001').

Example request:
$client = new \GuzzleHttp\Client();
$url = 'http://tekoa.test/api/cities/58727000/districts/051';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "http://tekoa.test/api/cities/58727000/districts/051" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://tekoa.test/api/cities/58727000/districts/051"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'http://tekoa.test/api/cities/58727000/districts/051'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "data": {
        "key": "051",
        "name": "Vaihingen",
        "city": {
            "key": "58727000",
            "name": "Stuttgart",
            "additional": null,
            "ags": "08111000",
            "short_name": "Stuttgart"
        }
    }
}
 

Request   

GET api/cities/{city_key}/districts/{key}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

city_key   string  optional    

The unique key of the city. Example: 58727000

key   string  optional    

The additional key of the district within the city. Example: 051

GET zip area by keys

A Zip Area is a specific area defined by a zip code and a city. It is identifiable via a city key and the zip code. Multiple zip areas can share the same zip code but not within the same city.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'http://tekoa.test/api/cities/58727000/zipAreas/70563';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "http://tekoa.test/api/cities/58727000/zipAreas/70563" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://tekoa.test/api/cities/58727000/zipAreas/70563"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'http://tekoa.test/api/cities/58727000/zipAreas/70563'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "data": {
        "zip": "70563",
        "zip_de": 70563,
        "postbox_numbers_from": null,
        "postbox_numbers_to": null,
        "city": {
            "key": "58727000",
            "name": "Stuttgart",
            "additional": null,
            "ags": "08111000",
            "short_name": "Stuttgart"
        }
    }
}
 

Request   

GET api/cities/{city_key}/zipAreas/{zip}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

city_key   string  optional    

The unique key of the city. Example: 58727000

zip   string  optional    

The zip code of the specific zip area. Example: 70563

GET streets in zip area

This endpoint retrieves all streets associated with a specific zip area within a city. It is used to provide detailed information about the streets in a given zip code, which can be useful for address validation and auto-completion features in forms.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'http://tekoa.test/api/cities/58727000/zipAreas/70563/streets';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'query' => 'meitnerstrasse',
            'limit' => '10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "http://tekoa.test/api/cities/58727000/zipAreas/70563/streets?query=meitnerstrasse&limit=10" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://tekoa.test/api/cities/58727000/zipAreas/70563/streets"
);

const params = {
    "query": "meitnerstrasse",
    "limit": "10",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'http://tekoa.test/api/cities/58727000/zipAreas/70563/streets'
params = {
  'query': 'meitnerstrasse',
  'limit': '10',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "data": [
        {
            "key": "07439100004",
            "name": "Meitnerstr.",
            "short_name": "Meitnerstr."
        }
    ]
}
 

Request   

GET api/cities/{city_key}/zipAreas/{zipArea_zip}/streets

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

city_key   string  optional    

The unique key of the city. Example: 58727000

zipArea_zip   string  optional    

The zip code of the specific zip area. Example: 70563

Query Parameters

query   string  optional    

Optional search query to filter streets by name. Must not be greater than 255 characters. Must be at least 2 characters. Example: meitnerstrasse

limit   integer  optional    

Optional limit for the number of streets returned. Must be at least 1. Example: 10

GET street by keys

This endpoint retrieves a specific street based on its unique identifier (key) within a zip area and city.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'http://tekoa.test/api/cities/58727000/zipAreas/70563/streets/07439100004';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "http://tekoa.test/api/cities/58727000/zipAreas/70563/streets/07439100004" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://tekoa.test/api/cities/58727000/zipAreas/70563/streets/07439100004"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'http://tekoa.test/api/cities/58727000/zipAreas/70563/streets/07439100004'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "data": {
        "key": "07439100004",
        "name": "Meitnerstr.",
        "short_name": "Meitnerstr.",
        "city": {
            "key": "58727000",
            "name": "Stuttgart",
            "additional": null,
            "ags": "08111000",
            "short_name": "Stuttgart"
        },
        "zip": {
            "zip": "70563",
            "zip_de": 70563,
            "postbox_numbers_from": null,
            "postbox_numbers_to": null
        }
    }
}
 

Request   

GET api/cities/{city_key}/zipAreas/{zipArea_zip}/streets/{key}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

city_key   string  optional    

The unique key of the city. Example: 58727000

zipArea_zip   string  optional    

The zip code of the specific zip area. Example: 70563

key   string  optional    

The unique key of the street. Example: 07439100004

Utils

These endpoints are utility functions for fetching address-related data based on incomplete information, such as a zip code. They are designed to assist in address validation and auto-completion features in forms.

POST check postbox validity

Checks the validity of a postbox number for a given zip area. If the zip area has no postboxes defined, all numbers are considered valid. Otherwise, the provided number must fall within the range of at least one defined postbox range for the zip area to be considered valid.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'http://tekoa.test/api/utils/cities/58727000/zipAreas/70571/postboxes/check';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'number' => '700111',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "http://tekoa.test/api/utils/cities/58727000/zipAreas/70571/postboxes/check" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"number\": \"700111\"
}"
const url = new URL(
    "http://tekoa.test/api/utils/cities/58727000/zipAreas/70571/postboxes/check"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "number": "700111"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'http://tekoa.test/api/utils/cities/58727000/zipAreas/70571/postboxes/check'
payload = {
    "number": "700111"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "valid": true
}
 

Request   

POST api/utils/cities/{city_key}/zipAreas/{zipArea_zip}/postboxes/check

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

city_key   string  optional    

The unique key of the city. Example: 58727000

zipArea_zip   string  optional    

The zip code of the specific zip area. Example: 70571

Body Parameters

number   string     

The postbox number to check. Example: 700111

POST check house number validity

Checks the validity of a house number for a given street. The house number is valid if it falls within the range of the street's house numbers and matches the parity (odd/even) of the type.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'http://tekoa.test/api/utils/cities/58727000/zipAreas/70563/streets/07439100004/numbers/check';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'number' => '10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request POST \
    "http://tekoa.test/api/utils/cities/58727000/zipAreas/70563/streets/07439100004/numbers/check" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"number\": \"10\"
}"
const url = new URL(
    "http://tekoa.test/api/utils/cities/58727000/zipAreas/70563/streets/07439100004/numbers/check"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "number": "10"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'http://tekoa.test/api/utils/cities/58727000/zipAreas/70563/streets/07439100004/numbers/check'
payload = {
    "number": "10"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "valid": true
}
 

Request   

POST api/utils/cities/{city_key}/zipAreas/{zipArea_zip}/streets/{street_key}/numbers/check

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

city_key   string  optional    

The unique key of the city. Example: 58727000

zipArea_zip   string  optional    

The zip code of the specific zip area. Example: 70563

street_key   string  optional    

The unique key of the street. Example: 07439100004

Body Parameters

number   string     

The house number to check. Example: 10

GET suggested zip areas

This endpoint is used to retrieve all relevant information for a given zip code, which can be used for address validation and auto-completion in forms. The response includes the zip area details, associated streets, postboxes, and city information.

The data is cached for 24 hours to improve performance for frequently requested zip codes.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'http://tekoa.test/api/utils/zipCodes/70563/zipAreas';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "http://tekoa.test/api/utils/zipCodes/70563/zipAreas" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://tekoa.test/api/utils/zipCodes/70563/zipAreas"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'http://tekoa.test/api/utils/zipCodes/70563/zipAreas'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "data": [
        {
            "zip": "70563",
            "zip_de": 70563,
            "postbox_numbers_from": null,
            "postbox_numbers_to": null,
            "city": {
                "key": "58727000",
                "name": "Stuttgart",
                "additional": null,
                "ags": "08111000",
                "short_name": "Stuttgart"
            },
            "streets": [
                {
                    "key": "00046000005",
                    "name": "Ackermannstr.",
                    "short_name": "Ackermannstr."
                },
                {
                    "key": "00110200002",
                    "name": "Albblick",
                    "short_name": "Albblick"
                },
                {
                    "key": "00126600001",
                    "name": "Albigenserweg",
                    "short_name": "Albigenserweg"
                },
                {
                    "key": "00165700003",
                    "name": "Allmandstr.",
                    "short_name": "Allmandstr."
                },
                {
                    "key": "00176000009",
                    "name": "Alpenrosenstr.",
                    "short_name": "Alpenrosenstr."
                },
                {
                    "key": "00446900001",
                    "name": "Am Feldrand",
                    "short_name": "Am Feldrand"
                },
                {
                    "key": "00440100001",
                    "name": "Am Föhrenwald",
                    "short_name": "Am Föhrenwald"
                },
                {
                    "key": "00585000001",
                    "name": "Am Hopfenrain",
                    "short_name": "Am Hopfenrain"
                },
                {
                    "key": "01002100004",
                    "name": "Am Wallgraben",
                    "short_name": "Am Wallgraben"
                },
                {
                    "key": "01055200001",
                    "name": "Amadeusweg",
                    "short_name": "Amadeusweg"
                },
                {
                    "key": "01070700147",
                    "name": "Amselweg",
                    "short_name": "Amselweg"
                },
                {
                    "key": "01306300001",
                    "name": "Anweiler Weg",
                    "short_name": "Anweiler Weg"
                },
                {
                    "key": "01593100126",
                    "name": "Bachstr.",
                    "short_name": "Bachstr."
                },
                {
                    "key": "01616300001",
                    "name": "Bahnhof Vaihingen",
                    "short_name": "Bahnhof Vaihingen"
                },
                {
                    "key": "01672100004",
                    "name": "Bassermannstr.",
                    "short_name": "Bassermannstr."
                },
                {
                    "key": "01763300001",
                    "name": "Beim Römerhaus",
                    "short_name": "Beim Römerhaus"
                },
                {
                    "key": "01828000001",
                    "name": "Bergnelkenstr.",
                    "short_name": "Bergnelkenstr."
                },
                {
                    "key": "01879100001",
                    "name": "Betzweilerstr.",
                    "short_name": "Betzweilerstr."
                },
                {
                    "key": "01957600005",
                    "name": "Bischoffstr.",
                    "short_name": "Bischoffstr."
                },
                {
                    "key": "02012500001",
                    "name": "Blümleweg",
                    "short_name": "Blümleweg"
                },
                {
                    "key": "02209500001",
                    "name": "Brommerstr.",
                    "short_name": "Brommerstr."
                },
                {
                    "key": "02261500026",
                    "name": "Brühlstr.",
                    "short_name": "Brühlstr."
                },
                {
                    "key": "02276900018",
                    "name": "Buchfinkenweg",
                    "short_name": "Buchfinkenweg"
                },
                {
                    "key": "02400500001",
                    "name": "Büsnauer Str.",
                    "short_name": "Büsnauer Str."
                },
                {
                    "key": "02456200002",
                    "name": "Champignystr.",
                    "short_name": "Champignystr."
                },
                {
                    "key": "02535100012",
                    "name": "Curiestr.",
                    "short_name": "Curiestr."
                },
                {
                    "key": "02644900002",
                    "name": "Demetriusweg",
                    "short_name": "Demetriusweg"
                },
                {
                    "key": "02753000003",
                    "name": "Don-Carlos-Str.",
                    "short_name": "Don-Carlos-Str."
                },
                {
                    "key": "02551900004",
                    "name": "Döringstr.",
                    "short_name": "Döringstr."
                },
                {
                    "key": "02857100136",
                    "name": "Drosselweg",
                    "short_name": "Drosselweg"
                },
                {
                    "key": "02872600001",
                    "name": "Dumontweg",
                    "short_name": "Dumontweg"
                },
                {
                    "key": "02878600001",
                    "name": "Dusestr.",
                    "short_name": "Dusestr."
                },
                {
                    "key": "02971100001",
                    "name": "Egmontweg",
                    "short_name": "Egmontweg"
                },
                {
                    "key": "03030200001",
                    "name": "Eisbärenstr.",
                    "short_name": "Eisbärenstr."
                },
                {
                    "key": "03111200025",
                    "name": "Emilienstr.",
                    "short_name": "Emilienstr."
                },
                {
                    "key": "03128000013",
                    "name": "Enge Str.",
                    "short_name": "Enge Str."
                },
                {
                    "key": "03175400001",
                    "name": "Erich-Ponto-Weg",
                    "short_name": "Erich-Ponto-Weg"
                },
                {
                    "key": "03189600004",
                    "name": "Erlkönigstr.",
                    "short_name": "Erlkönigstr."
                },
                {
                    "key": "03205600001",
                    "name": "Ernst-Kachel-Str.",
                    "short_name": "Ernst-Kachel-Str."
                },
                {
                    "key": "03320500001",
                    "name": "Fanny-Leicht-Str.",
                    "short_name": "Fanny-Leicht-Str."
                },
                {
                    "key": "03333100008",
                    "name": "Fauststr.",
                    "short_name": "Fauststr."
                },
                {
                    "key": "03361500001",
                    "name": "Felldorfer Str.",
                    "short_name": "Felldorfer Str."
                },
                {
                    "key": "03396800001",
                    "name": "Filderhofstr.",
                    "short_name": "Filderhofstr."
                },
                {
                    "key": "03457200001",
                    "name": "Florathweg",
                    "short_name": "Florathweg"
                },
                {
                    "key": "03552600005",
                    "name": "Freibadstr.",
                    "short_name": "Freibadstr."
                },
                {
                    "key": "03563900001",
                    "name": "Fremdstr.",
                    "short_name": "Fremdstr."
                },
                {
                    "key": "03577700002",
                    "name": "Friedemannweg",
                    "short_name": "Friedemannweg"
                },
                {
                    "key": "03673100018",
                    "name": "Fuggerstr.",
                    "short_name": "Fuggerstr."
                },
                {
                    "key": "03762700202",
                    "name": "Gartenstr.",
                    "short_name": "Gartenstr."
                },
                {
                    "key": "03804500001",
                    "name": "Geiwitzstr.",
                    "short_name": "Geiwitzstr."
                },
                {
                    "key": "03866600018",
                    "name": "Germanenstr.",
                    "short_name": "Germanenstr."
                },
                {
                    "key": "03908600001",
                    "name": "Giesekingstr.",
                    "short_name": "Giesekingstr."
                },
                {
                    "key": "03943800002",
                    "name": "Glockenblumenstr.",
                    "short_name": "Glockenblumenstr."
                },
                {
                    "key": "41230300002",
                    "name": "Gropiusplatz",
                    "short_name": "Gropiusplatz"
                },
                {
                    "key": "04172700002",
                    "name": "Gründgensstr.",
                    "short_name": "Gründgensstr."
                },
                {
                    "key": "04185400001",
                    "name": "Grüntaler Weg",
                    "short_name": "Grüntaler Weg"
                },
                {
                    "key": "04248900003",
                    "name": "Gültsteiner Str.",
                    "short_name": "Gültsteiner Str."
                },
                {
                    "key": "04328000002",
                    "name": "Haeberlinstr.",
                    "short_name": "Haeberlinstr."
                },
                {
                    "key": "05176600006",
                    "name": "Häfnerstr.",
                    "short_name": "Häfnerstr."
                },
                {
                    "key": "04355600004",
                    "name": "Hahnenweg",
                    "short_name": "Hahnenweg"
                },
                {
                    "key": "04373300001",
                    "name": "Halde, Gewann",
                    "short_name": "Halde, Gewann"
                },
                {
                    "key": "04395500002",
                    "name": "Hamletstr.",
                    "short_name": "Hamletstr."
                },
                {
                    "key": "04524300001",
                    "name": "Haugstr.",
                    "short_name": "Haugstr."
                },
                {
                    "key": "04529200139",
                    "name": "Hauptstr.",
                    "short_name": "Hauptstr."
                },
                {
                    "key": "04575100026",
                    "name": "Heerstr.",
                    "short_name": "Heerstr."
                },
                {
                    "key": "04808500004",
                    "name": "Herrenberger Str.",
                    "short_name": "Herrenberger Str."
                },
                {
                    "key": "04271700001",
                    "name": "Höhenrandstr.",
                    "short_name": "Höhenrandstr."
                },
                {
                    "key": "05040300001",
                    "name": "Holderbuschweg",
                    "short_name": "Holderbuschweg"
                },
                {
                    "key": "05065100092",
                    "name": "Holunderweg",
                    "short_name": "Holunderweg"
                },
                {
                    "key": "05070700006",
                    "name": "Holzhauser Str.",
                    "short_name": "Holzhauser Str."
                },
                {
                    "key": "05086300001",
                    "name": "Honigwiesenstr.",
                    "short_name": "Honigwiesenstr."
                },
                {
                    "key": "05090400001",
                    "name": "Hopfauer Str.",
                    "short_name": "Hopfauer Str."
                },
                {
                    "key": "05132000001",
                    "name": "Huckebeinweg",
                    "short_name": "Huckebeinweg"
                },
                {
                    "key": "05222900008",
                    "name": "Ifflandstr.",
                    "short_name": "Ifflandstr."
                },
                {
                    "key": "05303800003",
                    "name": "Im Finkenschlag",
                    "short_name": "Im Finkenschlag"
                },
                {
                    "key": "05361200001",
                    "name": "Im Johannesgraben",
                    "short_name": "Im Johannesgraben"
                },
                {
                    "key": "05468200001",
                    "name": "Im Sommerwind",
                    "short_name": "Im Sommerwind"
                },
                {
                    "key": "05475100001",
                    "name": "Im Steinengarten",
                    "short_name": "Im Steinengarten"
                },
                {
                    "key": "05595200001",
                    "name": "In der Lüsse",
                    "short_name": "In der Lüsse"
                },
                {
                    "key": "05694100001",
                    "name": "Janningsstr.",
                    "short_name": "Janningsstr."
                },
                {
                    "key": "05885600001",
                    "name": "Kainzweg",
                    "short_name": "Kainzweg"
                },
                {
                    "key": "05911200001",
                    "name": "Kaltentaler Str.",
                    "short_name": "Kaltentaler Str."
                },
                {
                    "key": "06047000001",
                    "name": "Katzenbachstr.",
                    "short_name": "Katzenbachstr."
                },
                {
                    "key": "06076900001",
                    "name": "Kelterberg",
                    "short_name": "Kelterberg"
                },
                {
                    "key": "06175200001",
                    "name": "Klöpferweg",
                    "short_name": "Klöpferweg"
                },
                {
                    "key": "06471400001",
                    "name": "Koppenhöferweg",
                    "short_name": "Koppenhöferweg"
                },
                {
                    "key": "06529800001",
                    "name": "Krehlstr.",
                    "short_name": "Krehlstr."
                },
                {
                    "key": "06552600092",
                    "name": "Kreuzstr.",
                    "short_name": "Kreuzstr."
                },
                {
                    "key": "06633400001",
                    "name": "Kuppinger Str.",
                    "short_name": "Kuppinger Str."
                },
                {
                    "key": "06957500002",
                    "name": "Liasweg",
                    "short_name": "Liasweg"
                },
                {
                    "key": "07005000162",
                    "name": "Lindenstr.",
                    "short_name": "Lindenstr."
                },
                {
                    "key": "07072000001",
                    "name": "Lombacher Str.",
                    "short_name": "Lombacher Str."
                },
                {
                    "key": "07077800002",
                    "name": "Loosweg",
                    "short_name": "Loosweg"
                },
                {
                    "key": "07084400001",
                    "name": "Loßburger Str.",
                    "short_name": "Loßburger Str."
                },
                {
                    "key": "07147600003",
                    "name": "Lutherweg",
                    "short_name": "Lutherweg"
                },
                {
                    "key": "07149700001",
                    "name": "Lutzweg",
                    "short_name": "Lutzweg"
                },
                {
                    "key": "07259500025",
                    "name": "Malvenweg",
                    "short_name": "Malvenweg"
                },
                {
                    "key": "07283200009",
                    "name": "Margueritenweg",
                    "short_name": "Margueritenweg"
                },
                {
                    "key": "07294700001",
                    "name": "Marienau",
                    "short_name": "Marienau"
                },
                {
                    "key": "07439100004",
                    "name": "Meitnerstr.",
                    "short_name": "Meitnerstr."
                },
                {
                    "key": "07496200001",
                    "name": "Mezgerstr.",
                    "short_name": "Mezgerstr."
                },
                {
                    "key": "07541500001",
                    "name": "Mitterwurzerstr.",
                    "short_name": "Mitterwurzerstr."
                },
                {
                    "key": "07197900001",
                    "name": "Möhringer Landstr.",
                    "short_name": "Möhringer Landstr."
                },
                {
                    "key": "07213700001",
                    "name": "Mößnerstr.",
                    "short_name": "Mößnerstr."
                },
                {
                    "key": "07710300001",
                    "name": "Nathanstr.",
                    "short_name": "Nathanstr."
                },
                {
                    "key": "07744400002",
                    "name": "Nestroyweg",
                    "short_name": "Nestroyweg"
                },
                {
                    "key": "07912700001",
                    "name": "Nufringer Str.",
                    "short_name": "Nufringer Str."
                },
                {
                    "key": "07970400001",
                    "name": "Oberer Grundweg",
                    "short_name": "Oberer Grundweg"
                },
                {
                    "key": "58483500001",
                    "name": "Oscar-Schopp-Weg",
                    "short_name": "Oscar-Schopp-Weg"
                },
                {
                    "key": "09110500001",
                    "name": "Österfeld, Gewann",
                    "short_name": "Österfeld, Gewann"
                },
                {
                    "key": "09110600001",
                    "name": "Österfeldstr.",
                    "short_name": "Österfeldstr."
                },
                {
                    "key": "08154900002",
                    "name": "Othellostr.",
                    "short_name": "Othellostr."
                },
                {
                    "key": "08233200003",
                    "name": "Paradiesplatz",
                    "short_name": "Paradiesplatz"
                },
                {
                    "key": "08233300011",
                    "name": "Paradiesstr.",
                    "short_name": "Paradiesstr."
                },
                {
                    "key": "08315400119",
                    "name": "Pestalozzistr.",
                    "short_name": "Pestalozzistr."
                },
                {
                    "key": "08371600004",
                    "name": "Pfarrhausstr.",
                    "short_name": "Pfarrhausstr."
                },
                {
                    "key": "08374600010",
                    "name": "Pfauenstr.",
                    "short_name": "Pfauenstr."
                },
                {
                    "key": "08642000007",
                    "name": "Raimundstr.",
                    "short_name": "Raimundstr."
                },
                {
                    "key": "08668100040",
                    "name": "Rathausplatz",
                    "short_name": "Rathausplatz"
                },
                {
                    "key": "08807200001",
                    "name": "Rexinger Weg",
                    "short_name": "Rexinger Weg"
                },
                {
                    "key": "08905500121",
                    "name": "Robert-Koch-Str.",
                    "short_name": "Robert-Koch-Str."
                },
                {
                    "key": "08906400001",
                    "name": "Robert-Leicht-Str.",
                    "short_name": "Robert-Leicht-Str."
                },
                {
                    "key": "08985800005",
                    "name": "Rosentalstr.",
                    "short_name": "Rosentalstr."
                },
                {
                    "key": "09024200008",
                    "name": "Rottweiler Str.",
                    "short_name": "Rottweiler Str."
                },
                {
                    "key": "09213500002",
                    "name": "Sauerweg",
                    "short_name": "Sauerweg"
                },
                {
                    "key": "09244700002",
                    "name": "Schaberweg",
                    "short_name": "Schaberweg"
                },
                {
                    "key": "09580200001",
                    "name": "Schädleweg",
                    "short_name": "Schädleweg"
                },
                {
                    "key": "31672300006",
                    "name": "Schafsgasse",
                    "short_name": "Schafsgasse"
                },
                {
                    "key": "09273700001",
                    "name": "Scharrstr.",
                    "short_name": "Scharrstr."
                },
                {
                    "key": "09318900001",
                    "name": "Schexweg",
                    "short_name": "Schexweg"
                },
                {
                    "key": "09329200001",
                    "name": "Schießmauerstr.",
                    "short_name": "Schießmauerstr."
                },
                {
                    "key": "09342200001",
                    "name": "Schillerpassage",
                    "short_name": "Schillerpassage"
                },
                {
                    "key": "09476100002",
                    "name": "Schopflocher Str.",
                    "short_name": "Schopflocher Str."
                },
                {
                    "key": "46463700001",
                    "name": "Schwabenplatz",
                    "short_name": "Schwabenplatz"
                },
                {
                    "key": "09553700002",
                    "name": "Schwarzäckerstr.",
                    "short_name": "Schwarzäckerstr."
                },
                {
                    "key": "09566100003",
                    "name": "Schwenninger Str.",
                    "short_name": "Schwenninger Str."
                },
                {
                    "key": "09631400005",
                    "name": "Seerosenstr.",
                    "short_name": "Seerosenstr."
                },
                {
                    "key": "09703900028",
                    "name": "Siedlerstr.",
                    "short_name": "Siedlerstr."
                },
                {
                    "key": "09730400001",
                    "name": "Sigmundtstr.",
                    "short_name": "Sigmundtstr."
                },
                {
                    "key": "32850700005",
                    "name": "Sommerfeldweg",
                    "short_name": "Sommerfeldweg"
                },
                {
                    "key": "09806900001",
                    "name": "Sormaweg",
                    "short_name": "Sormaweg"
                },
                {
                    "key": "10016100001",
                    "name": "Stellaweg",
                    "short_name": "Stellaweg"
                },
                {
                    "key": "10035100001",
                    "name": "Sternecker Str.",
                    "short_name": "Sternecker Str."
                },
                {
                    "key": "10059200010",
                    "name": "Stiller Winkel",
                    "short_name": "Stiller Winkel"
                },
                {
                    "key": "10087400001",
                    "name": "Stoßäckerstr.",
                    "short_name": "Stoßäckerstr."
                },
                {
                    "key": "10197000001",
                    "name": "Sulzauer Str.",
                    "short_name": "Sulzauer Str."
                },
                {
                    "key": "10217400003",
                    "name": "Syringenweg",
                    "short_name": "Syringenweg"
                },
                {
                    "key": "10390900002",
                    "name": "Tigerstr.",
                    "short_name": "Tigerstr."
                },
                {
                    "key": "10604000001",
                    "name": "Unterer Grund",
                    "short_name": "Unterer Grund"
                },
                {
                    "key": "10659200001",
                    "name": "Vaihinger Markt",
                    "short_name": "Vaihinger Markt"
                },
                {
                    "key": "10676300074",
                    "name": "Veilchenweg",
                    "short_name": "Veilchenweg"
                },
                {
                    "key": "10731100004",
                    "name": "Vischerstr.",
                    "short_name": "Vischerstr."
                },
                {
                    "key": "10762000001",
                    "name": "Vollmoellerstr.",
                    "short_name": "Vollmoellerstr."
                },
                {
                    "key": "10893000003",
                    "name": "Waldburgstr.",
                    "short_name": "Waldburgstr."
                },
                {
                    "key": "10938900001",
                    "name": "Walter-Heller-Str.",
                    "short_name": "Walter-Heller-Str."
                },
                {
                    "key": "10959100025",
                    "name": "Wankelstr.",
                    "short_name": "Wankelstr."
                },
                {
                    "key": "11020000001",
                    "name": "Wegländerstr.",
                    "short_name": "Wegländerstr."
                },
                {
                    "key": "11403400001",
                    "name": "Wolfmahdenstr.",
                    "short_name": "Wolfmahdenstr."
                },
                {
                    "key": "10861600049",
                    "name": "Wörthstr.",
                    "short_name": "Wörthstr."
                },
                {
                    "key": "11519000010",
                    "name": "Zilleweg",
                    "short_name": "Zilleweg"
                },
                {
                    "key": "11550100004",
                    "name": "Zu den Tannen",
                    "short_name": "Zu den Tannen"
                },
                {
                    "key": "11608800001",
                    "name": "Zum Lauchwald",
                    "short_name": "Zum Lauchwald"
                },
                {
                    "key": "11716200003",
                    "name": "Zürnstr.",
                    "short_name": "Zürnstr."
                }
            ],
            "postboxes": []
        }
    ]
}
 

Request   

GET api/utils/zipCodes/{zipCode}/zipAreas

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

zipCode   string  optional    

The zip code to fetch the associated zip area information for. Example: 70563

GET suggested zip areas by search query

This endpoint allows you to fetch suggestions for zip areas based on a provided zip code and/or city name. It is useful for auto-completing address forms and validating user input.

The best way to use this endpoint is to provide autocompletion for a given zip code/city input and after selection of a specific zip area, use the api/cities/{city_key}/zipAreas/{zipArea_zip}/streets endpoint to fetch the streets for the selected zip area.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'http://tekoa.test/api/utils/suggestions/zipAreas';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'query' => '70563 Stuttgart',
            'mode' => 'streets',
            'limit' => '10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "http://tekoa.test/api/utils/suggestions/zipAreas?query=70563+Stuttgart&mode=streets&limit=10" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "http://tekoa.test/api/utils/suggestions/zipAreas"
);

const params = {
    "query": "70563 Stuttgart",
    "mode": "streets",
    "limit": "10",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'http://tekoa.test/api/utils/suggestions/zipAreas'
params = {
  'query': '70563 Stuttgart',
  'mode': 'streets',
  'limit': '10',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "data": [
        {
            "zip": "70563",
            "zip_de": 70563,
            "postbox_numbers_from": null,
            "postbox_numbers_to": null,
            "city": {
                "key": "58727000",
                "name": "Stuttgart",
                "additional": null,
                "ags": "08111000",
                "short_name": "Stuttgart"
            }
        }
    ]
}
 

Request   

GET api/utils/suggestions/zipAreas

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

query   string     

The search query for zip code and/or city name. Must not be greater than 255 characters. Example: 70563 Stuttgart

mode   string  optional    

Optional mode to filter results by zip areas that have either streets or postboxes. Allowed values are 'streets' and 'postboxes'. Example: streets

limit   integer  optional    

Optional limit for the number of zip areas returned. Must be at least 1. Must not be greater than 100. Example: 10

GET check complete address

This endpoint can determine if a given manually entered address is a valid street or postbox address based on the provided zip code, city name, street name, and house/postbox number.

If valid it will return the corresponding address details with their respective keys. These keys should be stored to make further requests for the same address more efficient, as they can be used to directly fetch the address without needing to match the input again.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'http://tekoa.test/api/utils/suggestions/addresses';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'city' => 'Stuttgart',
            'zip' => '70563',
            'street' => 'Meitnerstraße',
            'mode' => 'streets',
            'number' => '10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl --request GET \
    --get "http://tekoa.test/api/utils/suggestions/addresses" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"city\": \"Stuttgart\",
    \"zip\": \"70563\",
    \"street\": \"Meitnerstraße\",
    \"mode\": \"streets\",
    \"number\": \"10\"
}"
const url = new URL(
    "http://tekoa.test/api/utils/suggestions/addresses"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "city": "Stuttgart",
    "zip": "70563",
    "street": "Meitnerstraße",
    "mode": "streets",
    "number": "10"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'http://tekoa.test/api/utils/suggestions/addresses'
payload = {
    "city": "Stuttgart",
    "zip": "70563",
    "street": "Meitnerstraße",
    "mode": "streets",
    "number": "10"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "data": {
        "key": "07439100004",
        "name": "Meitnerstr.",
        "short_name": "Meitnerstr.",
        "city": {
            "key": "58727000",
            "name": "Stuttgart",
            "additional": null,
            "ags": "08111000",
            "short_name": "Stuttgart"
        },
        "zip": {
            "zip": "70563",
            "zip_de": 70563,
            "postbox_numbers_from": null,
            "postbox_numbers_to": null
        },
        "number": "10"
    }
}
 

Request   

GET api/utils/suggestions/addresses

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

city   string  optional    

A city name to check against. Must be at least 2 characters. Must not be greater than 255 characters. Example: Stuttgart

zip   string  optional    

A zip code to check against. Must be at least 2 characters. Must not be greater than 255 characters. Example: 70563

street   string  optional    

A street name to check against. Must be at least 2 characters. Must not be greater than 255 characters. Example: Meitnerstraße

mode   string  optional    

An optional mode to specify whether the address is a street or postbox address. Allowed values are 'streets' and 'postboxes'. Defaults to streets. Example: streets

number   string  optional    

A house number or postbox number to check against. Must not be greater than 255 characters. Example: 10