Discover/Game API
live

Game APIgame.co.za

Search Game.co.za products by name. Returns prices, stock status, brand, ratings, and image URLs for South Africa's major retail chain.

This API takes change requests — .
Endpoints
1
Updated
6d ago

What is the Game API?

The Game.co.za API gives programmatic access to product listings from one of South Africa's largest general merchandise retailers. A single endpoint, search_products, returns up to 10 structured fields per product — including price, brand, stock status, rating, and review count — across paginated result sets that can return up to 100 items per page.

This call costs1 credit / call— charged only on success
Try it
Page number for pagination (1-based).
Search query text for finding products (e.g. 'samsung', 'laptop', 'washing machine').
Number of results per page, between 1 and 100.
api.parse.bot/scraper/1b9ac293-18b9-4a82-812b-21665d25555b/<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 POST 'https://api.parse.bot/scraper/1b9ac293-18b9-4a82-812b-21665d25555b/search_products' \
  -H 'X-API-Key: $PARSE_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{}'
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 game-co-za-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.

"""
Game South Africa Product Search API - Parse Client
Search for products on Game.co.za with pagination support.
Get your API key from: https://parse.bot/settings
"""

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


@dataclass
class Product:
    """Represents a product from Game.co.za"""
    code: str
    name: str
    price: float
    formatted_price: str
    currency: str
    image_url: str
    brand: str
    in_stock: bool
    rating: Optional[float]
    review_count: Optional[int]

    def __str__(self) -> str:
        stock_status = "✓ In Stock" if self.in_stock else "✗ Out of Stock"
        rating_str = f"⭐ {self.rating} ({self.review_count} reviews)" if self.rating else "No ratings"
        return f"{self.name}\n  Brand: {self.brand}\n  Price: {self.formatted_price}\n  {stock_status}\n  {rating_str}"


class ParseClient:
    """Client for Game South Africa Product Search API"""

    def __init__(self, api_key: Optional[str] = None):
        """Initialize the Parse API client
        
        Args:
            api_key: API key for authentication. If not provided, reads from PARSE_API_KEY env var.
        """
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "1b9ac293-18b9-4a82-812b-21665d25555b"
        self.api_key = api_key or os.getenv("PARSE_API_KEY")
        
        if not self.api_key:
            raise ValueError("API key must be provided or set in PARSE_API_KEY environment variable")

    def _call(self, endpoint: str, method: str = "POST", **params) -> Dict[str, Any]:
        """Make an API call to the Parse bot
        
        Args:
            endpoint: The endpoint name (e.g., "search_products")
            method: HTTP method ("GET" or "POST")
            **params: Query/body parameters
            
        Returns:
            API response as dictionary
        """
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        headers = {
            "X-API-Key": self.api_key,
            "Content-Type": "application/json"
        }

        try:
            if method.upper() == "GET":
                response = requests.get(url, headers=headers, params=params, timeout=30)
            else:  # POST
                response = requests.post(url, headers=headers, json=params, timeout=30)
            
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            print(f"API Error: {e}")
            raise

    def search_products(self, query: str, page: int = 1, page_size: int = 20) -> Dict[str, Any]:
        """Search for products by name on Game.co.za
        
        Args:
            query: Search query text (e.g., 'samsung', 'laptop')
            page: Page number for pagination (1-based, default: 1)
            page_size: Number of results per page, 1-100 (default: 20)
            
        Returns:
            Dictionary containing search results with products list
        """
        return self._call("search_products", method="POST", query=query, page=page, page_size=page_size)


