Discover/Playerok API
live

Playerok APIplayerok.com

Access Playerok game marketplace data: in-game items, accounts, donations, and services. Filter by game, category, sort, and paginate with 5 endpoints.

Endpoints
5
Updated
2mo ago

What is the Playerok API?

The Playerok API provides structured access to the playerok.com gaming marketplace through 5 endpoints covering product listings, game search, category browsing, and featured items. The list_items endpoint lets you filter the marketplace by game or category, returning price, seller rating, and pagination cursors. You can also fetch detailed product data via get_item, discover games with search_games, and surface promoted listings using get_top_items.

Try it
Number of items per page (max 50)
Pagination cursor from page_info.end_cursor of previous response
Game UUID to filter by (e.g., '1ecc48ce-4f17-6e23-6b8a-fa42990d44fb' for Genshin Impact). Use search_games to find IDs.
Game slug to filter by (e.g., 'genshin-impact'). Will be auto-resolved to game_id. Prefer game_id for efficiency.
Sort field (e.g., 'price', 'createdAt')
Category slug to filter by (e.g., 'coins'). Used with game_slug for auto-resolution.
Sort direction: ASC or DESC
Game category UUID to filter by (e.g., '1ecc48ce-52cb-6260-00d0-cfdb37fa1032' for Crystals). Use search_games to find category IDs.
api.parse.bot/scraper/4688010c-bf13-44a2-bef6-4db5e643b286/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/4688010c-bf13-44a2-bef6-4db5e643b286/list_items' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace playerok-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""
Playerok.com Gaming Marketplace API Client

Parse API integration for extracting product listings, game details, categories,
and featured items from playerok.com - a Russian gaming marketplace.

