- PHP 8.1 or later
The playstation-store-api can be installed using Composer by running the following command:
composer require mrt1m/playstation-store-api
Create Client object using the following code:
<?php
declare(strict_types=1);
use PlaystationStoreApi\Client;
use GuzzleHttp\Client as HTTPClient;
use PlaystationStoreApi\Enum\CategoryEnum;
use PlaystationStoreApi\Enum\RegionEnum;
require_once __DIR__ . '/../vendor/autoload.php';
const API_URL = 'https://web.np.playstation.com/api/graphql/v1/';
$client = new Client(RegionEnum::UNITED_STATES, new HTTPClient(['base_uri' => API_URL, 'timeout' => 5]));
use PlaystationStoreApi\Request\RequestProductById;
/**
* Example for https://store.playstation.com/en-us/product/UP0001-CUSA09311_00-GAME000000000000
*/
$response = $client->get(new RequestProductById('UP0001-CUSA09311_00-GAME000000000000'));
use PlaystationStoreApi\Request\RequestConceptById;
/**
Example for https://store.playstation.com/en-us/concept/10002694
*/
$response = $client->get(new RequestConceptById('10002694'));
use PlaystationStoreApi\Request\RequestProductList;
$request = RequestProductList::createFromCategory(CategoryEnum::PS5_GAMES);
$firstPageResponse = $client->get($request);
$nextPageResponse = $client->get($request->createNextPageRequest());
If you want run examples, you need:
- Docker and docker compose
- Execute make command for example:
make get_add_ons_by_title_id
- Get api response from response directory
For all request you need send sha256Hash. It's request signature.
You can get sha256Hash from browser request:
- Open the Network panel and find query to https://web.np.playstation.com/api/graphql/v1/op
- Copy the full request URL and use urldecode
- sha256Hash is in the extensions parameter, example:
https://web.np.playstation.com/api/graphql/v1//op?operationName=categoryGridRetrieve&variables={"id":"44d8bb20-653e-431e-8ad0-c0a365f68d2f","pageArgs":{"size":24,"offset":0},"sortBy":{"name":"productReleaseDate","isAscending":false},"filterBy":[],"facetOptions":[]}&extensions={"persistedQuery":{"version":1,"sha256Hash":"9845afc0dbaab4965f6563fffc703f588c8e76792000e8610843b8d3ee9c4c09"}}
If default sha256Hash will be blocked, you can replace the base value:
- Get new sha256Hash value
- Replace the default value in
PlaystationStoreApi\RequestLocatorService
use PlaystationStoreApi\RequestLocatorService;
use PlaystationStoreApi\Request\RequestPSPlusTier;
$customRequestLocatorService = RequestLocatorService::default();
$customRequestLocatorService->set(RequestPSPlusTier::class, 'new sha256Hash value')
- Give $customRequestLocatorService to client
declare(strict_types=1);
use PlaystationStoreApi\Client;
use GuzzleHttp\Client as HTTPClient;
use PlaystationStoreApi\Enum\CategoryEnum;
use PlaystationStoreApi\Enum\RegionEnum;
const API_URL = 'https://web.np.playstation.com/api/graphql/v1/';
$client = new Client(
RegionEnum::UNITED_STATES,
new HTTPClient(['base_uri' => API_URL, 'timeout' => 5]),
$customRequestLocatorService
);
If you need custom request:
- Create new request class then implement
PlaystationStoreApi\Request\BaseRequest
- Append new request class with sha256Hash to
PlaystationStoreApi\RequestLocatorService
- Give new RequestLocatorService to client
- Execute client
get
method with new request
You can try playstation api with postman.
For import collection download playstation api.postman_collection.json