Search German streets, cities, and postal codes using two different methods:
Filter by one field at a time using simple parameters.
{
"success": true,
"data": {
"results": [
{
"street_name": "Hauptstraße",
"city_name": "Berlin",
"zip_code": "10115",
"regional_key": "11000000",
"borough_name": "Mitte"
}
],
"count": 1,
"total": 1,
"limit": 100,
"offset": 0,
"has_more": false
}
}{
"success": true,
"data": {
"results": [
{
"street_name": "Hauptstraße",
"city_name": "München",
"zip_code": "80331",
"regional_key": "09162000",
"borough_name": null
}
],
"count": 1,
"total": 1,
"limit": 100,
"offset": 0,
"has_more": false
}
}The search value (max 255 characters)
{
"success": true,
"data": {
"results": [
{
"street_name": "Unter den Linden",
"city_name": "Berlin",
"zip_code": "10115",
"regional_key": "11000000",
"borough_name": "Mitte"
}
],
"count": 1,
"total": 1,
"limit": 100,
"offset": 0,
"has_more": false
}
}Number of results to return
{
"success": true,
"data": {
"results": [
{
"street_name": "Hauptstraße",
"city_name": "Hamburg",
"zip_code": "20095",
"regional_key": "02000000",
"borough_name": null
},
{
"street_name": "Bahnhofstraße",
"city_name": "Köln",
"zip_code": "50667",
"regional_key": "05315000",
"borough_name": null
}
],
"count": 2,
"total": 15000,
"limit": 2,
"offset": 0,
"has_more": true
}
}Comma-separated list of fields to return
{
"success": true,
"data": {
"results": [
{
"street_name": "Berliner Straße",
"city_name": "Frankfurt"
}
],
"count": 1,
"total": 1,
"limit": 100,
"offset": 0,
"has_more": false
}
}Number of results to skip (for pagination)
{
"success": true,
"data": {
"results": [
{
"street_name": "Kirchstraße",
"city_name": "Dresden",
"zip_code": "01067",
"regional_key": "14612000",
"borough_name": "Altstadt"
}
],
"count": 1,
"total": 15000,
"limit": 1,
"offset": 1,
"has_more": true
}
}Filter by multiple fields with AND/OR logic using JSON filters.
JSON array of filter objects. Each filter must have: field, operator, value
{
"success": true,
"data": {
"results": [
{
"street_name": "Mainzer Straße",
"city_name": "Frankfurt",
"zip_code": "60311",
"regional_key": "06412000",
"borough_name": null
}
],
"count": 1,
"total": 1,
"limit": 100,
"offset": 0,
"has_more": false
}
}How to combine multiple filter conditions
{
"success": true,
"data": {
"results": [
{
"street_name": "Hauptstraße",
"city_name": "Berlin",
"zip_code": "10115",
"regional_key": "11000000",
"borough_name": "Mitte"
}
],
"count": 1,
"total": 1,
"limit": 100,
"offset": 0,
"has_more": false
}
}{
"success": true,
"data": {
"results": [
{
"street_name": "Unter den Linden",
"city_name": "Berlin",
"zip_code": "10115",
"regional_key": "11000000",
"borough_name": "Mitte"
},
{
"street_name": "Marienplatz",
"city_name": "München",
"zip_code": "80331",
"regional_key": "09162000",
"borough_name": null
}
],
"count": 2,
"total": 2,
"limit": 100,
"offset": 0,
"has_more": false
}
}{
"success": true,
"data": {
"results": [
{
"street_name": "Unter den Linden",
"city_name": "Berlin",
"zip_code": "10115"
},
{
"street_name": "Hauptstraße",
"city_name": "Hamburg",
"zip_code": "20095"
}
],
"count": 2,
"total": 2,
"limit": 100,
"offset": 0,
"has_more": false
}
}Both methods use the same fields and operators:
{
"success": false,
"error": "value_required"
}{
"success": false,
"error": "Invalid field. Allowed fields: street_name, city_name, zip_code, regional_key, borough_name"
}{
"success": false,
"error": "rate_limit_exceeded"
}{
"success": false,
"error": "Invalid JSON in filters parameter"
}{
"success": false,
"error": "Invalid logic parameter. Allowed values: AND, OR"
}{
"success": false,
"error": "Empty value in filter at index 0"
}Complete code examples for integrating the German Streets API in your applications:
Using axios for HTTP requests:
const axios = require('axios');
async function searchStreets(searchTerm) {
try {
const response = await axios.get('https://germanstreets.grolmes.com/api/search', {
params: {
field: 'street_name',
operator: 'contains',
value: searchTerm,
limit: 10
}
});
return response.data.data.results;
} catch (error) {
console.error('Search failed:', error);
}
}
// Usage
searchStreets('Haupt').then(results => console.log(results));
Using the requests library:
import requests
def search_streets(search_term, limit=10):
url = "https://germanstreets.grolmes.com/api/search"
params = {
'field': 'street_name',
'operator': 'contains',
'value': search_term,
'limit': limit
}
response = requests.get(url, params=params)
if response.status_code == 200:
return response.json()['data']['results']
else:
raise Exception(f"API request failed: {response.status_code}")
# Usage
results = search_streets('Haupt')
print(results)
Using file_get_contents (or curl for more advanced usage):
<?php
function searchStreets($searchTerm, $limit = 10) {
$url = 'https://germanstreets.grolmes.com/api/search';
$params = http_build_query([
'field' => 'street_name',
'operator' => 'contains',
'value' => $searchTerm,
'limit' => $limit
]);
$response = file_get_contents($url . '?' . $params);
$data = json_decode($response, true);
return $data['data']['results'] ?? [];
}
// Usage
$results = searchStreets('Haupt');
print_r($results);
?>
Command line examples for testing: