ResidualPlaybeta Open the radar

Developers and agents

The ResidualPlay API

Everything on this site is available as JSON, CSV and Markdown. It is free and almost everything needs no key and no account; the exceptions: the bulk CSV export asks you to identify (free account or anonymous agent token), and the bulk data endpoints are paid over x402. All we ask is a link back when you publish something built on it.

MCP server (for agents)

Add https://residualplay.com/mcp as an MCP connector (Streamable HTTP, no authentication) and your assistant gets five read-only tools: search_radar, get_game, get_studio, get_insights and get_report. Discovery card at /.well-known/mcp.json. Same data, same rate limits, ready to answer questions like "find unclaimed strategy games earning over $1k/mo".

Quick start

The top ten opportunities on the radar right now:

curl "https://residualplay.com/api/v1/radar?per=10"

One game's full case file, by Steam appid:

curl "https://residualplay.com/api/v1/game/1113120"

What the numbers mean

Every money figure is net to the developer and per month, unless the field name says lifetime. Net means VAT, refunds and Steam's cut are already removed, so roughly 55% of gross. Estimates carry a ±30–50% error range per title and are tighter in aggregate.

Every estimated figure is rounded to three significant figures, because the model does not have more precision than that. A game shown at 67,300 units is not a claim about the last hundred copies; it is an estimate with a wide band around it. Review counts, prices and dates are exact, since those are measured rather than estimated.

Endpoints

EndpointWhat it returns
GET /api/v1/radarThe screener, with every filter below
GET /api/v1/radar.csvThe same query as CSV, up to 2000 rows
GET /api/v1/game/{appid}Full case file, including the analyst brief
GET /api/v1/game/{appid}/historyHow the estimates moved over time
GET /api/v1/game/{appid}/compsComparable deals, same genre and era
POST /api/v1/game/{appid}/analyzeQueue an unanalyzed game, ready in about a minute
GET /api/v1/game/{appid}/statusAnalysis state of that game
GET /api/v1/studio/{slug}A developer's whole tracked catalog
GET /api/v1/eventsRecent changes: wake-ups, first discounts, new grade A
GET /api/v1/report/{YYYY-MM}The monthly Residual Report
GET /api/v1/kpisAggregates across the whole radar
GET /api/v1/healthService health

Filters

All of these combine on /api/v1/radar and /api/v1/radar.csv:

A worked example, strategy games from 2018 or earlier with at least $1k/month of opportunity:

curl "https://residualplay.com/api/v1/radar?genre=Strategy&year_max=2018&opp_min=1000"

Narrow it further with any signal, for instance only those whose players review in languages the game never shipped in:

curl "https://residualplay.com/api/v1/radar?opp_min=1000&year_max=2018&loc_gap=1"

Markdown for agents

Send Accept: text/markdown to any page and you get clean Markdown instead of HTML, with an X-Markdown-Tokens header so you can budget context before reading:

curl -H "Accept: text/markdown" https://residualplay.com/game/1113120

Case files also live at /game/{appid}.md without any header. The machine index is /llms.txt, the OpenAPI description is /openapi.json and the API catalog is at /.well-known/api-catalog.

Individual queries stay free. Bulk extracts are paid, machine to machine, over the x402 protocol (v2, scheme exact, USDC): request the endpoint, read the PAYMENT-REQUIRED header, pay, retry with PAYMENT-SIGNATURE. No account, no invoice dance.

GET  /api/v1/bulk/orphans.csv        every verified orphan + the evidence     USDC 15.00
GET  /api/v1/bulk/catalog.csv        the full scored catalog, every column    USDC  5.00
POST /api/v1/agent/credits           10,000 request credits for your token    USDC  5.00
GET  /api/v1/bulk/research.json      decay, discounts, seasonality, cohorts   USDC  2.00
GET  /api/v1/bulk/radar.json?...     any screener query, full result set      USDC  1.00
GET  /api/v1/bulk/game/{appid}.json  deep dossier: history, players, comps    USDC  0.05

Mainnet activation is in progress; the endpoint answers 404 until then. If you want a bulk extract meanwhile, write to contact@residualplay.com.

Rate limits and fair use

120 requests per minute per IP on reads, 10 on CSV exports and 5 on on-demand analysis. No key needed. If you need a bulk extract for research, write to contact@residualplay.com instead of hammering the endpoint, and we will help.

Attribution

Cite ResidualPlay with a link to the page you took the figure from. The data and its selection and arrangement are protected; see the terms. If you are a developer and want your game corrected or removed, write to us and we will handle it.