psn-api
v2.10.1
Published
A well-tested library that lets you get trophy, user, and game data from the PlayStation Network.
Downloads
2,187
Maintainers
Readme
Features
✅ Modular by design, and supports tree-shaking.
✅ Aligns with the community API documentation.
✅ Supports Node environments (14 and above).
✅ Supports browsers.
✅ Ships with TypeScript support and types.
✅ Small, <5Kb.
Documentation
Learn how to authenticate and start pulling data from the PlayStation Network on our documentation website.
Installation
Run the following command:
npm install psn-api
How to obtain an authentication token
To use any endpoint function in the API, you must first be authorized by PSN. Fortunately, this is a fairly straightforward process.
In your web browser, visit https://www.playstation.com/, click the "Sign In" button, and log in with a PSN account.
In the same browser (due to a persisted cookie), visit https://ca.account.sony.com/api/v1/ssocookie. You will see a JSON response that looks something like:
{ "npsso": "<64 character token>" }
Copy your NPSSO. Do not expose it anywhere publicly, it is equivalent to your password.
If you see an error response, try using different browser.
- You can now obtain an authentication token using your NPSSO with the following function calls from this package.
// This is the value you copied from the previous step.
const myNpsso = "<64 character token>";
// We'll exchange your NPSSO for a special access code.
const accessCode = await exchangeNpssoForCode(myNpsso);
// We can use the access code to get your access token and refresh token.
const authorization = await exchangeCodeForAccessToken(accessCode);
- You should now be all set to use any endpoint provided by this package. Each function requires as its first argument an object containing your access token. ex:
const authorization = await exchangeCodeForAccessToken(accessCode);
// This returns a list of all the games you've earned trophies for.
const userTitlesResponse = await getUserTitles(
{ accessToken: authorization.accessToken },
"me"
);
API
Click the function names to open their complete docs on the docs site.
Authentication
exchangeCodeForAccessToken()
- Exchange your access code for access and refresh tokens.exchangeNpssoForCode()
- Exchange your NPSSO for an access code.exchangeRefreshTokenForAuthTokens()
- Get a new access token using your refresh token (bypassing the need to constantly auth with your NPSSO).
Search
makeUniversalSearch()
- Search the PSN API. This is a good way to find a user'saccountId
from their username.
Users
getProfileFromUserName()
- Get a user's legacy profile from the username. Often used to check for legacy presence.getProfileFromAccountId()
- Get a user's profile from theaccountId
.getUserFriendsAccountIds()
- Get a list ofaccountId
values present on a target account's friends list.getBasicPresence()
- Get a user's basic presence information.
Trophies
getTitleTrophies()
- Retrieve the individual trophy details of a single or all trophy groups for a title.getTitleTrophyGroups()
- Get a list of trophy groups (typically the base set and DLCs) for a title.getUserTitles()
- Retrieve a list of the titles associated with an account and a summary of trophies earned from them.getUserTrophiesEarnedForTitle()
- Retrieve the earned status of trophies for a user from either a single or all trophy groups in a title.getUserTrophyGroupEarningsForTitle()
- Get a summary of trophies earned for a user broken down by trophy group within a title.getUserTrophyProfileSummary()
- Retrieve an overall summary of the number of trophies earned for a user broken down by type.getRecentlyPlayedGames()
- Retrieve a list of recently played games for the user associated with the access token provided to this function.
Examples
Projects Using psn-api
- PS5 MQTT - Integrate your PlayStation 5 with Home Assistant.
- evanshortiss/README.md - Auto-updating GitHub bio with recently played games list.
Prior Art
- Tustin/psn-php - A high-level PHP wrapper for the PSN API.
- isFakeAccount/psnawp - A high-level Python wrapper for the PSN API.
- andshrew/PlayStation-Trophies - an attempt at documenting the PSN API by capturing the requests made by the PlayStation website.
Disclaimer
This project is not intended to be used for spam or abuse. Please use this project to elevate the PlayStation Network experience, not damage it.