Checkers APIproducts.checkers.co.za ↗
Access Checkers South Africa product data via API: search, browse by category, get specials, and retrieve full product details including prices and promotions.
What is the Checkers API?
This API covers 5 endpoints for querying the Checkers.co.za (Sixty60) product catalog, returning fields like name, price, description, images, barcodes, and promotion details. Use search_products to find items by keyword, get_specials to pull currently promoted products, or get_category_tree to navigate the full department hierarchy — all returning structured JSON you can integrate directly.
curl -X GET 'https://api.parse.bot/scraper/39122869-152e-40fc-908a-8756aa0ff69b/search_products?page=0&query=milk&page_size=20' \ -H 'X-API-Key: $PARSE_API_KEY'
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 products-checkers-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.
"""Walkthrough: Checkers South Africa SDK — search products, browse categories, find specials."""
from parse_apis.checkers_south_africa_api import Checkers, ProductNotFound
client = Checkers()
# Search for products by keyword — limit caps total items fetched.
for product in client.products.search(query="milk", limit=3):
print(product.name, f"R{product.price}", "PROMO" if product.is_on_promotion else "")
# Drill-down: get full details for one product via its slug.
item = client.products.search(query="bread", limit=1).first()
if item:
try:
detail = client.products.get(slug=item.slug)
print(detail.name, detail.price, detail.description[:80])
except ProductNotFound as exc:
print(f"Product gone: {exc}")
# Browse categories and list products within one.
cat = client.categories.list(limit=1).first()
if cat:
print(cat.name, cat.level)
for p in cat.products.browse(limit=3):
print(p.display_name, f"R{p.price}", "in-stock" if not p.out_of_stock else "out")
# Current specials / promotions.
for special in client.products.specials(limit=3):
print(special.name, f"R{special.discounted_price}", special.slug)
print("exercised: products.search / products.get / categories.list / category.products.browse / products.specials")
Full-text search across all products by keyword. Returns paginated results with comprehensive product data including name, price, description, images, barcodes, promotion status, and slug for detail lookups. Pagination is zero-indexed.
| Param | Type | Description |
|---|---|---|
| page | integer | Zero-indexed page number |
| queryrequired | string | Search keyword |
| page_size | integer | Number of items per page |
{
"type": "object",
"fields": {
"products": "array of product objects with name, price, description, images, barcodes, promotion info, and slug",
"totalCount": "integer total number of matching products"
},
"sample": {
"data": {
"products": [
{
"id": "5d3af63bf434cf8420737dd6",
"name": "Clover Fresh Full Cream Milk 2L",
"slug": "clover-fresh-full-cream-milk-2l-10136729EA",
"price": 37.99,
"barcodes": [
"6001299000270"
],
"currency": "ZAR",
"imageURL": "https://catalog.sixty60.co.za/files/69e72ca125e84dd8d97a0c76",
"displayName": "Clover Fresh Full Cream Milk 2L",
"articleNumber": "10136729",
"isOnPromotion": false,
"currencySymbol": "R",
"priceWithoutDecimal": 3799
}
],
"totalCount": 133
},
"status": "success"
}
}About the Checkers API
Search and Product Detail
The search_products endpoint accepts a required query string and optional page and page_size parameters (both zero-indexed) to paginate through results. Each product object in the products array includes the product name, price, description, images, barcodes, promotion status, and a slug field. That slug — formatted as name-articleNumber (e.g. clover-fresh-full-cream-milk-2l-10136729EA) — is the key input for get_product_details, which returns the full serverProduct object alongside serverBreadcrumbs for navigation context and a serverError boolean.
Category Browsing
get_category_tree returns the complete displayCategoryTree: a nested array of top-level departments, each with id, name, level, imageId, and nested displayCategories. Those category IDs feed directly into browse_category, which accepts a category_id string, plus optional page and page_size parameters, and returns a paginated list of products with the same field shape as search results — including totalCount so you can calculate page counts.
Specials and Promotions
get_specials returns products currently on promotion from Checkers' curated promotions page. The response includes the same core product fields plus bonusBuy details specific to promotional items, and a totalCount integer. This endpoint supports page and page_size for pagination, making it straightforward to retrieve the full promotions list in batches.
The Checkers API is a managed, monitored endpoint for products.checkers.co.za — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when products.checkers.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 products.checkers.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?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track price changes on specific Checkers products by polling
get_product_detailswith a product slug - Build a grocery comparison tool using
search_productsto retrieve current prices across items - Scrape the weekly promotions feed via
get_specialsto alert users to relevant deals - Map the full Checkers category hierarchy with
get_category_treefor building a navigation interface - Enumerate all products in a department using
browse_categorywith the category ID from the tree - Populate a product database with barcodes, descriptions, and images from
search_productsresults - Monitor
bonusBuypromotion details on featured items to track multi-buy discount structures
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 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.
Does Checkers.co.za have an official developer API?+
What does `get_product_details` return beyond what `search_products` provides?+
get_product_details returns the full serverProduct object, which includes product attributes and display categories not present in search results. It also returns serverBreadcrumbs — an array of navigation objects showing where the product sits in the category hierarchy — and a serverError boolean. You need the product's slug from a search or browse response to call this endpoint.Does `get_specials` return all promotion types, including multi-buy and loyalty card deals?+
bonusBuy details for applicable items. It does not currently distinguish between loyalty-card-only pricing, Xtra Savings member deals, or other tiered promotion structures — all qualifying promotions appear in a single list. You can fork the API on Parse and revise it to add an endpoint targeting a specific promotion type.Is store-level inventory or stock availability included in the response?+
How does pagination work across these endpoints?+
search_products, browse_category, and get_specials endpoints all use a zero-indexed page parameter alongside page_size to control result windows. Each response includes a totalCount integer so you can calculate the total number of pages for a given query or category.