API
Public read-only API. All endpoints return JSON and are cached for 60 seconds unless noted. Please credit ps99rap if you're using the API's.
https://ps99rap.com
/api/items
Returns all tracked items with their current data.
Object mapping item ID -> item object (name, rap, exists, category, modifiers, ...)
/api/items/bulk
Returns rap and exists for a list of item IDs.
ids
query
Comma-separated item IDs
required
Object mapping item ID -> { rap, exists }
/api/items/rap_histories
Returns RAP history for multiple items.
ids
query
Comma-separated item IDs
required
last
query
Number of most recent data points to return. Defaults to 0 (all).
Object mapping item ID -> [[timestamp, rap], ...]
/api/items/exists_histories
Returns exists (supply) history for multiple items.
ids
query
Comma-separated item IDs
required
last
query
Number of most recent data points to return. Defaults to 0 (all).
Object mapping item ID -> [[timestamp, exists], ...]
/api/items/exists_rates
Returns the current exists growth rate (per hour) for all items that have one.
Object mapping item ID -> rate (number, exists/hr)
/api/search
Returns the full search index. Useful for autocomplete.
Object mapping item ID -> name string
/api/meta
Returns tier and variant metadata for items that have it. Omits items with no special tier or variant.
Object mapping item ID -> { t?: 'huge'|'titanic'|'gargantuan', v?: 'shiny'|'golden'|'rainbow'|'shiny_golden'|'shiny_rainbow' }
/api/item/{base_id}
Returns full data for a single item.
base_id
path
Item ID, e.g. Huge_Cat
required
{ success, data: item object }
/api/item/{base_id}/rap_history
Returns full RAP history for a single item.
base_id
path
Item ID
required
{ success, data: [[timestamp, rap], ...] }
/api/item/{base_id}/exists_history
Returns full exists (supply) history for a single item.
base_id
path
Item ID
required
{ success, data: [[timestamp, exists], ...] }
/api/item/{base_id}/variants
Returns all variants of an item (regular, golden, rainbow, shiny) or tiers if applicable.
base_id
path
Base item ID without variant prefix
required
{ success, data: [item objects], kind: 'variants'|'tiers' }
/api/market
Returns time-series data for market-wide stats: market cap, total/huge/titanic/gargantuan exists and index histories.
{ market_cap_history, total_exists_history, huge_exists_history, titanic_exists_history, gargantuan_exists_history, huge_index_history, titanic_index_history, gargantuan_index_history } - each [[timestamp, value], ...]
/api/movers
Returns the top RAP and exists movers per item category over the past 24 hours.
Object with category keys, each containing rap and exists arrays of top movers
/api/tier_rates
Returns the linear regression exists growth rate (per hour) for Huge, Titanic, and Gargantuan tiers based on recent history.
{ huge: number|null, titanic: number|null, gargantuan: number|null }
/api/enchants
Returns all enchants with RAP, power, diminishing threshold, empowered boost, and category.
Object mapping enchant ID -> { name, rap, power, diminish_power_threshold, empowered_boost, internal_category }
/api/eggs
Returns all eggs with their pet pools and estimated hatch percentages derived from exists counts.
Object mapping egg ID -> { name, pets: [[pet_id, weight, estimated_pct], ...], ... }
/api/get/exclusive-daycare
Returns all Huge, Titanic, and Gargantuan items with rap, exists, normal_exists, variant, and type - used for daycare cost calculations.
Array of { id, name, rap, exists, normal_exists, variant, type }
/api/changelog
Returns the full site changelog.
Array of update objects { date, items: [string, ...] }
/api/timeline
Returns all non-variant items grouped by their creation date.
Object mapping date string (YYYY-MM-DD) -> [{ id, name, category, thumbnail }, ...]
/api/live/stream
Server-Sent Events stream for live exists change events. Sends an init event with recent history on connect, then pushes new events as they arrive. Sends a ping every 25 seconds to keep the connection alive.
SSE stream. Init event: { type: 'init', events: [...], count: number }. Live event: { type: 'event', ... }. Keepalive: { type: 'ping' }