Skip to content

Instantly share code, notes, and snippets.

@noahbroyles
Last active December 8, 2021 18:39
Show Gist options
  • Save noahbroyles/4bf0135b0272a9bca049d66895c191ce to your computer and use it in GitHub Desktop.
Save noahbroyles/4bf0135b0272a9bca049d66895c191ce to your computer and use it in GitHub Desktop.
Track FedEx Package with Python - No Account Required!

This uses the same API as FedEx's website does to track packages by tracking number. There is no account number, password, or API key required to use this API.

Here is an example of how to track a package:

from fedex import track_package

track_package(523664444388)
{'delivered': True, 'deliveryDate': '9/07/2021', 'deliveryTime': '12:35 pm', 'actualDeliveryDate': '2021-09-07T12:35:43-05:00', 'city': 'LEBANON', 'state': 'MO'}
import json
import requests
def track_package(tracking_number):
payload = {
"action": "trackpackages",
"data": json.dumps({
"TrackPackagesRequest": {
"appDeviceType": "DESKTOP", "appType": "WTRK", "processingParameters": {}, "uniqueKey": "", "supportCurrentLocation": True, "supportHTML": True,
"trackingInfoList": [{"trackNumberInfo": {"trackingNumber": str(tracking_number), "trackingQualifier": "", "trackingCarrier": ""}}]}
}),
"format": "json",
"locale": "en_US",
"version": "1"
}
req = requests.post('https://www.fedex.com/trackingCal/track', data=payload, headers={"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"})
tracking_info = req.json()
response = {
"delivered": tracking_info["TrackPackagesResponse"]["packageList"][0]["keyStatus"] == "Delivered",
"deliveryDate": tracking_info["TrackPackagesResponse"]["packageList"][0]["displayActDeliveryDt"],
"deliveryTime": tracking_info["TrackPackagesResponse"]["packageList"][0]["displayActDeliveryTm"],
"actualDeliveryDate": tracking_info["TrackPackagesResponse"]["packageList"][0]["actDeliveryDt"],
"city": tracking_info["TrackPackagesResponse"]["packageList"][0]["recipientCity"],
"state": tracking_info["TrackPackagesResponse"]["packageList"][0]["recipientStateCD"]
}
return response
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment