Discover/Reserved API
live

Reserved APIreserved.com

Access Reserved.com's full product catalog, category tree, keyword search, detailed product info, and in-store stock availability via 6 structured endpoints.

Endpoints
6
Updated
2mo ago

What is the Reserved API?

The Reserved.com API exposes 6 endpoints covering the full shopping experience on reserved.com, including category discovery, paginated product listings, keyword search, and per-SKU detail pages. The list_products endpoint supports filtering by size, color, and price range in HUF, while check_store_availability returns physical store stock status for a given product and size ID. Data covers Reserved Hungary's catalog with fields like SKU, pricing, color options, features, and ratings.

Try it

No input parameters required.

api.parse.bot/scraper/0216d37e-57d9-471f-9b8b-dc6e4c2e809f/<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/0216d37e-57d9-471f-9b8b-dc6e4c2e809f/get_homepage' \
  -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 reserved-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.

"""
Reserved Hungary API Client using Parse
Get your API key from: https://parse.bot/settings
"""

import os
import requests
from typing import Any, Optional


class ParseClient:
    """Client for interacting with Reserved Hungary API through Parse."""
    
    def __init__(self, api_key: Optional[str] = None):
        """Initialize the Parse client with API credentials."""
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "0216d37e-57d9-471f-9b8b-dc6e4c2e809f"
        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 api_key parameter."
            )
    
    def _call(self, endpoint: str, method: str = "POST", **params) -> dict:
        """Make API call to Parse endpoint."""
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        headers = {
            "X-API-Key": self.api_key,
            "Content-Type": "application/json"
        }
        
        if method == "GET":
            response = requests.get(url, headers=headers, params=params)
        elif method == "POST":
            response = requests.post(url, headers=headers, json=params)
        else:
            raise ValueError(f"Unsupported HTTP method: {method}")
        
        response.raise_for_status()
        return response.json()
    
    def get_homepage(self) -> dict:
        """Fetch the Reserved Hungary homepage information and promotional banners."""
        return self._call("get_homepage", method="GET")
    
    def list_categories(self) -> dict:
        """Return the full category tree with IDs, names, URLs, and nested children."""
        return self._call("list_categories", method="GET")
    
    def list_products(
        self,
        category_id: str,
        page: int = 0,
        limit: int = 200,
        sort_by: Optional[str] = None,
        min_price: Optional[int] = None,
        max_price: Optional[int] = None,
        colors: Optional[str] = None,
        sizes: Optional[str] = None
    ) -> dict:
        """
        List products in a given category with pagination and filtering.
        
        Args:
            category_id: Category ID from list_categories
            page: Zero-based page index (default: 0)
            limit: Number of results per page (default: 200)
            sort_by: Sort order ID
            min_price: Minimum price filter in HUF
            max_price: Maximum price filter in HUF
            colors: Comma-separated color slugs
            sizes: Comma-separated size slugs
        
        Returns:
            Product list with pagination info
        """
        params = {
            "category_id": category_id,
            "page": page,
            "limit": limit
        }
        
        if sort_by:
            params["sort_by"] = sort_by
        if min_price is not None:
            params["min_price"] = min_price
        if max_price is not None:
            params["max_price"] = max_price
        if colors:
            params["colors"] = colors
        if sizes:
            params["sizes"] = sizes
        
        return self._call("list_products", method="GET", **params)
    
    def search_products(
        self,
        query: str,
        page: int = 0,
        limit: int = 20
    ) -> dict:
        """
        Search for products across all categories.
        
        Args:
            query: Search keyword
            page: Zero-based page index (default: 0)
            limit: Number of results per page (default: 20)
        
        Returns:
            Search results from Algolia index
        """
        return self._call(
            "search_products",
            method="GET",
            query=query,
            page=page,
            limit=limit
        )
    
    def get_product_detail(self, sku: str) -> dict:
        """
        Fetch detailed product information by SKU.
        
        Args:
            sku: Product SKU (e.g., '334HK-00X')
        
        Returns:
            Detailed product information
        """
        return self._call("get_product_detail", method="GET", sku=sku)
    
    def check_store_availability(
        self,
        product_id: str,
        size_id: str,
        location: str = "Budapest"
    ) -> dict:
        """
        Check availability of a specific product size in physical stores.
        
        Args:
            product_id: Numeric product ID
            size_id: Numeric size ID
            location: City or location string (default: "Budapest")
        
        Returns:
            Availability status and store details
        """
        return self._call(
            "check_store_availability",
            method="POST",
            product_id=product_id,
            size_id=size_id,
            location=location
        )