Get your API key from: https://parse.bot/settings
"""

import os
import requests
from typing import Optional, Dict, Any, List


class ParseClient:
    """Client for interacting with the Playerok.com Gaming Marketplace API via Parse."""

    def __init__(self, api_key: Optional[str] = None):
        """
        Initialize the Parse API client.

        Args:
            api_key: API key for Parse. If not provided, reads from PARSE_API_KEY env var.
        """
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "4688010c-bf13-44a2-bef6-4db5e643b286"
        self.api_key = api_key or os.getenv("PARSE_API_KEY")

        if not self.api_key:
            raise ValueError("API key not provided. Set PARSE_API_KEY environment variable or pass it as argument.")

    def _call(self, endpoint: str, method: str = "POST", **params) -> Dict[str, Any]:
        """
        Make a request to the Parse API.

        Args:
            endpoint: The endpoint name (e.g., 'list_items')
            method: HTTP method ('GET' or 'POST')
            **params: Parameters to pass to the endpoint

        Returns:
            Response data as dictionary

        Raises:
            requests.RequestException: If the API request fails
        """
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        headers = {
            "X-API-Key": self.api_key,
            "Content-Type": "application/json"
        }

        if method.upper() == "GET":
            response = requests.get(url, headers=headers, params=params, timeout=30)
        elif method.upper() == "POST":
            response = requests.post(url, headers=headers, json=params, timeout=30)
        else:
            raise ValueError(f"Unsupported HTTP method: {method}")

        response.raise_for_status()
        return response.json()

    def search_games(self, query: Optional[str] = None, game_type: Optional[str] = None, limit: int = 24) -> Dict[str, Any]:
        """
        Search for games by name or list games by type.

        Args:
            query: Search query to filter games by name (e.g., 'Genshin')
            game_type: Filter by game type: GAME, MOBILE_GAME, or APPLICATION
            limit: Number of games to return (max 50)

        Returns:
            Dictionary containing games list and total count
        """
        params = {"limit": min(limit, 50)}
        if query:
            params["query"] = query
        if game_type:
            params["game_type"] = game_type

        return self._call("search_games", method="GET", **params)

    def list_categories(self, limit: int = 24) -> Dict[str, Any]:
        """
        List all marketplace categories.

        Args:
            limit: Number of categories to return (max 50)

        Returns:
            Dictionary containing categories list and total count
        """
        return self._call("list_categories", method="GET", limit=min(limit, 50))

    def list_items(
        self,
        game_id: Optional[str] = None,
        game_category_id: Optional[str] = None,
        game_slug: Optional[str] = None,
        category_slug: Optional[str] = None,
        limit: int = 24,
        cursor: Optional[str] = None,
        sort_field: Optional[str] = None,
        sort_direction: str = "ASC"
    ) -> Dict[str, Any]:
        """
        List products/items with filtering by game, category, sorting, and pagination.

        Args:
            game_id: Game UUID to filter by
            game_category_id: Game category UUID to filter by
            game_slug: Game slug to filter by (e.g., 'genshin-impact')
            category_slug: Category slug to filter by (e.g., 'coins')
            limit: Number of items per page (max 50)
            cursor: Pagination cursor from page_info.end_cursor
            sort_field: Sort field (e.g., 'price', 'createdAt')
            sort_direction: Sort direction: ASC or DESC

        Returns:
            Dictionary containing products list, total count, and pagination info
        """
        params = {"limit": min(limit, 50), "sort_direction": sort_direction}

        if game_id:
            params["game_id"] = game_id
        if game_category_id:
            params["game_category_id"] = game_category_id
        if game_slug:
            params["game_slug"] = game_slug
        if category_slug:
            params["category_slug"] = category_slug
        if cursor:
            params["cursor"] = cursor
        if sort_field:
            params["sort_field"] = sort_field

        return self._call("list_items", method="GET", **params)

    def get_item(self, slug: str) -> Dict[str, Any]:
        """
        Get detailed information about a single product by its slug.

        Args:
            slug: Product slug

        Returns:
            Dictionary containing detailed product information
        """
        return self._call("get_item", method="GET", slug=slug)

    def get_top_items(self, limit: int = 16) -> Dict[str, Any]:
        """
        Get featured/top products from the marketplace homepage.

        Args:
            limit: Number of top items to return (max 50)

        Returns:
            Dictionary containing top products list and total count
        """
        return self._call("get_top_items", method="GET", limit=min(limit, 50))


def main():
    """Practical workflow example: Search for Genshin Impact items and display details."""

    # Initialize client
    client = ParseClient()

    print("=" * 60)
    print("PLAYEROK GAMING MARKETPLACE API - PRACTICAL EXAMPLE")
    print("=" * 60)

    # Step 1: Search for Genshin Impact game
    print("\n1. Searching for 'Genshin Impact' game...")
    games_response = client.search_games(query="Genshin")
    games = games_response.get("games", [])

    if not games:
        print("No games found for 'Genshin'")
        return

    genshin = games[0]
    print(f"   Found: {genshin['name']} (ID: {genshin['id']})")
    print(f"   Game type: {genshin['type']}")
    print(f"   Categories available: {len(genshin.get('categories', []))}")

    # Step 2: List categories for reference
    print("\n2. Available marketplace categories:")
    categories_response = client.list_categories(limit=10)
    categories = categories_response.get("categories", [])
    for cat in categories[:5]:
        print(f"   - {cat['name']} ({cat['slug']})")

    # Step 3: List items for Genshin Impact, sorted by price
    print(f"\n3. Fetching Genshin Impact items (sorted by price, ascending)...")
    items_response = client.list_items(
        game_id=genshin['id'],
        limit=5,
        sort_field="price",
        sort_direction="ASC"
    )

    products = items_response.get("products", [])
    total_count = items_response.get("total_count", 0)
    page_info = items_response.get("page_info", {})

    print(f"   Total items in marketplace: {total_count}")
    print(f"   Showing: {len(products)} items")
    print(f"   Has next page: {page_info.get('has_next_page', False)}")

    # Step 4: Display item details and get full info for first item
    if products:
        print("\n4. Featured items from Genshin Impact:")
        first_item = products[0]

        for i, item in enumerate(products[:3], 1):
            seller = item.get("seller", {})
            price = item.get("price", "N/A")
            category = item.get("category", {})

            print(f"\n   Item {i}: {item['name']}")
            print(f"   Price: {price}₽ (Original: {item.get('raw_price', 'N/A')}₽)")
            print(f"   Seller: {seller.get('username')} (Rating: {seller.get('rating')}, Reviews: {seller.get('testimonial_count')})")
            print(f"   Category: {category.get('name')}")
            print(f"   Status: {item.get('status')}")
            print(f"   Priority: {item.get('priority')}")

        # Step 5: Get detailed information about the first item
        print(f"\n5. Getting detailed information for first item...")
        try:
            detailed_item = client.get_item(first_item['slug'])

            print(f"   Product ID: {detailed_item.get('id')}")
            print(f"   Full description preview: {detailed_item.get('description', 'N/A')[:100]}...")

            attributes = detailed_item.get("attributes", {})
            if attributes:
                print(f"   Attributes: {attributes}")

            obtaining_type = detailed_item.get("obtaining_type", {})
            if obtaining_type:
                print(f"   Delivery method: {obtaining_type.get('name')}")
                print(f"   Description: {obtaining_type.get('description')}")

            images = detailed_item.get("images", [])
            if images:
                print(f"   Number of images: {len(images)}")
                print(f"   First image URL: {images[0].get('url', 'N/A')[:50]}...")

        except Exception as e:
            print(f"   Error getting item details: {e}")

    # Step 6: Get top featured items from marketplace
    print("\n6. Fetching top featured items from marketplace...")
    top_response = client.get_top_items(limit=5)
    top_items = top_response.get("products", [])

    print(f"   Top items count: {len(top_items)}")
    if top_items:
        for i, item in enumerate(top_items[:3], 1):
            game = item.get("game", {})
            seller = item.get("seller", {})
            print(f"\n   Top {i}: {item['name']}")
            print(f"   Game: {game.get('name')}")
            print(f"   Price: {item.get('price')}₽")
            print(f"   Seller: {seller.get('username')} (Rating: {seller.get('rating')})")

    print("\n" + "=" * 60)
    print("Example workflow completed successfully!")
    print("=" * 60)


if __name__ == "__main__":
    main()
All endpoints · 5 totalmissing one? ·

List products/items with filtering by game, category, sorting, and cursor-based pagination. Supports filtering by game_id/game_category_id directly, or by game_slug/category_slug (auto-resolved).

Input
ParamTypeDescription
limitintegerNumber of items per page (max 50)
cursorstringPagination cursor from page_info.end_cursor of previous response
game_idstringGame UUID to filter by (e.g., '1ecc48ce-4f17-6e23-6b8a-fa42990d44fb' for Genshin Impact). Use search_games to find IDs.
game_slugstringGame slug to filter by (e.g., 'genshin-impact'). Will be auto-resolved to game_id. Prefer game_id for efficiency.
sort_fieldstringSort field (e.g., 'price', 'createdAt')
category_slugstringCategory slug to filter by (e.g., 'coins'). Used with game_slug for auto-resolution.
sort_directionstringSort direction: ASC or DESC
game_category_idstringGame category UUID to filter by (e.g., '1ecc48ce-52cb-6260-00d0-cfdb37fa1032' for Crystals). Use search_games to find category IDs.
Response
{
  "type": "object",
  "fields": {
    "products": "array of product objects",
    "page_info": "object with has_next_page, end_cursor, has_previous_page, start_cursor",
    "total_count": "integer - total matching items"
  },
  "sample": {
    "products": [
      {
        "id": "1f112eb6-9925-6bd0-1bc2-4a33df1ce682",
        "game": {
          "name": "Genshin Impact"
        },
        "name": "💎 ЗА ПЕРВОЕ ПОПОЛНЕНИЕ x2 🔥 980+980 Кристаллов по UID",
        "slug": "4a33df1ce682-za-pervoe-popolnenie-x2-980-980-kristallov-po-uid",
        "price": 1149,
        "seller": {
          "id": "...",
          "rating": 4.9,
          "username": "RobloxAccMarket",
          "is_online": false,
          "testimonial_count": 735
        },
        "status": "APPROVED",
        "category": {
          "name": "Кристаллы",
          "slug": null
        },
        "priority": "PREMIUM",
        "image_url": "https://i.playerok.com/...",
        "raw_price": 2499,
        "created_at": "2026-02-26T08:17:05.000Z",
        "deals_count": null,
        "seller_type": "USER",
        "views_count": null,
        "approval_date": "2026-02-26T08:18:02.658Z",
        "fee_multiplier": 0.1
      }
    ],
    "page_info": {
      "end_cursor": "YXJyYXljb25uZWN0aW9uOjI=",
      "start_cursor": "YXJyYXljb25uZWN0aW9uOjA=",
      "has_next_page": true,
      "has_previous_page": false
    },
    "total_count": 551
  }
}

About the Playerok API

Browsing and Filtering Marketplace Listings

The list_items endpoint returns a paginated array of products alongside a page_info object containing has_next_page, end_cursor, has_previous_page, and start_cursor. Pass a game_id (UUID) or game_slug (e.g., genshin-impact) to scope results to a specific title. You can further narrow by game_category_id or category_slug (e.g., coins), and control order with sort_field (e.g., price, createdAt) and sort_direction (ASC or DESC). The endpoint accepts up to 50 results per page via the limit parameter. Passing a game_slug or category_slug instead of their UUID equivalents incurs an auto-resolution step; use the UUID forms when you already have them.

Single Product and Game Details

get_item accepts a product slug and returns the full detail record: UUID, name, price, raw_price (original pre-discount figure), status, images array with each image's id and url, a seller object with username, rating, and testimonial_count, and nested game and category objects. To look up which game UUIDs and category UUIDs are available for use in list_items, use search_games, which accepts a free-text query, an optional game_type filter (GAME, MOBILE_GAME, or APPLICATION), and a limit. Its response contains a games array and a total_count.

Categories and Featured Products

list_categories returns all top-level marketplace categories (examples include Донат, Аккаунты, Предметы, and Ключи) as an array with a total_count. These category slugs feed directly into the category_slug parameter of list_items. get_top_items returns a products array of homepage-promoted listings across all games, useful for surfacing high-visibility inventory without specifying any game filter.

Reliability & maintenance

The Playerok API is a managed, monitored endpoint for playerok.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when playerok.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official playerok.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Monitor price trends for in-game items on Playerok by polling list_items with sort_field=price for a specific game_id.
  • Build a game-specific deal finder that filters list_items by category_slug and sorts ascending by price to surface the cheapest listings.
  • Aggregate seller reputation data by reading the rating and testimonial_count fields from get_item responses across multiple products.
  • Display featured marketplace inventory on a gaming portal using get_top_items to pull the current set of promoted listings.
  • Resolve available game UUIDs and their associated category IDs with search_games before constructing filtered list_items queries.
  • Track listing status changes over time by periodically calling get_item for a set of known product slugs and comparing the status field.
  • Enumerate all available marketplace categories via list_categories to build a dynamic navigation or filter UI.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Playerok have an official public developer API?+
Playerok does not publish an official public developer API or documented REST/GraphQL interface for third-party use. This Parse API is the structured access layer.
How does pagination work in `list_items`?+
The response includes a page_info object with has_next_page and end_cursor. Pass end_cursor as the cursor parameter in the next request to advance through results. To walk backwards, use has_previous_page and start_cursor. Each page returns at most 50 items.
What is the difference between `price` and `raw_price` in `get_item`?+
price reflects the current listed price, while raw_price holds the original price before any discount or promotion. When the two values differ, the listing has a reduced price relative to its initial posting.
Does the API return seller transaction history or individual testimonial text?+
Not currently. The API exposes rating and testimonial_count on the seller object, but individual review text and transaction histories are not included in any endpoint response. You can fork this API on Parse and revise it to add an endpoint targeting seller-level detail pages.
Can I filter `list_items` by price range?+
Not currently. list_items supports sorting by price via sort_field and sort_direction, but there are no min_price or max_price filter parameters. You can fork this API on Parse and revise it to add price-range filtering if the underlying data supports it.
Page content last updated . Spec covers 5 endpoints from playerok.com.
Related APIs in MarketplaceSee all →
funpay.com API
Browse and monitor gaming marketplace listings and prices on FunPay.com. Search for games and categories, view current listings and pricing, explore the full game directory alphabetically, and look up seller profiles to research reputation and active offers.
g2a.com API
Search for game keys and get real-time pricing, seller ratings, and detailed product information from G2A's marketplace. Browse available categories and find the best deals on digital game licenses from verified sellers.
poki.com API
Discover and browse thousands of free online games with detailed information about genres, popularity, and platform compatibility. Find new games by exploring categories or searching through Poki's complete game catalog to access metadata and recommendations.
allkeyshop.com API
Search for games and compare CD key prices across multiple sellers to find the best deals, while tracking price history and viewing detailed store information. Get instant access to current game offers and pricing data to make informed purchasing decisions.
eldorado.com API
Search for in-game accounts and currency listings on Eldorado.gg, view seller profiles with reviews, and check offer details and pricing. Browse featured games, explore account inventories by game, and research seller history to make informed purchases on the marketplace.
rolimons.com API
Access real-time Roblox limited item market data, search and view player profiles and inventories, track recent trade advertisements, browse top games and player counts, and read the latest site articles — all through a single API.
store.steampowered.com API
Search Steam Store listings, fetch featured categories (specials, top sellers, new releases), and retrieve app details and user reviews by Steam AppID.
kinguin.net API
Search Kinguin's gaming catalog to find products, compare offers, and read user reviews, or browse trending games, bestsellers, and new releases. Get detailed product information to make informed purchasing decisions across their entire inventory.