A PHP7.1 Wrapper for PokéAPI, with cache and lazy-loading
Switch branches/tags
Nothing to show
Clone or download



A PHP7.1+ wrapper for PokéAPI. This package offers the possibility to query the majority of the PokéAPI endpoints (see exceptions below). It supports caching of responses and lazy-loading relations.


composer require lmerotta/phpokeapi

Basic Usage

UsePokeAPI\Client to query the endpoints directly through the named methods.


use PokeAPI\Client;

$client = new Client();

// Returns a PokeAPI\Pokemon\Species instance
$species = $client->species('bulbasaur'); // or $client->species(1);

You can then traverse the returned object. All its relations will be proxies, and won't make any new requests to the API except if you explicitly call one of their getters


// ...

$species->getName(); // 'bulbasaur'
$growthRate = $species->getGrowthRate(); // A proxy of PokeAPI\Pokemon\GrowthRate 

$growthRate->getName(); // Here the real API call to the GrowthRate endpoint is made 

All the requests made are cached, so you won't have to query twice for the same dataset.


The PokeAPI\Client takes 3 optional parameters:

  • $url, a string pointing to the base URL of the PokéAPI. Defaults to pokeapi.co
  • $cache, A Psr\SimpleCache\CacheInterface. Defaults to a Symfony\Component\Cache\Simple\FilesystemCache instance
  • $serializer, A JMS\Serializer\SerializerInterface implementation.


Feel free to open pull requests or submit issues!