{"id":30653018,"url":"https://github.com/retroachievements/api-js","last_synced_at":"2026-02-04T03:03:54.538Z","repository":{"id":65827167,"uuid":"548447865","full_name":"RetroAchievements/api-js","owner":"RetroAchievements","description":"The official JavaScript library for getting achievement, user, and game data from RetroAchievements.","archived":false,"fork":false,"pushed_at":"2025-06-29T20:28:47.000Z","size":573,"stargazers_count":60,"open_issues_count":7,"forks_count":11,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-08-31T07:34:03.706Z","etag":null,"topics":["achievements","javascript","nodejs","retroachievements","typescript"],"latest_commit_sha":null,"homepage":"https://api-docs.retroachievements.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RetroAchievements.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-10-09T15:35:37.000Z","updated_at":"2025-08-25T04:57:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"41a4a7ff-392f-4e77-b3d4-c1b5ab672d6e","html_url":"https://github.com/RetroAchievements/api-js","commit_stats":{"total_commits":60,"total_committers":1,"mean_commits":60.0,"dds":0.0,"last_synced_commit":"f7ce3dad0d2757d61a956140aa7ba5835c7015a2"},"previous_names":["retroachievements/api-js","retroachievements/retroachievements-api-js"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/RetroAchievements/api-js","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RetroAchievements%2Fapi-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RetroAchievements%2Fapi-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RetroAchievements%2Fapi-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RetroAchievements%2Fapi-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RetroAchievements","download_url":"https://codeload.github.com/RetroAchievements/api-js/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RetroAchievements%2Fapi-js/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272953908,"owners_count":25021133,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["achievements","javascript","nodejs","retroachievements","typescript"],"created_at":"2025-08-31T07:34:09.610Z","updated_at":"2026-02-04T03:03:54.526Z","avatar_url":"https://github.com/RetroAchievements.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\" dir=\"auto\"\u003e\u003ca href=\"https://retroachievements.org\" rel=\"nofollow\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/RetroAchievements/RAWeb/master/public/assets/images/ra-icon.webp\" width=\"200\" alt=\"RetroAchievements Logo\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch1 align=\"center\"\u003e@retroachievements/api\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ci\u003eA JavaScript library that lets you get achievement, user, and game data from RetroAchievements.\u003c/i\u003e\n  \u003cbr /\u003e\u003cbr /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://api-docs.retroachievements.org/getting-started.html\"\u003e\u003cstrong\u003eDocumentation: Get Started\u003c/strong\u003e\u003c/a\u003e\n  \u003cbr /\u003e\n\u003c/p\u003e\n\n\u003chr /\u003e\n\n## Features\n\n✅ \u0026nbsp;Modular by design and supports tree-shaking.  \n✅ \u0026nbsp;Officially-supported, aligns 1:1 with the RAWeb API.  \n✅ \u0026nbsp;Supports Node environments (16 and above).  \n✅ \u0026nbsp;Ships with TypeScript support and types.  \n✅ \u0026nbsp;Automatically maps types and properties from RAWeb PHP calls.  \n✅ \u0026nbsp;Small, \u003c3Kb.\n\n\u003chr /\u003e\n\n## Installation\n\nRun the following command:\n\n```bash\nnpm install --save @retroachievements/api\n```\n\n## Documentation\n\nLearn how to authenticate and start pulling data from RetroAchievements on our documentation website.\n\n- [Get started](https://api-docs.retroachievements.org/getting-started.html)\n- [Get a user's profile information](https://api-docs.retroachievements.org/v1/get-user-profile.html)\n- [Look up games a user has completed](https://api-docs.retroachievements.org/v1/get-user-progress.html)\n- [Get a game's metadata](https://api-docs.retroachievements.org/v1/get-game-extended.html)\n\n## How to begin making API calls\n\nTo use any endpoint function in the API, you must first be authorized by RetroAchievements. Fortunately, this is a fairly straightforward process.\n\n1. Visit [your control panel](https://retroachievements.org/controlpanel.php) on the RA website.\n\n2. Find the \"Keys\" section on the page. Copy the web API key value. **Do not expose your API key anywhere publicly.**\n\n3. You can now create your authorization object using your web API key.\n\n```ts\nimport { buildAuthorization } from \"@retroachievements/api\";\n\nconst username = \"\u003cyour username on RA\u003e\";\nconst webApiKey = \"\u003cyour web API key\u003e\";\n\nconst authorization = buildAuthorization({ username, webApiKey });\n```\n\n4. You now have all you need to use any function in the API. Each function takes this authorization object as its first argument. Here's an example:\n\n```ts\nimport { getGame } from \"@retroachievements/api\";\n\n// This returns basic metadata about the game on this page:\n// https://retroachievements.org/game/14402\nconst game = await getGame(authorization, { gameId: 14402 });\n```\n\n## API\n\nClick the function names to open their complete docs on the docs site.\n\n### User\n\n- [`getUserProfile()`](https://api-docs.retroachievements.org/v1/get-user-profile.html) - Get a user's basic profile information.\n- [`getUserRecentAchievements()`](https://api-docs.retroachievements.org/v1/get-user-recent-achievements.html) - Get a list of achievements recently earned by the user.\n- [`getAchievementsEarnedBetween()`](https://api-docs.retroachievements.org/v1/get-achievements-earned-between.html) - Get a list of achievements earned by a user between two dates.\n- [`getAchievementsEarnedOnDay()`](https://api-docs.retroachievements.org/v1/get-achievements-earned-on-day.html) - Get a list of achievements earned by a user on a given date.\n- [`getGameInfoAndUserProgress()`](https://api-docs.retroachievements.org/v1/get-game-info-and-user-progress.html) - Get metadata about a game as well as a user's progress on that game.\n- [`getUserCompletionProgress()`](https://api-docs.retroachievements.org/v1/get-user-completion-progress.html) - Get metadata about all the user's played games and any awards associated with them.\n- [`getUserAwards()`](https://api-docs.retroachievements.org/v1/get-user-awards.html) - Get a list of a user's site awards/badges.\n- [`getUserClaims()`](https://api-docs.retroachievements.org/v1/get-user-claims.html) - Get a list of set development claims made over the lifetime of a user.\n- [`getUserGameRankAndScore()`](https://api-docs.retroachievements.org/v1/get-user-game-rank-and-score.html) - Get metadata about how a user has performed on a given game.\n- [`getUserPoints()`](https://api-docs.retroachievements.org/v1/get-user-points.html) - Get a user's total hardcore and softcore points.\n- [`getUserProgress()`](https://api-docs.retroachievements.org/v1/get-user-progress.html) - Get a user's progress on a list of specified games.\n- [`getUserRecentlyPlayedGames()`](https://api-docs.retroachievements.org/v1/get-user-recently-played-games.html) - Get a list of games a user has recently played.\n- [`getUserSummary()`](https://api-docs.retroachievements.org/v1/get-user-summary.html) - Get a user's profile metadata.\n- [`getUserCompletedGames()`](https://api-docs.retroachievements.org/v1/get-user-completed-games.html) - Deprecated function. Get hardcore and softcore completion metadata about games a user has played.\n- [`getUserWantToPlayList()`](https://api-docs.retroachievements.org/v1/get-user-want-to-play-list.html) - Get a user's \"Want to Play Games\" list.\n- [`getUsersFollowingMe()`](https://api-docs.retroachievements.org/v1/get-users-following-me.html) - Get the caller's \"Followers\" users list.\n- [`getUsersIFollow()`](https://api-docs.retroachievements.org/v1/get-users-i-follow.html) - Get the caller's \"Following\" users list.\n- [`getUserSetRequests()`](https://api-docs.retroachievements.org/v1/get-user-set-requests.html) - Get a given user's set requests, maximum total requests, and points until next request.\n\n### Game\n\n- [`getGame()`](https://api-docs.retroachievements.org/v1/get-game.html) - Get basic metadata about a game.\n- [`getGameExtended()`](https://api-docs.retroachievements.org/v1/get-game-extended.html) - Get extended metadata about a game.\n- [`getGameHashes()`](https://api-docs.retroachievements.org/v1/get-game-hashes.html) - Get a list of hashes linked to a game.\n- [`getGameProgression()`](https://api-docs.retroachievements.org/v1/get-game-progression.html) - Get information about the average time to unlock achievements in a game.\n- [`getAchievementCount()`](https://api-docs.retroachievements.org/v1/get-achievement-count.html) - Get the list of achievement IDs for a game.\n- [`getAchievementDistribution()`](https://api-docs.retroachievements.org/v1/get-achievement-distribution.html) - Get how many players have unlocked how many achievements for a game.\n- [`getGameRankAndScore()`](https://api-docs.retroachievements.org/v1/get-game-rank-and-score.html) - Get a list of either the latest masters or highest hardcore points earners for a game.\n\n### Leaderboard\n\n- [`getLeaderboardEntries()`](https://api-docs.retroachievements.org/v1/get-leaderboard-entries.html) - Get a given leaderboard's entries.\n- [`getUserGameLeaderboards()`](https://api-docs.retroachievements.org/v1/get-user-game-leaderboards.html) - Get a user's list of leaderboards for a given game.\n\n### System\n\n- [`getConsoleIds()`](https://api-docs.retroachievements.org/v1/get-console-ids.html) - Get the complete list of console ID and name pairs on the site.\n- [`getGameList()`](https://api-docs.retroachievements.org/v1/get-game-list.html) - Get the complete list of games for a console.\n\n### Achievement\n\n- [`getAchievementUnlocks()`](https://api-docs.retroachievements.org/v1/get-achievement-unlocks.html) - Get a list of users who have earned an achievement.\n\n### Feed\n\n- [`getActiveClaims()`](https://api-docs.retroachievements.org/v1/get-active-claims.html) - Get all active set claims on the site.\n- [`getClaims()`](https://api-docs.retroachievements.org/v1/get-claims.html) - Get all claims of other kinds on the site.\n- [`getRecentGameAwards()`](https://api-docs.retroachievements.org/v1/get-recent-game-awards.html) - Get all recent mastery, completion, and beaten awards earned on the site.\n- [`getTopTenUsers()`](https://api-docs.retroachievements.org/v1/get-top-ten-users.html) - Get the list of top ten points earners.\n\n### Comment\n\n- [`getComments()`](https://api-docs.retroachievements.org/v1/get-comments.html) - Get the comments left an achievement, game, or user wall.\n\n### Event\n\n- [`getAchievementOfTheWeek()`](https://api-docs.retroachievements.org/v1/get-achievement-of-the-week.html) - Get comprehensive metadata about the current Achievement of the Week.\n\n### Ticket\n\n- [Get Ticket by ID](https://api-docs.retroachievements.org/v1/get-ticket-data/get-ticket-by-id.html)\n- [Get Most Ticketed Games](https://api-docs.retroachievements.org/v1/get-ticket-data/get-most-ticketed-games.html)\n- [Get Most Recent Tickets](https://api-docs.retroachievements.org/v1/get-ticket-data/get-most-recent-tickets.html)\n- [Get Game Ticket Stats](https://api-docs.retroachievements.org/v1/get-ticket-data/get-game-ticket-stats.html)\n- [Get Developer Ticket Stats](https://api-docs.retroachievements.org/v1/get-ticket-data/get-developer-ticket-stats.html)\n- [Get Achievement Ticket Stats](https://api-docs.retroachievements.org/v1/get-ticket-data/get-achievement-ticket-stats.html)\n\n## Projects Using @retroachievements/api\n\nLet us know about yours by [opening an issue](https://github.com/RetroAchievements/api-js/issues/new)!\n\n## How to Contribute\n\nCheck out [CONTRIBUTING.md](https://github.com/RetroAchievements/api-js/blob/main/CONTRIBUTING.md) for how to get started.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fretroachievements%2Fapi-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fretroachievements%2Fapi-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fretroachievements%2Fapi-js/lists"}