# RetroAchievements Search Scraper (`easyapi/retroachievements-search-scraper`) Actor

Search RetroAchievements games, achievements, and users. Extract titles, systems, points, player counts, and badges via the internal search API. 🎮

- **URL**: https://apify.com/easyapi/retroachievements-search-scraper.md
- **Developed by:** [EasyApi](https://apify.com/easyapi) (community)
- **Categories:** Social media, Other, Automation
- **Stats:** 2 total users, 1 monthly users, 96.7% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.99 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## RetroAchievements Search Scraper

Search and collect data from [RetroAchievements](https://retroachievements.org), the community platform where retro gamers track achievements, points, and progress across classic titles. Enter a keyword and export games, achievements, players, and more—ideal for gaming communities, content creators, and retro gaming enthusiasts.

From discovering hidden gems to analyzing player activity around a franchise, this Actor helps you explore RetroAchievements search results in a structured, repeatable way.

### Who Is This For?

- **Retro gaming fans** looking for games and achievements to tackle next
- **Streamers & YouTubers** researching content ideas and community favorites
- **Gaming communities & forums** building guides, wikis, and recommendation lists
- **Data enthusiasts** studying achievement design and player engagement
- **Content writers** creating SEO-friendly retro gaming articles and roundups

### What You Can Do

- Search RetroAchievements by keyword across different result types
- Find classic games tied to a theme, series, or genre
- Explore achievements, user profiles, tags, and achievement sets
- Compare player counts, points, and completion stats
- Collect results in bulk for guides, databases, or community projects

### What You Get

Depending on what you search for, each result can include details such as:

- Game or achievement title
- Platform / console information
- Number of published achievements
- Total players and achievement points
- Badge or cover image links
- Direct links to game, achievement, or user pages
- Search keyword, scope, and collection timestamp

### How to Use

1. Enter a **search keyword** (for example: `war`, `mario`, `zelda`)
2. Choose a **search scope**: Games, Achievements, Users, Tags, or Sets
3. Set how many results you want to collect
4. Run the Actor and download your dataset

### Input Example

```json
{
    "query": "war",
    "scope": "games",
    "maxItems": 100
}
```

### Output Example

Each search result is saved as one dataset record:

```json
{
    "query": "war",
    "scope": "games",
    "page": 1,
    "perPage": 50,
    "searchUrl": "https://retroachievements.org/search?query=war&scope=games",
    "itemUrl": "https://retroachievements.org/game/344",
    "scrapedAt": "2026-07-09T03:21:37.710Z",
    "id": 344,
    "title": "Contra III: The Alien Wars",
    "achievementsPublished": 30,
    "playersTotal": 9153,
    "pointsTotal": 665,
    "badgeUrl": "https://media.retroachievements.org/Images/110814.png",
    "system": {
        "id": 3,
        "name": "SNES/Super Famicom",
        "iconUrl": "https://static.retroachievements.org/assets/images/system/snes.png",
        "nameShort": "SNES"
    }
}
```

### Popular Use Cases

- **Game discovery** — Find classic titles worth replaying or streaming
- **Achievement hunting** — Identify games and goals for your next challenge run
- **Community rankings** — Highlight popular games and active player bases
- **Guide creation** — Build structured lists for blogs, wikis, and Discord servers
- **Retro gaming SEO content** — Publish searchable lists like “best GBA games about war”
- **Franchise deep dives** — Research a series across platforms and achievement sets

### Why RetroAchievements?

RetroAchievements adds modern achievement tracking to beloved retro games, creating a rich search experience across thousands of titles and community members. This Actor makes that search data easy to collect—so you can focus on playing, creating, and sharing—not manual copy-paste.

# Actor input Schema

## `query` (type: `string`):

Keyword to search on RetroAchievements, e.g. war

## `queries` (type: `array`):

Optional batch of search keywords. If provided, query is ignored.

## `scope` (type: `string`):

Search category on RetroAchievements

## `maxItems` (type: `integer`):

Maximum number of search results to collect

## `proxyConfiguration` (type: `object`):

Proxy settings for the actor

## Actor input object example

```json
{
  "query": "war",
  "queries": [],
  "scope": "games",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": "war",
    "queries": [],
    "scope": "games",
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("easyapi/retroachievements-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "query": "war",
    "queries": [],
    "scope": "games",
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("easyapi/retroachievements-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "war",
  "queries": [],
  "scope": "games",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call easyapi/retroachievements-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,easyapi/retroachievements-search-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/KrRHf1TekkmEf3fyK/builds/5O9Ke0gzEBPDwWNOb/openapi.json
