Zum Hauptinhalt springen

Paketshops

Suchen Sie nach DPD-Abholpunkten (Paketshops, Schliessfächer, Servicepunkte) nach Adresse oder GPS-Koordinaten.

BasispfadAuthentifizierung
/api/v1/parcel-shopBearer JWT-Token erforderlich

Übersicht der Endpunkte

MethodeEndpunktBeschreibung
GET/api/v1/parcel-shop/{parcelShopId}Bestimmten Paketshop nach ID abrufen
POST/api/v1/parcel-shop/addressPaketshops nach Adresse suchen
POST/api/v1/parcel-shop/coordinatesPaketshops 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 null zurückgegeben. Im Beispiel fehlen beim Freitag openAfternoon und closeAfternoon, weil dieser Tag nur einen Öffnungsblock hat. Verlassen Sie sich nicht darauf, dass ein Schlüssel vorhanden ist.
  • Datumsangaben in holidays verwenden dd/MM/yyyy, nicht ISO 8601. Der übrige Teil der API verwendet ISO-Datumsangaben.
  • parcelShopId ist die numerische Kodierung von id; beide bezeichnen denselben Shop.
  • weekDay und services[].description werden gemäss lang lokalisiert.

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:

FeldTypPflichtfeldBeschreibungStandard
countryString (2)JaISO-Ländercode
zipCodeStringJaPostleitzahl
cityStringNeinStadtname
streetStringNeinStrassenname
destCountryCodeStringNeinZielland für Service-Filterung
weightStringNeinPaketgewicht in kg
servicesStringNeinKommagetrennte Servicecodes
typeStringNeinFilter für Paketshop-Typ
limitIntegerNeinMax. Ergebnisse25
availabilityDateStringNeinVerfügbarkeit an Datum prüfen (yyyy-MM-dd)
hideClosedBooleanNeinAktuell geschlossene Shops ausblendenfalse
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:

FeldTypPflichtfeldBeschreibung
latitudeDoubleJaGPS-Breitengrad (−90 bis 90)
longitudeDoubleJaGPS-Längengrad (−180 bis 180)
destCountryCodeStringNeinZielland
limitIntegerNeinMax. Ergebnisse (Standard: 25)
hideClosedBooleanNeinGeschlossene Shops ausblenden (Standard: false)
availabilityDateStringNeinVerfü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.

TypBeschreibung
100DPD Pickup Point
200DPD Locker
300Partnershop (z.B. Poststelle)
400Service 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());
}