diff --git a/docs/README.md b/docs/README.md
index 344a09475..2b5770b45 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1146,6 +1146,10 @@ GitHub 官方也提供了一些 RSS:
+### Apkpure
+
+
+
## 大学通知
### 上海海事大学
diff --git a/router.js b/router.js
index dd74fb7e2..29fce831b 100644
--- a/router.js
+++ b/router.js
@@ -861,4 +861,7 @@ router.get('/sysu/sdcs', require('./routes/universities/sysu/sdcs'));
router.get('/anigamer/new_anime', require('./routes/anigamer/new_anime'));
router.get('/anigamer/anime/:sn', require('./routes/anigamer/anime'));
+// Apkpure
+router.get('/apkpure/versions/:region/:pkg', require('./routes/apkpure/versions'));
+
module.exports = router;
diff --git a/routes/apkpure/versions.js b/routes/apkpure/versions.js
new file mode 100644
index 000000000..2ca642703
--- /dev/null
+++ b/routes/apkpure/versions.js
@@ -0,0 +1,39 @@
+const axios = require('../../utils/axios');
+const cheerio = require('cheerio');
+const { DateTime } = require('luxon');
+
+module.exports = async (ctx) => {
+ const { region, pkg } = ctx.params;
+ const prefix = region === 'en' ? 'https://apkpure.com' : `https://apkpure.com/${region}`;
+ let $ = await axios.get(`${prefix}/search?q=${pkg}`).then((r) => cheerio.load(r.data));
+ const apppage = $('.search-title:nth-child(1)>a').attr('href');
+ const link = `https://apkpure.com${apppage}/versions`;
+ console.log(link);
+ $ = await axios.get(link).then((r) => cheerio.load(r.data));
+ ctx.state.data = {
+ title: $('.ver-top-h1').text(),
+ description: $('.ver-top-title>h2').text(),
+ link: decodeURI(link),
+ item: $('.ver li')
+ .toArray()
+ .map((ver) => ({
+ title: $(ver)
+ .find('.ver-item-n')
+ .text(),
+ description: $(ver)
+ .find('a')
+ .attr('title'),
+ link: `https://apkpure.com${decodeURI(
+ $(ver)
+ .find('a')
+ .attr('href')
+ .split('?from')[0]
+ )}`,
+ pubDate: DateTime.fromISO(
+ $(ver)
+ .find('.update-on')
+ .text()
+ ).toRFC2822(),
+ })),
+ };
+};