Checkers APIcheckers.co.za ↗
Access Checkers grocery products, prices, promotions, categories, store locations, and popular searches via a structured JSON API covering South Africa.
What is the Checkers API?
The Checkers.co.za API provides structured access to South Africa's Checkers supermarket chain across 6 endpoints, covering product search, category browsing, product details, store lookup, and trending search terms. The get_product_details endpoint returns nutritional attributes, ingredient data, pricing in ZAR cents, and stock availability for individual products, making it practical for grocery price trackers, meal planners, and retail analytics tools.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/a7a3a4ba-dfb7-4476-9712-8753b2fb3140/list_categories' \ -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 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.
from parse_apis.checkers_south_africa_api import Checkers, Product, Category, Store, SearchTerm, ProductNotFound
checkers = Checkers()
# Discover popular search terms
for term in checkers.searchterms.list(limit=5):
print(term.term, term.count)
# Search for products by keyword
for product in checkers.products.search(query="milk", limit=5):
print(product.name, product.price_in_cents, product.is_stock_available)
# Browse the category tree
for category in checkers.categories.list(limit=3):
print(category.name, category.level)
# Get products within a specific category
appliances = checkers.category(id="67075e5eff987811364007e6")
for product in appliances.products(limit=3):
print(product.name, product.price, product.article_number)
# Get detailed product info by slug
detail = checkers.products.get(slug="clover-fresh-full-cream-milk-2l-10136729EA")
print(detail.name, detail.price_in_cents, detail.currency)
for attr in detail.attributes:
print(attr.name, attr.value)
# Find nearby stores
for store in checkers.stores.find(lat=-33.89, lng=18.56):
print(store.name, store.brand, store.identifier)
print(store.location.address.formatted_address)
Retrieve the full product department and category hierarchy as a tree structure. Returns all categories up to 3 levels deep (departments → categories → sub-categories). Each node includes its ID, name, level, and nested children. Use category IDs from this tree as input to get_category_products.
No input parameters required.
{
"type": "object",
"fields": {
"success": "boolean indicating successful response",
"errMessage": "string or null error message",
"displayCategoryTree": "array of category objects, each with id (string), name (string), level (integer 1-3), imageId (string or null), and nested displayCategories array"
},
"sample": {
"data": {
"success": true,
"errMessage": null,
"displayCategoryTree": [
{
"id": "67075e5eff987811364007e6",
"name": "Appliances",
"level": 1,
"imageId": "68c10a895946b5fb019520bd",
"displayCategories": [
{
"id": "67075e6cff987811364007f8",
"name": "Beauty Appliances",
"level": 2,
"imageId": "6822ea39fc590a403d0e4177",
"displayCategories": [
{
"id": "67075e6eff987811364007fa",
"name": "Clippers & Shavers",
"level": 3,
"imageId": null,
"displayCategories": null
}
]
}
]
}
]
},
"status": "success"
}
}About the Checkers API
Product and Category Data
The list_categories endpoint returns a hierarchical tree of departments and sub-categories up to 3 levels deep, with each node carrying an id, name, level, and imageId. Those id values feed directly into get_category_products, which accepts a category_id plus optional page (0-indexed) and limit parameters and returns paginated product arrays. Each product object includes priceWithoutDecimal (price in ZAR cents), currency, isStockAvailable, isOnPromotion, and an imageId for rendering thumbnails.
Search and Product Detail
search_products accepts a required query string alongside optional page and limit inputs and returns the same product shape plus a bonusBuys object containing active promotional offer details and a productsIds array. For deeper product data, get_product_details takes a URL slug and returns an attributes array of name/value pairs covering nutritional information and ingredients, multiple imageIds, a short description, and boolean flags for promotion and stock status.
Store Finder and Trending Terms
find_stores accepts a lat/lng coordinate pair and returns nearby store records. Each record includes the store's brand (CHECKERS, CHECKERS_HYPER, CHECKERS_LIQUORSHOP, or MEDIRITE), a location object with address and geolocation, a facilities array, a departments array, and a tradingTimes object with the weekly opening schedule. get_popular_searches requires no inputs and returns a ranked terms array where each entry includes the search term, its count, an optional productId, and an updatedOn timestamp.
The Checkers API is a managed, monitored endpoint for checkers.co.za — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when 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 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?+
- Build a grocery price tracker comparing
priceWithoutDecimalvalues across product categories over time. - Power a store locator app using
find_storeswith user coordinates to surface nearby branches and theirtradingTimes. - Monitor active promotions by polling
search_productsorget_category_productsfor products whereisOnPromotionis true. - Extract nutritional and ingredient data via
get_product_detailsattributes for meal planning or dietary filtering apps. - Analyze trending consumer interest in South African grocery categories using the ranked
termsfromget_popular_searches. - Populate a product catalog by walking
list_categoriesto enumerate all department IDs and then paginating throughget_category_products. - Identify which store brands (CHECKERS_HYPER vs CHECKERS_LIQUORSHOP) operate specific facilities near a given coordinate.
| 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 have an official public developer API?+
What does `get_product_details` return beyond basic price and name?+
attributes array of name/value pairs that covers nutritional information and ingredients, multiple imageIds for gallery rendering, a short description, isOnPromotion and isStockAvailable boolean flags, and the price as priceWithoutDecimal in ZAR cents. The slug input maps to the product's URL path on the Checkers site.How does pagination work across the product endpoints?+
search_products and get_category_products both accept a page parameter (0-indexed, so the first page is page 0) and a limit parameter controlling how many products are returned per call. There is no explicit total-count field in the response, so you iterate until a page returns fewer results than the requested limit.Does the API cover Checkers customer reviews or ratings for products?+
Is coverage limited to South Africa, and does it include all Checkers store brands?+
find_stores returns locations across South Africa only. The brand field distinguishes between CHECKERS, CHECKERS_HYPER, CHECKERS_LIQUORSHOP, and MEDIRITE outlets. Stores outside South Africa are not covered, as Checkers operates exclusively in that market.