def main():
    """Practical workflow demonstrating API usage."""
    client = ParseClient()
    
    print("=" * 60)
    print("Reserved Hungary API - Practical Workflow")
    print("=" * 60)
    
    # Step 1: Get homepage info
    print("\n1. Fetching homepage information...")
    homepage = client.get_homepage()
    if homepage.get("status") == "success":
        homepage_data = homepage.get("data", {})
        print(f"   Status: {homepage_data.get('status')}")
        print(f"   Title: {homepage_data.get('title')}")
        print(f"   Banners found: {len(homepage_data.get('banners', []))}")
    
    # Step 2: Get categories
    print("\n2. Fetching product categories...")
    categories_response = client.list_categories()
    categories_data = categories_response.get("data", {})
    categories = categories_data.get("categories", [])
    print(f"   Found {len(categories)} top-level categories")
    
    # Find Women's category
    women_category = None
    for cat in categories:
        if cat.get("system_name") == "WOMAN":
            women_category = cat
            break
    
    if women_category:
        print(f"   Women's category ID: {women_category.get('id')}")
        print(f"   Women's subcategories: {len(women_category.get('children', []))}")
    
    # Step 3: Search for a specific product
    print("\n3. Searching for 'ruha' (dress)...")
    search_response = client.search_products(query="ruha", limit=5)
    search_data = search_response.get("data", {})
    results = search_data.get("results", [])
    
    if results and results[0].get("hits"):
        hits = results[0]["hits"]
        print(f"   Found {results[0].get('nbHits')} total results")
        print(f"   Displaying {len(hits)} results on this page:")
        
        # Get details for first search result
        if hits:
            first_hit = hits[0]
            sku = first_hit.get("sku")
            product_name = first_hit.get("name")
            price = first_hit.get("final_price")
            
            print(f"\n4. Getting detailed info for: {product_name}")
            try:
                detail_response = client.get_product_detail(sku=sku)
                detail_data = detail_response.get("data", {})
                
                print(f"   SKU: {detail_data.get('sku')}")
                print(f"   Price: {detail_data.get('final_price')} HUF")
                print(f"   Available sizes: {', '.join(detail_data.get('sizes', []))}")
                
                description = detail_data.get("description", "")
                if description:
                    print(f"   Description: {description[:100]}...")
                
                features = detail_data.get("features", {})
                if features:
                    print(f"   Features:")
                    for feature_key, feature_values in list(features.items())[:2]:
                        print(f"      - {feature_key}: {', '.join(feature_values)}")
            except Exception as e:
                print(f"   Error fetching product details: {e}")
    
    # Step 5: List products from Women's category
    if women_category:
        print(f"\n5. Listing products from Women's category...")
        women_cat_id = women_category.get("id")
        products_response = client.list_products(
            category_id=women_cat_id,
            page=0,
            limit=3
        )
        products_data = products_response.get("data", {})
        products = products_data.get("products", [])
        total = products_data.get("productsTotalAmount", 0)
        
        print(f"   Total products in category: {total}")
        print(f"   Showing {len(products)} on this page:")
        
        for product in products:
            name = product.get("name")
            sku = product.get("sku")
            price = product.get("final_price", product.get("price"))
            has_discount = product.get("has_discount", False)
            
            discount_indicator = " (DISCOUNTED!)" if has_discount else ""
            print(f"   - {name} ({sku}): {price} HUF{discount_indicator}")
    
    print("\n" + "=" * 60)
    print("Workflow complete!")
    print("=" * 60)


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

Fetches the Reserved Hungary homepage information and promotional banner URLs extracted from the page.

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "url": "string homepage URL",
    "title": "string site title",
    "status": "string indicating site availability",
    "banners": "array of promotional and product page URLs found on the homepage"
  },
  "sample": {
    "data": {
      "url": "https://www.reserved.com/hu/hu/",
      "title": "Reserved Hungary",
      "status": "online",
      "banners": [
        "https://www.reserved.com/hu/hu/",
        "https://www.reserved.com/hu/hu/balloon-nadrag-modallal-2-938jj-01x",
        "https://www.reserved.com/hu/hu/borben-gazdag-papucs-623ie-99x"
      ]
    },
    "status": "success"
  }
}

About the Reserved API

Category and Product Discovery

Start with list_categories to retrieve the full category tree. Each category object includes an id, name, url, and nested children array, so you can traverse the hierarchy to find the category_id values needed by list_products. For example, category ID 239 maps to Women's. list_products accepts that ID along with optional filters: sizes (comma-separated slugs like s,m,l), colors, min_price, max_price (both in HUF), and sort_by. The response includes products (an array of summary objects with id, name, sku, price, images, sizes, and colorOptions), plus productsAmount and productsTotalAmount for pagination tracking.

