Unofficial AllKeyShop API made in typescript
npm install allkeyshop-apiimport { AllkeyshopService } from 'allkeyshop-api'
const allkeyshopService = new AllkeyshopService()const options = {
currency: 'eur',
platform: '',
store: 'steam'
}
const allkeyshopService = new AllkeyshopService(options)- Currency: Get prices in the selected currency. Default: eur
- Platform: Look up games for the selected platform. Default: '' (PC). Possible values: 'PS5', 'Xbox One', 'Nintendo Switch' etc.
- Store: Filter by selected store. Default: '' (any). Possible values: 'steam', 'origin', 'ea-app', 'uplay', 'gog', 'epic' etc.
allkeyshopService.search('Borderlands 3').then((data) => {
console.log(data)
})
// Output:
// {
// offers: [
// {
// merchant: 'Steam',
// edition: 'Standard Edition',
// region: 'Steam',
// currentPrice: null,
// minDiscountPrice: 59.99,
// couponCode: null,
// lastUpdate: '2026-10-08 17:17:01',
// lastSeen: '2026-10-09 00:02:35'
// },
// ...
// ],
// lowestPrices: {
// official: {
// merchant: 'Gamesplanet US',
// price: 48.01,
// lastUpdate: '2026-10-07 12:35:26'
// },
// keyshops: {
// merchant: 'GameBoost',
// price: 2.96,
// lastUpdate: '2026-10-09 03:33:04'
// }
// },
// historicalLows: {
// official: {
// merchant: 'Steam',
// price: 2.99,
// lastUpdate: '2025-07-10 16:56:31'
// },
// keyshops: {
// merchant: 'Kinguin',
// price: 1.6,
// lastUpdate: '2026-07-22 08:19:20'
// }
// }
// }offers has one entry per merchant, edition and region: the newest price
record, if it was seen in the last 7 days. merchant, edition and region
are resolved to readable names. Incomplete or malformed records are omitted.
minDiscountPrice: the best recorded price after coupon. Always present.currentPriceandcouponCode: the upstream fills these only when a price record closes. The newest record is usually still open, so both are oftennull.lastUpdate: when the record started.lastSeen: when the price was last observed.
lowestPrices.official and lowestPrices.keyshops are the cheapest current
minDiscountPrice at official stores and at key resellers; their lastUpdate
is when that price was last seen. historicalLows holds the all-time lows
reported by the upstream. Any of them may be null. Both cover the whole game,
across every edition and region: the store option only filters offers.
search() rejects when the game catalog or the pricing data cannot be loaded.
When no game matches, it returns empty offers.
allkeyshopService.find('DARK SOULS III').then((data) => {
console.log(data)
})
// Output:
// {
// status: 'success',
// games: [
// { id: '83060', name: 'DARK SOULS' },
// { id: '83063', name: 'DARK SOULS REMASTERED' },
// ...
// ]
// }When no game matches, games is empty. When the game catalog cannot be loaded,
status is 'error' and message says why.
Search for games and get their current prices for each platform
- Search games and get current prices and lows, including official stores and key resellers
- Filter by platform
- Filter by store
- Search by specific currency
Feel free to submit issues and enhancement requests here: Report Issue
If you want to support the project, you can buy me a coffee. Thanks!
- Fork the repo on GitHub
- Clone the project to your own machine
- Commit changes to your own branch
- Push your work back up to your fork
- Submit a Pull request so that we can review your changes
NOTE: Be sure to merge the latest from "upstream" before making a pull request!
