# Roblox Limited Item Price Scraper (`spry_frame/roblox-limited-scraper`) Actor

Tracks resale prices, recent average prices, and market data for Roblox Limited items using the public Roblox Economy API. No proxies or login required.

- **URL**: https://apify.com/spry\_frame/roblox-limited-scraper.md
- **Developed by:** [COSENT GROUP](https://apify.com/spry_frame) (community)
- **Categories:** Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 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/platform/actors/running/actors-in-store#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

## Roblox Limited Item Price Scraper

Pull real-time market data for Roblox Limited items using the public Roblox Economy API. No Roblox account, no proxies, and no browser automation required — this actor makes direct API calls and returns clean, structured data.

### What it returns

- **Recent Average Price (RAP)** — the rolling average of recent resale transactions. The standard valuation metric used by the trading community.
- **Lowest Ask** — the current cheapest listing available to buy right now.
- **ROI** — how much the item has appreciated since its original sale price (e.g. 101,701% means the item is worth 1,017× what it originally cost).
- **Market Cap** — RAP × total quantity in existence. Shows the total Robux value locked in all copies of an item.
- **Value Category** — Classic Limited (original Roblox-issued items with full RAP history) or UGC Limited (newer creator-made items).

> Results are sorted by RAP descending — the highest-value items appear first in your dataset.

### How to find items

You have two ways to specify which items to look up:

1. **Asset IDs** — paste asset IDs directly. Find an item's ID in the URL on the Roblox catalog: `roblox.com/catalog/21070012/...` → ID is `21070012`.
2. **Search Keywords** — enter terms like `dominus`, `sparkle time`, or `red fedora`. Each keyword is searched independently and returns up to 30 results per page (increase with **Max Pages Per Keyword**).

### Classic vs. UGC Limiteds

Roblox has two categories of Limited items:

- **Classic Limiteds** — original items issued directly by Roblox, with small fixed quantities and decades of trade history. These carry RAP, ROI, and market cap data. Examples: Dominus Empyreus, Sparkle Time Fedora, Korblox Deathspeaker.
- **UGC Limiteds** — newer creator-made items. Larger supplies, lower prices, no RAP history. Enable **Classic Limiteds Only** to exclude these.

### Example output

```json
{
  "assetId":            "21070012",
  "name":               "Dominus Empyreus",
  "valueCategory":      "Classic Limited",
  "isLimited":          "true",
  "isLimitedUnique":    "false",
  "totalQuantity":      "13",
  "originalPrice":      "13337",
  "recentAveragePrice": "13577229",
  "lowestResalePrice":  "618033988",
  "totalSales":         "108",
  "roi":                "101701%",
  "marketCap":          "176503977",
  "creatorName":        "Roblox",
  "assetType":          "Hat",
  "createdAt":          "2010-02-09T00:00:00Z",
  "catalogUrl":         "https://www.roblox.com/catalog/21070012",
  "scrapedAt":          "2026-08-01T00:03:12.702Z"
}
```

### Input fields

| Field | Type | Default | Description |
|---|---|---|---|
| `assetIds` | array | — | Roblox asset IDs to look up directly. |
| `keywords` | array | — | Search terms — each searched separately, up to 30 results/page. |
| `maxPagesPerKeyword` | integer | 1 | Pages of catalog results per keyword (30 items/page, max 5). |
| `classicOnly` | boolean | false | Skip UGC Limiteds; return only original Classic Limited items. |
| `maxItems` | integer | 0 | Cap total results returned (0 = no limit). |
| `includeNonLimited` | boolean | false | Return data for non-Limited items (useful for debugging IDs). |

### Tips for traders

- Compare **Lowest Ask** vs. **RAP**: when the lowest ask is significantly below RAP, the item may be underpriced relative to market consensus.
- **Market Cap** helps you gauge liquidity: a small-quantity item with high RAP will have a very different market character than one with thousands of copies.
- Schedule this actor to run daily and compare results over time to track which items are appreciating.
- Use **Max Pages Per Keyword** set to 3–5 to pull a wider catalog view when scanning an entire category.

### Rate limits & fair use

This actor uses the public Roblox Economy API with a 300ms delay between requests. Roblox does not publish official rate limits for these endpoints. Running large batches (500+ items) is generally fine; avoid running multiple concurrent instances against the same endpoints.

# Actor input Schema

## `assetIds` (type: `array`):

Roblox asset IDs to look up directly. Find the ID in the URL on the catalog page: roblox.com/catalog/21070012/...

## `keywords` (type: `array`):

Search terms to find Limited items by name. Each keyword is searched separately — e.g. \['dominus', 'korblox'] returns up to 30 results per keyword (more with Max Pages).

## `maxPagesPerKeyword` (type: `integer`):

How many pages of catalog results to fetch per keyword (30 items per page). Default 1 = up to 30 items per keyword. Max 5 = up to 150 per keyword.

## `classicOnly` (type: `boolean`):

If enabled, skips newer UGC limited items and only returns original Roblox Limited items (the high-value ones with RAP and ROI data).

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

Maximum number of items to return (0 = no limit).

## `includeNonLimited` (type: `boolean`):

If enabled, returns data for all provided asset IDs even if they are not Limited items. Useful for debugging asset IDs.

## Actor input object example

```json
{
  "assetIds": [
    21070012,
    48545806,
    1285307
  ],
  "keywords": [],
  "maxPagesPerKeyword": 1,
  "classicOnly": false,
  "maxItems": 0,
  "includeNonLimited": false
}
```

# Actor output Schema

## `assetId` (type: `string`):

Roblox asset ID.

## `name` (type: `string`):

Name of the Roblox item.

## `valueCategory` (type: `string`):

Classic Limited (original high-value items with RAP) or UGC Limited (newer creator items).

## `isLimited` (type: `string`):

Whether the item is a Limited (true/false).

## `isLimitedUnique` (type: `string`):

Whether the item is a Limited U (serial-numbered, true/false).

## `totalQuantity` (type: `string`):

Total number of copies of this item in existence.

## `originalPrice` (type: `string`):

Price in Robux when the item was first sold.

## `recentAveragePrice` (type: `string`):

Recent Average Price — the rolling average of recent resale transactions. The primary valuation metric for Classic Limiteds.

## `lowestResalePrice` (type: `string`):

Current lowest asking price from active resellers.

## `totalSales` (type: `string`):

Number of times this item has ever been sold.

## `roi` (type: `string`):

Return on investment vs original price using RAP. e.g. 101701% means the item is worth 1,017x its original price.

## `marketCap` (type: `string`):

Total market value of all copies: RAP × Total Quantity. Indicates the overall size of this item's market.

## `creatorName` (type: `string`):

Name of the item creator or brand (e.g. Roblox).

## `assetType` (type: `string`):

Type of asset (e.g. Hat, Gear, HairAccessory).

## `createdAt` (type: `string`):

Date the item was originally created.

## `catalogUrl` (type: `string`):

Link to the item on the Roblox catalog.

## `scrapedAt` (type: `string`):

Timestamp when this data was collected.

# 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 = {
    "assetIds": [
        21070012,
        48545806,
        1285307
    ],
    "keywords": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("spry_frame/roblox-limited-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 = {
    "assetIds": [
        21070012,
        48545806,
        1285307,
    ],
    "keywords": [],
}

# Run the Actor and wait for it to finish
run = client.actor("spry_frame/roblox-limited-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "assetIds": [
    21070012,
    48545806,
    1285307
  ],
  "keywords": []
}' |
apify call spry_frame/roblox-limited-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=spry_frame/roblox-limited-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/mAkHXwxVqWgAgS3Jc/builds/TwseMPRGMWI6wWcir/openapi.json