Search and Product Detail

search_products accepts a query string and returns Algolia-backed results. The response structure mirrors Algolia's multi-index format: an array of result objects each containing hits, nbHits, nbPages, page, and query. Pagination is zero-based via the page parameter. For full product data, pass a SKU string to get_product_detail to retrieve description, a features object (mapping feature category names to arrays of values), final_price, regular_price, currency, color_options, and sizes. This endpoint is the appropriate source for sale pricing since it exposes both regular and final price fields.

Store Availability

check_store_availability takes a numeric product_id and size_id (both sourced from product detail or list responses) and an optional location string to target nearby stores. The response includes a boolean status and, when available, store detail objects. Note that the upstream service occasionally returns a Hungarian-language technical error (Technikai probléma); in those cases status will be false and a message field will be present. The get_homepage endpoint returns the site title, a status indicator, and an array of promotional banners URLs extracted from the homepage, useful for tracking active campaigns.

Reliability & maintenance

The Reserved API is a managed, monitored endpoint for reserved.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when reserved.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 reserved.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
  • Build a price comparison tool using final_price and regular_price fields to surface discounted Reserved items
  • Sync Reserved's product catalog into an internal database using list_categories and paginated list_products calls
  • Power a size-and-color filtered product feed by combining the sizes and colors params in list_products
  • Check real-time in-store stock for a specific SKU and size before recommending a store visit via check_store_availability
  • Implement keyword search across all Reserved categories using search_products with Algolia-backed hit counts
  • Track promotional campaign URLs over time by polling the banners array returned by get_homepage
  • Extract structured garment attributes from the features object in get_product_detail to enrich product metadata
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 Reserved.com have an official public developer API?+
Reserved does not publish a public developer API or API documentation. This Parse API provides structured access to Reserved Hungary's catalog data without requiring a developer account or API key from the retailer.
What does `list_products` return and how do I filter results?+
list_products returns an array of product summary objects per page, each containing id, name, sku, price, images, sizes, and colorOptions, along with productsAmount and productsTotalAmount. You can filter by passing sizes (e.g. s,m,l), colors, min_price, or max_price as optional parameters alongside the required category_id. Pagination is zero-based via the page parameter.
What happens when `check_store_availability` returns an error?+
If the availability service is temporarily unavailable, the endpoint returns status: false and a message field containing the Hungarian-language error string Technikai probléma. Your integration should handle this case by checking the status boolean before consuming store detail objects.
Does the API cover Reserved stores outside Hungary, such as Poland or Romania?+
The API is scoped to Reserved Hungary (reserved.com). Other country storefronts are not currently covered. You can fork this API on Parse and revise it to point at a different regional domain and add the corresponding endpoints.
Does the API return customer reviews or ratings for products?+
The get_product_detail endpoint includes rating data as part of the product detail response, but there is no endpoint that returns individual user reviews or review text. You can fork this API on Parse and revise it to add a dedicated reviews endpoint if that data is available on the product page.
Page content last updated . Spec covers 6 endpoints from reserved.com.
Related APIs in EcommerceSee all →
cel.ro API
cel.ro API
hardverapro.hu API
Search and browse tech products on Hungary's largest hardware marketplace, with specialized tools for finding GPUs and viewing detailed product information and seller profiles. Get access to listings across multiple categories, filter by specific hardware types, and discover seller details to make informed purchasing decisions.
cropp.com API
Browse Cropp's clothing catalog by searching for products, exploring categories, and viewing detailed product information. Retrieve current prices, discounts, and active promotions available across the store.
flanco.ro API
Access product listings, pricing, availability, promotions, customer reviews, and store information from Flanco.ro, Romania's leading electronics retailer. Search by keyword or browse the full category hierarchy to retrieve structured product data.
arukereso.hu API
Search and compare motherboards, batteries, and UPS systems on Arukereso.hu with real-time pricing, technical specifications, and customer reviews. Get detailed product information to make informed purchasing decisions across multiple categories.
rei.com API
Search and browse REI's full catalog of outdoor gear and clothing, compare detailed product specifications, check real-time store availability, and read customer reviews to find the perfect equipment for your adventures. Explore products by category or use targeted searches to discover gear that matches your needs, all with instant access to pricing and local stock information.
verkkokauppa.com API
Search and browse products from Verkkokauppa.com to find items across categories, check real-time prices and availability, read customer reviews, and discover deals in outlet and clearance sections. Filter products by your preferences and get detailed product information including specifications and store stock levels.
allegro.pl API
Search listings, browse categories, retrieve product details, and get autocomplete suggestions from Allegro.pl, Poland's largest e-commerce marketplace.