def main():
    """Practical workflow example: Search for products and analyze results"""
    
    # Initialize the client
    client = ParseClient()
    
    # Practical use case: Find all Samsung products across multiple pages
    search_query = "samsung"
    print(f"\n🔍 Searching for '{search_query}' on Game.co.za...\n")
    
    all_products: List[Product] = []
    pages_to_check = 2  # Check first 2 pages
    
    for page_num in range(1, pages_to_check + 1):
        print(f"📄 Fetching page {page_num}...")
        
        try:
            # Search with pagination
            results = client.search_products(
                query=search_query,
                page=page_num,
                page_size=10  # Get 10 results per page for demo
            )
            
            # Parse results
            total_results = results.get("total_results", 0)
            total_pages = results.get("total_pages", 0)
            products_data = results.get("products", [])
            
            if not products_data:
                print(f"  No more products found.")
                break
            
            print(f"  Found {len(products_data)} products on this page")
            print(f"  Total results available: {total_results} across {total_pages} pages\n")
            
            # Convert to Product objects for easier handling
            for product_data in products_data:
                product = Product(
                    code=product_data.get("code"),
                    name=product_data.get("name"),
                    price=product_data.get("price", 0),
                    formatted_price=product_data.get("formatted_price"),
                    currency=product_data.get("currency"),
                    image_url=product_data.get("image_url"),
                    brand=product_data.get("brand"),
                    in_stock=product_data.get("in_stock", False),
                    rating=product_data.get("rating"),
                    review_count=product_data.get("review_count")
                )
                all_products.append(product)
        
        except Exception as e:
            print(f"  Error fetching page {page_num}: {e}")
            break
    
    # Analysis: Find best deals and in-stock items
    print("\n" + "="*60)
    print("📊 ANALYSIS RESULTS")
    print("="*60)
    
    if all_products:
        # In-stock products
        in_stock = [p for p in all_products if p.in_stock]
        print(f"\n✓ In-stock products: {len(in_stock)}/{len(all_products)}")
        
        # Products with ratings
        rated_products = [p for p in all_products if p.rating is not None]
        print(f"⭐ Products with ratings: {len(rated_products)}/{len(all_products)}")
        
        if rated_products:
            # Find highest rated
            top_rated = max(rated_products, key=lambda x: x.rating)
            print(f"\n🏆 Highest Rated Product:")
            print(f"  {top_rated.name}")
            print(f"  Rating: {top_rated.rating} stars ({top_rated.review_count} reviews)")
            print(f"  Price: {top_rated.formatted_price}")
        
        # Find cheapest in-stock
        if in_stock:
            cheapest = min(in_stock, key=lambda x: x.price)
            print(f"\n💰 Cheapest In-Stock Product:")
            print(f"  {cheapest.name}")
            print(f"  Price: {cheapest.formatted_price}")
            print(f"  Brand: {cheapest.brand}")
        
        # Price range
        prices = [p.price for p in all_products]
        print(f"\n💵 Price Range:")
        print(f"  Lowest: R{min(prices):,.2f}")
        print(f"  Highest: R{max(prices):,.2f}")
        print(f"  Average: R{sum(prices)/len(prices):,.2f}")
        
        # Brand breakdown
        brands = {}
        for product in all_products:
            brands[product.brand] = brands.get(product.brand, 0) + 1
        
        print(f"\n🏢 Top Brands Found:")
        for brand, count in sorted(brands.items(), key=lambda x: x[1], reverse=True)[:5]:
            print(f"  {brand}: {count} products")
    else:
        print("No products found in the search results.")


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

Search for products by name on Game.co.za. Returns paginated results with product name, price, image URL, brand, stock status, and ratings.

Input
ParamTypeDescription
pageintegerPage number for pagination (1-based).
queryrequiredstringSearch query text for finding products (e.g. 'samsung', 'laptop', 'washing machine').
page_sizeintegerNumber of results per page, between 1 and 100.
Response
{
  "type": "object",
  "fields": {
    "query": "string",
    "products": "array of product objects with code, name, price, formatted_price, currency, image_url, brand, in_stock, rating, review_count",
    "page_size": "integer",
    "total_pages": "integer",
    "current_page": "integer",
    "total_results": "integer"
  },
  "sample": {
    "query": "samsung",
    "products": [
      {
        "code": "000000000000646956",
        "name": "ONE FOR ALL Samsung TV Remote CON000203",
        "brand": "ONE FOR ALL",
        "price": 399,
        "rating": null,
        "currency": "ZAR",
        "in_stock": true,
        "image_url": "https://api-beta-game.walmart.com/medias/Default-Product-Default-WF-null?context=bWFzdGVyfHByb2Nlc3NlZH...",
        "review_count": null,
        "formatted_price": "R399.00"
      },
      {
        "code": "000000000000824678",
        "name": "SAMSUNG SAMSUNG FRONT L 8kg WW80T3040BS/FA",
        "brand": "SAMSUNG",
        "price": 5999,
        "rating": 4.5,
        "currency": "ZAR",
        "in_stock": true,
        "image_url": "https://api-beta-game.walmart.com/medias/Default-Product-Default-WF-null?context=bWFzdGVyfHByb2Nlc3NlZH...",
        "review_count": 40,
        "formatted_price": "R5,999.00"
      }
    ],
    "page_size": 5,
    "total_pages": 45,
    "current_page": 1,
    "total_results": 222
  }
}

