A Node.js application that tracks iOS app version updates from the App Store and notifies via Discord webhook. It fetches both the latest app metadata via iTunes API and full version history by scraping the App Store page.
- Fetch the latest app info using iTunes Lookup API.
- Scrape the full version history from the App Store page (supports multiple App Store UI structures).
- Persist version history using Vercel KV.
- Send notifications to Discord webhook when a new version is detected.
- Provides a simple web UI and JSON API for viewing version history.
- Cron job support to check for updates automatically.
- Node.js v18+
- Vercel KV for storage (or compatible KV store)
- Discord webhook URL (optional, for notifications)
- Clone the repository:
git clone <repo-url>
cd <repo-folder>- Install dependencies:
npm install- Create a
.envfile in the project root:
PORT=3000
APP_ID=1190307500 # Default app to track
COUNTRIES=vn,us # Comma-separated list of countries
DISCORD_WEBHOOK=<your-webhook-url>
CRON_SCHEDULE=*/10 * * * * # Every 10 minutes (default)
ENABLE_CRON=true
TIMEZONE=Asia/Bangkoknpm startThe server will run at http://localhost:3000 by default.
Open your browser and visit:
http://localhost:3000/?appId=<APP_ID>&country=<COUNTRY_CODE>
Example:
http://localhost:3000/?appId=1190307500&country=vn
The UI shows:
- Latest app metadata (version, release notes)
- Full version history stored in Vercel KV
-
GET
/api/changelog?appId=<appId>&country=<country>Returns JSON changelog (saved or live fetch if not present). -
POST
/api/refreshForce fetch and save latest version info.
{
"appId": "1190307500",
"country": "vn",
"lang": "vi"
}Automatically checks for new versions based on CRON_SCHEDULE in .env.
If a new version is detected, it:
- Saves it to Vercel KV
- Sends a Discord webhook notification
Default schedule: every 10 minutes (*/10 * * * *).
| Variable | Description | Default |
|---|---|---|
PORT |
Port for Express server | 3000 |
APP_ID |
Default App Store app ID to track | 1190307500 |
COUNTRIES |
Comma-separated list of country codes to track | vn,us |
DISCORD_WEBHOOK |
Discord webhook URL for notifications | - |
CRON_SCHEDULE |
Cron schedule for automatic checks | */10 * * * * |
ENABLE_CRON |
Enable or disable cron job | true |
TIMEZONE |
Timezone for cron job | Asia/Bangkok |
MIT License
- Supports multiple App Store UI structures for version scraping.
- Automatically merges new versions with existing history in Vercel KV.
- Discord notifications are optional but recommended for real-time alerts.