Com APItracktrace.dpd.com.pl ↗
Track DPD Poland parcels by parcel number, reference, awizo, or order number. Returns event history, timestamps, depot info, and delivery status.
What is the Com API?
The DPD Poland Tracking API exposes 1 endpoint — track_parcel — that queries the tracktrace.dpd.com.pl system and returns up to 5 response fields including a full event history array, found status, and descriptive messages. It accepts four distinct identifier types: standard parcel numbers (13–14 digits), reference numbers, awizo/drop-off numbers, and order numbers, making it usable across different points in a shipment workflow.
curl -X GET 'https://api.parse.bot/scraper/8663505f-c7eb-44f0-a86b-4cad521ae9c2/track_parcel?search_type=1&parcel_number=01234567890123' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace tracktrace-dpd-com-pl-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: DPD Poland parcel tracking — look up a shipment and inspect events."""
from parse_apis.tracktrace_dpd_com_pl_api import DpdPoland, SearchType, InputFormatInvalid
client = DpdPoland()
# Track a parcel by its DPD parcel number (default search type).
try:
parcel = client.parcels.get(parcel_number="01234567890123")
except InputFormatInvalid as e:
print("Invalid input:", e.message)
else:
print("Found:", parcel.found)
print("Number:", parcel.parcel_number)
if parcel.found:
# Walk the tracking event history.
for event in parcel.events:
print(event.date, event.time, event.description)
else:
print("Message:", parcel.message)
# Look up by reference number using a different search type.
ref_parcel = client.parcels.get(parcel_number="REF-2024-001", search_type=SearchType.REFERENCE_NUMBER)
print("Reference lookup found:", ref_parcel.found)
print("exercised: parcels.get with default and explicit search_type")
Track a parcel on DPD Poland's tracking system. Accepts a parcel number (or reference/awizo/order number depending on search_type) and returns the tracking status and event history. When the parcel is not found in the system, returns found=false with a descriptive message. A single upstream request is made per call; no pagination.
| Param | Type | Description |
|---|---|---|
| search_type | string | Type of number being searched. Valid values: "1" = parcel number, "2" = reference number, "3" = awizo/drop-off number, "4" = order number. Omitted defaults to parcel number lookup. |
| parcel_numberrequired | string | The tracking identifier to look up. Depending on search_type, this can be a DPD parcel number (typically 13-14 digits), a client reference number, an awizo/drop-off number, or an order number. |
{
"type": "object",
"fields": {
"found": "boolean indicating whether tracking data was found",
"events": "array of tracking event objects with date, time, description, and depot fields when available",
"message": "descriptive message when parcel is not found (null when found)",
"search_type": "the search type code used",
"parcel_number": "the tracking number that was searched"
},
"sample": {
"data": {
"found": false,
"events": [],
"message": "There is no trace for this parcel (01234567890123)",
"search_type": "1",
"parcel_number": "01234567890123"
},
"status": "success"
}
}About the Com API
What the API Returns
The track_parcel endpoint returns a structured object with a found boolean, a parcel_number echo, a search_type code, an events array, and a message string. When found is true, the events array contains one object per tracking milestone, each carrying a date, time, description, and depot field. When no record is found, found is false, events is empty, and message provides a plain-text explanation from DPD's system.
Input Parameters
The required input is parcel_number — the identifier string you want to look up. The optional search_type parameter controls how that identifier is interpreted. Omitting search_type defaults to a standard parcel number lookup. Setting it to the appropriate type lets you query by reference number (useful when you assigned your own reference at booking), awizo or drop-off number (used when a courier leaves a collection notice), or order number. This flexibility means integrations can query using whatever identifier is available in their own system.
Behavior and Edge Cases
If DPD Poland has no record for the supplied identifier, the API returns found: false with a non-null message rather than an error status. This means callers should check the found field before iterating over events. Event history depth depends on how far along the shipment is; newly created labels may return found: true with an empty or minimal events array. The depot field in each event identifies the DPD depot or facility associated with that scan, which can be useful for pinpointing where a delay occurred.
The Com API is a managed, monitored endpoint for tracktrace.dpd.com.pl — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when tracktrace.dpd.com.pl changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official tracktrace.dpd.com.pl API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Poll
track_parcelon a schedule to detect status changes and trigger customer notification emails when thedescriptionfield updates. - Build an order management dashboard that displays the latest
eventsentry per shipment alongside the eventdateandtime. - Identify stuck shipments by checking whether the most recent event
dateis older than a configurable threshold. - Look up parcels using a seller's own reference number via
search_typeto reconcile internal order IDs with DPD tracking data. - Handle awizo (missed-delivery notice) numbers to let customers self-serve rescheduling or drop-off lookup by passing the awizo code.
- Aggregate depot-level delay patterns by grouping events where
depotappears repeatedly without a forward-progressdescription.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does DPD Poland offer an official developer API for tracking?+
What does the `events` array actually contain, and is there a way to get only the latest status?+
events has four fields: date (e.g. '2024-05-10'), time (e.g. '14:32'), description (a plain-text status like 'Parcel delivered'), and depot (the DPD facility name). The array is ordered chronologically as returned by DPD's system. The API does not expose a separate 'latest status only' field, so to get the current status you read the last element of the events array.Does the API support tracking parcels from other DPD country networks, such as DPD Germany or DPD UK?+
Can I track multiple parcels in a single API call?+
track_parcel endpoint accepts one parcel_number per request. Bulk lookup is not currently supported. You can fork this API on Parse and revise it to add a batch endpoint that iterates over a list of identifiers.What happens if a parcel number exists in DPD's system but has no scan events yet?+
found: true with an empty events array. This typically occurs when a shipping label has been generated but the parcel has not yet been scanned into the DPD network. The message field will be null in this case, so found is the reliable signal for whether DPD recognises the identifier.