diff --git a/docs/en/README.md b/docs/en/README.md
index 49beefd38..ac717b01b 100644
--- a/docs/en/README.md
+++ b/docs/en/README.md
@@ -312,6 +312,12 @@ GitHub provides some official RSS feeds:
+## Parcel Tracking
+
+### Hermes
+
+
+
## Uncategorized
### EZTV
@@ -366,4 +372,4 @@ Provides a better reading experience (full text articles) over the official one.
### 99% Invisible
-
+
diff --git a/router.js b/router.js
index f846b036a..fc668799a 100644
--- a/router.js
+++ b/router.js
@@ -654,4 +654,7 @@ router.get('/laosiji/feed', require('./routes/laosiji/feed'));
// 99% Invisible
router.get('/99percentinvisible/transcript', require('./routes/99percentinvisible/transcript'));
+// Hermes UK
+router.get('/parcel/hermesuk/:tracking', require('./routes/parcel/hermesuk'));
+
module.exports = router;
diff --git a/routes/parcel/hermesuk.js b/routes/parcel/hermesuk.js
new file mode 100644
index 000000000..df54a3a25
--- /dev/null
+++ b/routes/parcel/hermesuk.js
@@ -0,0 +1,50 @@
+const axios = require('../../utils/axios');
+const dayjs = require('dayjs');
+
+module.exports = async (ctx) => {
+ const tracking = ctx.params.tracking;
+
+ let single;
+
+ const cache = await ctx.cache.get(tracking);
+ if (cache) {
+ single = JSON.parse(cache);
+ } else {
+ const response = await axios({
+ method: 'get',
+ url: `https://www.myhermes.co.uk/ajax/ref/trackParcelByBarcode?barcode=${tracking}`,
+ });
+
+ let parcel = response.data;
+ let message = '';
+
+ if (parcel.length > 0) {
+ parcel = parcel[0];
+
+ if (parcel.point) {
+ message += `${parcel.point.description}`;
+ }
+
+ if (parcel.location) {
+ message += ` at ${parcel.location.description}`;
+ }
+
+ if (parcel.estimatedDeliveryDate) {
+ message += ` ETA: ${dayjs(parcel.estimatedDeliveryDate).format('MMM DD')}`;
+ }
+
+ single = {
+ pubDate: new Date(parcel.dateTime).toISOString(),
+ title: message,
+ };
+ }
+
+ await ctx.cache.set(tracking, JSON.stringify(single), 1 * 60 * 60);
+ }
+
+ ctx.state.data = {
+ title: `Hermes Tracking ${tracking}`,
+ link: `https://www.myhermes.co.uk/tracking-results.html?trackingNumber=${tracking}`,
+ item: [single],
+ };
+};