Its Fake Site ? ⚠️

Free · No Sign-up Required

"HOME" Furniture Fake Store —
A Practice Target for Web Scraping, REST API & Browser Automation

A realistic fake e-commerce site built as a safe, free, and always-resettable target for developers and learners to scrape, working with API, browser automation tasks. No real money, no real data — just a fully working shop you can poke, scrape, learning API and testing without consequences.

  • 4 catalog loading modes — SSR, AJAX HTML injection, AJAX JSON, Infinite Scroll
  • Full REST API with Token auth, JWT auth Bearer & OAuth 2.0
  • Full REST API with filtering, sorting, pagination, carts, orders
  • Real database with sessions, auth, user accounts, cart, and orders
  • All actions can be performed through the browser interface or as a scraping bot or API requests.
  • Scraping trap layer — bot detection with educational X-Scraping-* headers, honeypots, rate limits, and hidden traps on every HTML response
  • Supports HTTP/1.1 and HTTP/2
  • Server state resets daily at midnight UTC — always fresh data to practise on
  • And for real 🦖, SOAP 1.1 API
370+ Products 12 Categories 4 Catalog Loading Variants 21 API Endpoints Token & JWT Auth REST API SOAP OAuth 2.0 100% Free No Sign-up to Browse

What you can practise here

🔌 REST API

A full DRF-powered REST API with Token and JWT authentication, filtering, sorting, pagination, and an auto-generated Swagger UI.
Complete API coverage for all site features!

  • Public endpoints — products & categories, no auth needed
  • Token auth and JWT (SimpleJWT) — both work simultaneously
  • Cart & orders — authenticated CRUD operations
  • Filter by category, price range, discount; sort by price or name
  • Full schema at /api/schema/ · UI at /api/docs/
Open Swagger UI

🕷 HTML/AJAX Scraping

Parse server-rendered pages, handle AJAX-loaded content, walk pagination, and extract structured data-* attributes — with traps and bot detection built in.
Try logging in and working with sessions, cookies, and authenticated content such as user profiles, orders, and shopping carts.

  • Classic SSR catalog — standard requests + BS4
  • AJAX HTML injection — scrape the /partial/ endpoint directly
  • AJAX JSON — consume the /json/ endpoint like an API
  • Infinite scroll — simulate IntersectionObserver with Selenium or Playwright
  • Product cards carry data-product-id, data-price, data-category
  • User Profile — Create, Change, Load Image, manage carts, make and see orders.
Open Catalog

🤖 Browser Automation

A fully interactive site with AJAX content and dynamic DOM updates — an ideal target for Selenium and Playwright workflows.

  • Log in, navigate, and interact with forms in a headless browser
  • Trigger category filters and sort dropdowns by clicking
  • Load products via Infinite Scroll — scroll until no new cards appear
  • End-to-end workflow: register → add to cart → place an order
  • Practice waiting for AJAX responses and dynamic DOM changes
Open Infinite Scroll

🔐 OAuth 2.0 & API Authentication

Practise the full OAuth 2.0 Authorization Code flow with PKCE: register an application, request permissions, and approve access with a shop account. Follow the curl and Python examples in Swagger or try its built-in authorization flow.

  • Register a Client ID and callback URI in API Access
  • Exchange an authorization code using PKCE S256 and validate callback state
  • Explore scopes for cart, orders, and profile access
  • Refresh rotating tokens, revoke access, and handle expired tokens or missing scopes
  • Compare with Token authentication (Authorization: Token <token>) and Bearer JWT (Authorization: Bearer <jwt>)

📨 SOAP 1.1

Get a taste of legacy XML-based integrations alongside the REST API. Practise working with a SOAP service and its WSDL contract.

  • Discover operations and data types in the WSDL
  • Send XML envelopes and parse responses
  • Handle SOAP Faults when a request fails
Open SOAP Docs

👤 Your Practice Account

The shop is fictional, but your account is a real record in its database. Register through the website to practise a complete account workflow: sign in, edit your profile, manage your cart, and place demo orders tied to your user.

  • Explore browser sessions, cookies, CSRF protection, login, and logout
  • Use API Access to register OAuth 2.0 applications, choose allowed scopes, and manage applications authorized to access your account
  • You can also create the same kind of account with POST /api/users/register/ and use its credentials to sign in on the website
  • Managing OAuth 2.0 applications requires a website login: an API Token or Bearer JWT does not sign your browser in

Use fictional details for practice. Accounts and their carts, orders, and OAuth access are cleared by the daily reset at midnight UTC, so be ready to register again.

Use only made-up (fake) details to create an account. No one here needs your real personal information.

🪤 Scraping Traps & Detection Layer

Every HTML response carries X-Scraping-* headers with a live analysis of your request — confidence level, detected signals, and a human-readable hint that explains what each trap does. The server never blocks without explaining why.

Always active

  • Honeypot form field — invisible to humans, bots fill it?
  • Hidden product cards — never a real product
  • HTML comment with signals in every bot response
  • And others — be attentive!

Bot-tier (medium / high confidence)

  • Rate limit 429 with Retry-After and X-Scraping-Block-Reason
  • Pagination loop — try not catched!
  • Fake login success — verify auth with GET /api/users/profile/ maybe help you?
  • Swapped prices & rotated CSS class names in catalog HTML O_o

Educational headers on every response

  • X-Scraping-Confidence — clean / low / medium / high
  • X-Scraping-Signals — what triggered detection
  • X-Scraping-Hint — how to fix the detected issue
Full explanation with code examples, scroll down that page: 📚 Exercises & Explanations →

Please also see the "Terms of Use and Educational Purpose" to understand the platform's purpose, educational value, and what it actually serves.

Quick Start

Scrape the first page of products:

import requests
from bs4 import BeautifulSoup

url = "https://apilearn.tukas.dev/catalog/all/"
soup = BeautifulSoup(requests.get(url).text, "html.parser")

for card in soup.select("[data-product-id][data-category]"):
    print(
        card["data-product-id"],
        card["data-category"],
        card["data-price"],
    )

Call the JSON API (no auth required):

import requests

base = "https://apilearn.tukas.dev/api"

# Get all products, page 1
r = requests.get(f"{base}/products/")
data = r.json()

print(data["count"], "total products")
for p in data["results"]:
    print(p["name"], p["sell_price"])

Not sure where to begin?

The Exercises & Explanations page has several quick examples, plus a link to tukas.dev — a full learning platform with structured courses that practise against this site's own API.

📚 Go to Exercises