DPD Germany Tracking API & MCP
Query live DPD (dpd) parcel status and progress in a single synchronous GET request or MCP tool call. It reads DPD Germany's public tracking page, which shows a parcel's progress without the recipient's postcode. For DPD UK numbers use the dpduk carrier.
Overview & Quick Facts
| Property | Value |
|---|---|
Carrier slug (?carrier=) | dpd |
| Brand aliases | DPD, DPD Germany, DPD Paket, DPD Group, myDPD |
| Category | Regional parcels (Germany and DPD Group continental) |
| Single-package REST endpoint | GET https://api.lastscanned.com/v1/track/{trackingNumber}?carrier=dpd |
| Batch REST endpoint | GET https://api.lastscanned.com/v1/track?numbers=...&carrier=dpd |
MCP server (https://mcp.lastscanned.com) | track_package, track_packages, list_carriers |
| Authentication & pricing | Authorization: Bearer lsk_live_... · 1 free keyless lookup/day per IP |
Tracking Number Formats & Auto-Detection
| Pass | Rule / Regex | Check Digit | Examples |
|---|---|---|---|
Pass 1 (matches) | none | none | none |
Pass 2 (mayMatch) | /^0\d{13}$/ | none | 01234567890123 |
Other carriers also issue 14-digit numbers, so DPD is only a fallback: pass ?carrier=dpd when you know the parcel is DPD's.
Synchronous GET Request & Normalized JSON Response
curl -s "https://api.lastscanned.com/v1/track/01234567890123?carrier=dpd" \
-H "Authorization: Bearer $LASTSCANNED_API_KEY"{
"carrier": "dpd",
"trackingNumber": "01234567890123",
"status": "delivered",
"statusDescription": "Collected from the Pickup parcelshop by the recipient",
"service": null,
"deliveredAt": null,
"deliveredAtLocal": "2026-10-07",
"signedBy": null,
"destination": null,
"message": null,
"events": [
{
"timestamp": null,
"localTime": "2026-10-07",
"status": "delivered",
"description": "Collected from the Pickup parcelshop by the recipient",
"location": null,
"code": null
},
{
"timestamp": null,
"localTime": "2026-10-06",
"status": "exception",
"description": "Parcel dropped off at a Pickup parcelshop",
"location": null,
"code": null
},
{
"timestamp": null,
"localTime": "2026-10-01",
"status": "in_transit",
"description": "Parcel in transit",
"location": null,
"code": null
}
]
}Notes
- What the guest view leaves out: DPD shows the postcode-free view as up to five stages (data received by DPD, in transit, at the depot, out for delivery, delivered), each with a day only: no time of day, no depot or city, no scan list, no delivery time window or driver details, and no signature. Entering the recipient's postcode on DPD's page unlocks that fuller view, which this carrier does not use. Events therefore have
localTimeas a date (2026-10-07),timestamp: nullandlocation: null. - Year: the page prints days as
07.10.with no year. The year is taken from the page's headline status (which carries a full date) or, failing that, is the latest year that does not put the newest stage in the future. A parcel more than a year old may therefore show a wrong year on its earliest stages. - Language: DPD's page is German-only. The five standard stage labels are translated to English; any other wording is passed through in German.
- Pickup parcelshops: a parcel waiting in a shop is reported as
exception(it needs action) until it is collected. - Returns: when DPD shows "Retoure an Versender" the status is
returned. - Other DPD countries: numbers from DPD Belgium, the Netherlands and other partner networks are not shown on this page. The result has
status: "unknown", no events, and amessagenaming the country's DPD site and its tracking link. - Not found: a number DPD's page does not know returns
404 not_found. - Source: plain requests to
tracking.dpd.de, which redirects tomy.dpd.de. The myDPD app'sdpdgroup.comguest API is not used because it sits behind a Cloudflare challenge.
Related Resources
- Regex & check digits: Tracking number formats & auto-detection
DPD Poland Tracking API & MCP
Track DPD Poland (DPD Polska) parcels via synchronous REST GET or MCP. Normalized JSON status and scan history, no postcode or carrier credentials required.
DPD Portugal Tracking API & MCP
Track DPD Portugal parcels (14-digit references) via synchronous REST GET or MCP. Normalized JSON status and scan history, no carrier credentials or postcode required.