About the Game API

What the API Returns

The search_products endpoint accepts a query string (for example, 'samsung', 'laptop', or 'washing machine') and returns a paginated list of matching products from Game.co.za. Each product object in the products array includes: code (the product's unique identifier), name, price (numeric), formatted_price (currency-formatted string), currency, image_url, brand, in_stock (boolean), rating, and review_count. This covers the full snapshot of what a shopper sees on a standard search results page.

Pagination and Query Parameters

Results are controlled by three inputs: query (required), page (1-based integer), and page_size (integer between 1 and 100). The response always includes total_results, total_pages, and current_page alongside the product array, making it straightforward to iterate through large result sets programmatically. For a query like 'television', you can retrieve up to 100 products per call and walk through subsequent pages until current_page equals total_pages.

Coverage and Scope

Game.co.za carries a wide range of categories including electronics, appliances, furniture, gaming hardware, and home goods. The API reflects whatever Game.co.za surfaces in its search results for a given query, including price and stock availability at time of request. All monetary values are in South African Rand (ZAR). The API does not require any account or login to retrieve results.

Reliability & maintenance

The Game API is a managed, monitored endpoint for game.co.za — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when game.co.za 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 game.co.za 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
  • Track price movements on electronics like laptops and TVs across multiple queries over time using the price field.
  • Build a stock alert system that monitors in_stock status for specific products by polling the search_products endpoint.
  • Aggregate rating and review_count data across product categories to compare consumer sentiment on brands available in South Africa.
  • Populate a product comparison tool for South African shoppers using name, formatted_price, brand, and image_url fields.
  • Feed a price comparison site covering ZAR-denominated retail by extracting price and currency from search results.
  • Audit brand presence on Game.co.za by querying brand names and counting returned product listings.
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 Game.co.za have an official developer API?+
Game.co.za does not publish an official public developer API or documented data feed for third-party use.
What does search_products return for out-of-stock items?+
The endpoint returns all matching products regardless of availability. The in_stock boolean field distinguishes available products from unavailable ones, so you can filter client-side rather than getting only in-stock results.
Does the API return product detail pages, descriptions, or specifications?+
Not currently. The API returns search-result-level data: name, price, brand, stock status, rating, review count, and image URL. Individual product descriptions, full specification sheets, and seller information are not included in the current response. You can fork this API on Parse and revise it to add a product detail endpoint.
Can I filter search results by category, price range, or brand?+
The search_products endpoint accepts a free-text query and pagination parameters only. Category, price-range, and brand filters are not current inputs. You can fork the API on Parse and revise it to add those filter parameters.
How fresh is the pricing data returned by the API?+
Prices and stock status reflect Game.co.za's listings at the time each request is made. Game.co.za can update prices at any time, so for time-sensitive applications you should re-query rather than cache results for extended periods.
Page content last updated . Spec covers 1 endpoint from game.co.za.
Related APIs in EcommerceSee all →
walmart.com API
Retrieve product data from Walmart.com including pricing, descriptions, availability, reviews, and category listings. Access real-time product information to search by keyword, look up items by ID or URL, and browse department categories.
homedepot.com API
Search and browse Home Depot's product catalog to compare pricing, check real-time availability, and review detailed product specifications. Find products across all categories, look up store locations and hours, and check fulfillment options including in-store pickup and delivery.
ikea.com API
Search and browse IKEA's full product catalog to find items by category, compare measurements, read customer reviews, and check real-time store availability and current deals. Discover new arrivals and best-selling products to help you shop smarter and find exactly what you need.
amazon.co.uk API
Access data from amazon.co.uk.
idealo.de API
Search for products on Idealo.de and retrieve detailed information including current seller offers, price history, technical specifications, and user and expert reviews. Compare prices across sellers and access comprehensive product data to evaluate deals.
target.com API
Search for products across Target's catalog and instantly check real-time in-store availability at nearby Target locations using your zipcode. Find exactly what you're looking for and discover which stores have it in stock, so you can shop smarter and faster.
amazon.fr API
Scrape product data from Amazon.fr, including search results, product details, specifications, seller offers, customer reviews, and current deals.
element14.com API
Search and browse Newark (element14)'s electronic components catalog to find product details, pricing, stock levels, and technical documentation. Retrieve specifications, explore categories and manufacturers, and access real-time inventory information to compare components.