dhl.com APIdhl.com ↗
Track DHL shipments, find service points, get address suggestions, and retrieve service alerts via a single REST API. 8 endpoints, real tracking event data.
curl -X GET 'https://api.parse.bot/scraper/9d062457-066e-437e-ad7d-4979ace42d65/track_shipment?tracking_number=1234567890' \ -H 'X-API-Key: $PARSE_API_KEY'
Track a DHL shipment by tracking number. Returns shipment data including status, events, and details when the shipment is found, or a not-found indicator when the tracking number has no associated shipment.
| Param | Type | Description |
|---|---|---|
| tracking_numberrequired | string | DHL tracking number (alphanumeric, typically 10-34 characters) |
{
"type": "object",
"fields": {
"detail": "string, description when shipment is not found",
"status": "string, current shipment status or 'Not Found'",
"shipments": "array of shipment objects with status, events, and delivery info (present when shipment is found)",
"tracking_number": "string, the queried tracking number"
},
"sample": {
"data": {
"detail": "No shipment with given tracking number found.",
"status": "Not Found",
"tracking_number": "JJD014600007380167713"
},
"status": "success"
}
}About the dhl.com API
This API exposes 8 endpoints covering DHL shipment tracking, service point discovery, address geocoding, and operational alerts. The track_shipment endpoint returns a full shipment object including status, a chronological event list, and delivery details. Separate endpoints let you isolate just the current status, the event history, or the estimated delivery timestamp — useful when you only need a single field rather than the full payload.
Shipment Tracking
The core tracking surface is split across four endpoints. track_shipment returns the complete shipment object when found — including a shipments array with status, events, and delivery info — or a detail string and status: 'Not Found' when the tracking number has no associated record. get_shipment_status trims the response to status, location (city of last known event), and an ISO timestamp. get_shipment_events returns only the ordered events array, each item containing timestamp, location, and description. get_estimated_delivery returns a single ISO-formatted estimated_delivery string, or null when no estimate is available. All four endpoints accept a tracking_number string, typically 10–34 alphanumeric characters.
Service Point Discovery and Address Handling
find_service_point accepts a freeform address string and an optional country_code (ISO 3166-1 alpha-2). It returns up to 10 nearby DHL Express drop-off/pickup locations, each with name, address, geoLocation, distance, openingHours, and capabilities fields, plus a searchLocation object showing the resolved coordinates and geocoded suggestion. If you need to validate or normalize an address first, get_address_suggestions takes a query string and optional country_code and returns candidate addresses with label, value, placeId, latitude, longitude, providerId, and countryCode fields. The value field is formatted for direct use as input to find_service_point.
Countries and Service Alerts
list_countries requires no inputs and returns every country where DHL shipping services are available. Each record includes countryCode, a postcode boolean, postcodeFormats (an array of valid format patterns), and recommendedPostcodeFormat when postcodes apply. get_service_alerts also requires no inputs and returns an alerts array of current disruption notices and operational information, each with date, title, and description.
- Display live parcel status and last-known city in an e-commerce order management dashboard using
get_shipment_status. - Send push notifications when a new event appears in the
eventsarray returned byget_shipment_events. - Surface estimated delivery dates in a checkout confirmation flow using
get_estimated_delivery. - Build a store-locator widget that finds the nearest DHL drop-off point from a user-entered postcode via
find_service_point. - Autocomplete and validate shipping addresses before checkout using
get_address_suggestions. - Populate a country selector filtered to DHL-supported markets using
list_countries, respecting validpostcodeFormats. - Monitor DHL service disruptions and display relevant alerts to customers using
get_service_alerts.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does DHL have an official developer API?+
What does `track_shipment` return differently from `get_shipment_status`?+
track_shipment returns the full shipments array with complete event history and delivery details, plus a detail string when the number is not found. get_shipment_status returns only three fields — status, location, and timestamp — covering just the most recent state. Use track_shipment when you need the full record; use get_shipment_status for lightweight polling.Does the API support tracking shipments from DHL eCommerce or DHL Parcel (non-Express services)?+
Can I retrieve a full shipment history for multiple tracking numbers in one call?+
tracking_number per request. Batch tracking across multiple numbers in one call is not currently supported. You can fork the API on Parse and revise it to add a batch endpoint that fans out calls and aggregates the results.What happens when `get_estimated_delivery` returns null?+
estimated_delivery means DHL has not published an estimated or actual delivery timestamp for that shipment yet. This is common for shipments that were just created, are held in customs, or where the service type does not include a delivery commitment.