A powerful Raycast extension for finding the best video game deals across multiple regions and stores. Search for games, compare prices, and track historical pricing data all from your Raycast launcher.
Raycast.Extension.mp4
- Instant Search: Search for games by title with real-time results
- Game Details: View comprehensive game information including box art, tags, and developer info
- Price Comparison: See current lowest prices across all supported stores
- Historical Data: Track all-time low prices and price history
- 20+ Countries: Support for major regions including US, UK, Japan, Germany, and more
- Localized Pricing: Get prices in your local currency
- Easy Region Switching: Change your region with a simple dropdown (Command+K)
- Persistent Settings: Your region preference is saved automatically
- Store-Specific Views: Filter deals by specific stores (Steam, GOG, Humble, etc.)
- Platform Filtering: View deals for specific platforms (PC, Switch, PlayStation, etc.)
- Direct Store Links: Click through to purchase directly from stores
- Current Best Deals: Always see the lowest current price
- Historical Lows: Track the best price ever offered
- Price Alerts: See how much you can save compared to store regular prices
- Bundle Information: Discover games available in bundles
- Raycast installed on macOS
- IsThereAnyDeal API key (free at isthereanydeal.com/app/)
- Install from Raycast Store
- Open Raycast and search for "Store"
- Search for "Is There Any Deal" in the store
- Click "Install" to add the extension
-
Install from Source
- Clone this repository
- Run
npm installto install dependencies - Copy
.env.exampleto.envand update with your information:cp .env.example .env # Edit .env with your GitHub username and repository URL - Run
npm run devto start development mode
-
Get Your API Key
- Visit isthereanydeal.com/app/
- Sign up for a free account
- Generate your API key
-
Configure the Extension
- On first launch, you'll see an inline API key input
- Click "Enter API Key" to open preferences
- Paste your API key in the preferences and save
- Optionally set your preferred country/region
- Open Raycast and type "Search IsThereAnyDeal"
- Enter a game title to search
- Browse results with current prices and store information
- Press
Cmd+Dor click "Show Details" for comprehensive game information
- In any view, press
Cmd+Kto open the Action Panel - Select "Set Country/Region"
- Choose your desired country from the dropdown
- Prices will automatically update for your selected region
- Current Lowest Price: Click to go directly to the store
- All-Time Low: See the best historical price
- Store Filtering: Use "View Only [Store]" actions to filter by specific stores
- Platform Filtering: Use "View Only [Platform]" actions to filter by platform
Cmd+D: Show game detailsCmd+K: Open Action PanelEnter: Open game on IsThereAnyDeal websiteCmd+Enter: Open lowest price deal
isthereanydeal/
├── src/
│ ├── search.tsx # Main search interface
│ └── GameDetail.tsx # Detailed game view
├── assets/
│ ├── extension-icon.png # Extension icon
│ └── ITAD-logo.png # IsThereAnyDeal logo
├── package.json # Dependencies and metadata
├── raycast-env.d.ts # TypeScript definitions
└── README.md # This file
- React: UI framework
- TypeScript: Type safety with comprehensive type definitions
- Raycast API: Extension framework
- IsThereAnyDeal API: Game and price data
- Modern ES6+: Async/await, destructuring, and modern JavaScript features
The extension uses environment variables to protect author and repository information:
RAYCAST_AUTHOR: Your GitHub username (used in package.json)RAYCAST_REPOSITORY_URL: Your repository URL (used in package.json)RAYCAST_EXTENSION_NAME: Extension name (optional, defaults to package.json)RAYCAST_EXTENSION_TITLE: Extension title (optional, defaults to package.json)
Copy .env.example to .env and update with your actual values. The .env file is gitignored to keep your information private.
npm run dev # Start development mode
npm run build # Build for production
npm run lint # Run ESLint
npm run fix-lint # Fix linting issues
npm run publish # Publish to Raycast StoreThe extension integrates with multiple IsThereAnyDeal API endpoints:
- Search:
/games/search/v1- Find games by title - Game Info:
/games/info/v2- Get detailed game information - Prices:
/games/prices/v3- Get current and historical prices - History:
/games/history/v2- Get price history data - Bundles:
/games/bundles/v2- Get bundle information
The extension uses several state management patterns:
- useLocalStorage: For persistent user preferences (country selection)
- useCachedPromise: For efficient API calls with caching
- useState: For local component state
- useEffect: For side effects and data fetching
- Centralized Constants: Shared constants and utility functions
- TypeScript Interfaces: Comprehensive type definitions for API responses
- API Key: Your IsThereAnyDeal API key (required)
- Country: Default country for pricing (optional, defaults to US)
- United States (US)
- United Kingdom (GB)
- Canada (CA)
- Germany (DE)
- France (FR)
- Japan (JP)
- Australia (AU)
- Brazil (BR)
- Russia (RU)
- China (CN)
- South Korea (KR)
- India (IN)
- Italy (IT)
- Spain (ES)
- Sweden (SE)
- Poland (PL)
- Netherlands (NL)
- Turkey (TR)
- South Africa (ZA)
"Missing API Key" Error
- Ensure your API key is correctly entered in extension preferences
- Verify your API key is valid at isthereanydeal.com/app/
No Search Results
- Check your internet connection
- Verify the game title spelling
- Some games may not be available in the IsThereAnyDeal database
Prices Not Updating
- Try changing your region and changing back
- Check if the game has any current deals
- Some games may not have price data for your selected region
Extension Not Loading
- Restart Raycast
- Check the Raycast logs for error messages
- Verify all dependencies are installed
The extension includes comprehensive logging. Check the Raycast logs for detailed information about API calls and data processing.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing code style and patterns
- Add TypeScript types for new features
- Include error handling for all API calls
- Test with different regions and game types
- Update documentation for new features
This project is licensed under the MIT License - see the LICENSE file for details.
- IsThereAnyDeal for providing the API and game data
- Raycast for the excellent extension framework
- The Raycast community for inspiration and support
If you encounter any issues or have questions:
- Check the troubleshooting section above
- Search existing issues on GitHub
- Create a new issue with detailed information about your problem
- Initial release
- Game search functionality
- Multi-region support
- Detailed game views
- Store and platform filtering
- Setup screen for API key configuration
- Comprehensive error handling
Happy deal hunting!
