Level up your apps with real-time Metacritic scores using this lightweight PHP package.
No API keys, no rate limits — just smart scraping and structured JSON output. 🧠⚡
Install it via Composer and get your first score in less than 60 seconds:
composer require askancy/metacritic-api-phprequire 'vendor/autoload.php';
use Askancy\Metacritic\MetacriticScraper;
use Askancy\Metacritic\Exceptions\MetacriticException;
$scraper = new MetacriticScraper();
try {
$result = $scraper->fetch('elden-ring'); // Use the Metacritic slug
echo json_encode($result, JSON_PRETTY_PRINT);
} catch (MetacriticException $e) {
echo "💥 Error: " . $e->getMessage();
}🧠 Pro Tip: You can pass any valid slug like 'god-of-war-ragnarok', 'cyberpunk-2077', 'final-fantasy-vii-remake', etc.
{
"slug": "elden-ring",
"url": "https://www.metacritic.com/game/elden-ring",
"score": "96"
}slug: Slug used to build the URLurl: Full Metacritic link to the game pagescore: Metacritic metascore (0-100)
Run the full test suite to validate your setup:
composer install
vendor/bin/phpunit tests/✅ Includes:
- Score presence and format check
- Proper exception handling on 404 pages
- JSON serialization test
metacritic-api-php/
├── src/
│ ├── MetacriticScraper.php # Main class
│ └── Exceptions/
│ └── MetacriticException.php # Custom error
├── tests/
│ └── MetacriticScraperTest.php # PHPUnit test
├── composer.json
├── README.md
- ✅ No API key required
⚠️ Graceful error handling (timeouts, 404s)- 🧩 Easily extendable to retrieve more metadata (e.g., platforms, release date)
- 🕵️♀️ Smart fallback: if JSON-LD fails, uses HTML metascore node
This package is perfect for:
- Game databases 🗃️
- Gaming communities 🧑🤝🧑
- Game recommendation engines 🤖
- Gamified profiles or dashboards 📊
This package is licensed under the MIT License, with one twist:
❌ Redistribution and reselling is NOT allowed. 🔁 Contributions and improvements are always welcome.
Made with ❤️ by Askancy For support, bugs or PRs: GitHub Issues
💬 "Always check the score, before you hit Play." 🎮