Paketshops
Suchen Sie nach DPD-Abholpunkten (Paketshops, Schliessfächer, Servicepunkte) nach Adresse oder GPS-Koordinaten.
| Basispfad | Authentifizierung |
|---|---|
/api/v1/parcel-shop | Bearer JWT-Token erforderlich |
Übersicht der Endpunkte
| Methode | Endpunkt | Beschreibung |
|---|---|---|
| GET | /api/v1/parcel-shop/{parcelShopId} | Bestimmten Paketshop nach ID abrufen |
| POST | /api/v1/parcel-shop/address | Paketshops nach Adresse suchen |
| POST | /api/v1/parcel-shop/coordinates | Paketshops nach GPS-Koordinaten suchen |
GET /api/v1/parcel-shop/{parcelShopId}
Detailinformationen für einen bestimmten Paketshop abrufen.
Pfadparameter: parcelShopId – z.B. FR64548. Die numerische Form,
die in Antworten als parcelShopId zurückgegeben wird (z.B. 70825452535256), wird ebenfalls akzeptiert.
Abfrageparameter: lang (optional) – en, de, fr oder it. Steuert weekDay und
services[].description. Fällt auf Accept-Language und dann auf die Standardsprache der Business
Unit zurück.
curl -X GET "https://label-print-shipments.dpd.ch/api/v1/parcel-shop/FR64548?lang=de" \
-H "Authorization: Bearer <jwt_token>"
Antwort 200 OK (Öffnungszeiten auf zwei Tage gekürzt):
{
"id": "FR64548",
"parcelShopId": 70825452535256,
"name": "Chris’music",
"order": 1,
"distance": 0,
"type": 100,
"countryNum": "250",
"address": {
"countryCode": "FR",
"zipCode": "71500",
"city": "LOUHANS",
"street": "RUE DES BORDES",
"street2": "",
"street3": "",
"houseNumber": "57",
"language": "FR"
},
"locationHint": "",
"mapUrl": "",
"available": "partial",
"latitude": 46.624802,
"longitude": 5.224876,
"openingHours": [
{
"weekDay": "Montag",
"openMorning": "09:30",
"closeMorning": "12:00",
"openAfternoon": "14:00",
"closeAfternoon": "19:00"
},
{
"weekDay": "Freitag",
"openMorning": "09:30",
"closeMorning": "12:00"
}
],
"holidays": [
{ "start": "15/08/2026", "end": "29/08/2026" }
],
"services": [
{ "code": "100", "available": true, "description": "Abholung durch Empfänger" },
{ "code": "200", "available": true, "description": "Annahme Pakete online bezahlt ist möglich" },
{ "code": "991", "available": true, "description": "Retourenannahme ist möglich" }
]
}
Hinweise zur Struktur der Antwort:
- Felder ohne Wert werden weggelassen und nie als
nullzurückgegeben. Im Beispiel fehlen beim FreitagopenAfternoonundcloseAfternoon, weil dieser Tag nur einen Öffnungsblock hat. Verlassen Sie sich nicht darauf, dass ein Schlüssel vorhanden ist. - Datumsangaben in
holidaysverwendendd/MM/yyyy, nicht ISO 8601. Der übrige Teil der API verwendet ISO-Datumsangaben. parcelShopIdist die numerische Kodierung vonid; beide bezeichnen denselben Shop.weekDayundservices[].descriptionwerden gemässlanglokalisiert.
Statuscodes: 200 OK | 401 Unauthorized | 404 Not Found
POST /api/v1/parcel-shop/address
Suche nach Paketshops in der Nähe einer Adresse. Ergebnisse sortiert nach Entfernung (nächster zuerst).
Request body:
| Feld | Typ | Pflichtfeld | Beschreibung | Standard |
|---|---|---|---|---|
country | String (2) | Ja | ISO-Ländercode | — |
zipCode | String | Ja | Postleitzahl | — |
city | String | Nein | Stadtname | — |
street | String | Nein | Strassenname | — |
destCountryCode | String | Nein | Zielland für Service-Filterung | — |
weight | String | Nein | Paketgewicht in kg | — |
services | String | Nein | Kommagetrennte Servicecodes | — |
type | String | Nein | Filter für Paketshop-Typ | — |
limit | Integer | Nein | Max. Ergebnisse | 25 |
availabilityDate | String | Nein | Verfügbarkeit an Datum prüfen (yyyy-MM-dd) | — |
hideClosed | Boolean | Nein | Aktuell geschlossene Shops ausblenden | false |
curl -X POST "https://label-print-shipments.dpd.ch/api/v1/parcel-shop/address?lang=de_CH" \
-H "Authorization: Bearer <jwt_token>" \
-H "Content-Type: application/json" \
-d '{
"country": "CH",
"zipCode": "8000",
"city": "Zürich",
"limit": 10
}'
Statuscodes: 200 OK (kann leere Liste zurückgeben) | 400 Bad Request | 401 Unauthorized
POST /api/v1/parcel-shop/coordinates
Suche nach Paketshops in der Nähe von GPS-Koordinaten. Gleiche Filterung und gleiches Antwortformat wie die Adresssuche.
Request body:
| Feld | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
latitude | Double | Ja | GPS-Breitengrad (−90 bis 90) |
longitude | Double | Ja | GPS-Längengrad (−180 bis 180) |
destCountryCode | String | Nein | Zielland |
limit | Integer | Nein | Max. Ergebnisse (Standard: 25) |
hideClosed | Boolean | Nein | Geschlossene Shops ausblenden (Standard: false) |
availabilityDate | String | Nein | Verfügbarkeit an Datum prüfen |
curl -X POST "https://label-print-shipments.dpd.ch/api/v1/parcel-shop/coordinates" \
-H "Authorization: Bearer <jwt_token>" \
-H "Content-Type: application/json" \
-d '{
"latitude": 47.3769,
"longitude": 8.5417,
"limit": 10,
"hideClosed": true
}'
Statuscodes: 200 OK | 400 Bad Request | 401 Unauthorized
Paketshop-Typen
type wird nicht von dieser API definiert. Der Wert wird unverändert vom vorgelagerten DPD-PUDO-Dienst
durchgereicht — sowohl in der Antwort als auch im optionalen Anfragefilter type, sodass beide denselben
Wertebereich verwenden.
| Typ | Beschreibung |
|---|---|
100 | DPD Pickup Point |
200 | DPD Locker |
300 | Partnershop (z.B. Poststelle) |
400 | Service Point |
Betrachten Sie die Liste als unvollständig und nicht als abgeschlossen: Diese Werte gehören dem vorgelagerten Dienst, weisen Sie daher einen unbekannten Wert nicht zurück.
type ist ein anderes Feld als services[].code, auch wenn beide dreistellige Zahlen verwenden. Ein
Shop mit "type": 100 kann jede Kombination von Servicecodes führen.
Verwenden Sie zum Filtern nach Shop-Typ einen Wert, den Sie in einer Antwort für dieselbe Region gesehen haben, und keinen geratenen.
Code-Beispiele
Paketshop-Auswahl in einem Sendungsformular:
async function searchParcelShops(zipCode, city) {
const response = await fetch(
'https://label-print-shipments.dpd.ch/api/v1/parcel-shop/address',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ country: 'CH', zipCode, city, limit: 10 })
}
);
return response.json();
}
Kartenbasierte Suche:
function findNearby(lat, lng) {
return fetch('https://label-print-shipments.dpd.ch/api/v1/parcel-shop/coordinates', {
method: 'POST',
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ latitude: lat, longitude: lng, limit: 20, hideClosed: true })
}).then(r => r.json());
}