takealot.com APItakealot.com ↗
Search Takealot products, fetch full product details, and read customer reviews via a structured JSON API. Covers pricing, stock, ratings, and variants.
curl -X GET 'https://api.parse.bot/scraper/d28b8d34-5170-465d-8ccf-d755cdeff4d4/search_products?page=1&sort=Relevance&limit=5&query=headphones' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed Python client. Install the CLI, sign in, then pull this API’s generated client:
pip install parse-sdk parse login parse add --marketplace takealot-com-api
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: Takealot SDK — search products, drill into details, read reviews."""
from parse_apis.Takealot_API import Takealot, Sort, ReviewSort, Rating, ProductNotFound
client = Takealot()
# Search for products sorted by top rated; limit caps total items fetched.
for product in client.product_summaries.search(query="headphones", sort=Sort.TOP_RATED, limit=5):
print(product.title, product.pretty_price, product.star_rating)
# Drill into the first search result for full details.
item = client.product_summaries.search(query="bluetooth speaker", limit=1).first()
if item:
detail = item.details()
print(detail.title, detail.price, detail.subtitle)
for cat in detail.categories:
print(" -", cat.name)
# Constructible: fetch a product directly by known ID, then read its reviews.
headphones = client.product(id=95575799).refresh()
print(headphones.title, headphones.star_rating, headphones.review_count)
for review in headphones.reviews.list(sort=ReviewSort.LATEST, rating=Rating.FIVE_STARS, limit=3):
print(review.customer_name, review.rating, review.date)
# Typed error handling: catch a not-found product.
try:
client.product(id=999999999).refresh()
except ProductNotFound as exc:
print(f"Product not found: {exc.product_id}")
print("exercised: product_summaries.search / details / product.refresh / reviews.list")
Search for products on Takealot by keyword. Returns paginated results with product summaries including price, rating, brand, and stock availability. Pagination is offset-based via the page parameter. Each page returns up to `limit` products.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-indexed). |
| sort | string | Sort order for search results. |
| limit | integer | Maximum number of products to return per page. |
| queryrequired | string | Search query string (e.g. 'headphones', 'samsung tv', 'running shoes'). |
{
"type": "object",
"fields": {
"page": "integer",
"query": "string",
"products": "array of product summaries with id, title, slug, brand, star_rating, review_count, price, listing_price, pretty_price, saving, in_stock, image_url",
"total_pages": "integer",
"total_results": "integer"
},
"sample": {
"data": {
"page": 1,
"query": "headphones",
"products": [
{
"id": 95575799,
"slug": "p9-wireless-bluetooth-headphones",
"brand": null,
"price": 117,
"title": "P9 Wireless bluetooth headphones",
"saving": "Up to 31%",
"in_stock": true,
"image_url": "https://media.takealot.com/covers_images/24013734c02844cd8d61c479c6b0aa5b/s-{size}.file",
"star_rating": 3.8,
"pretty_price": "From R 117",
"review_count": 586,
"listing_price": null
}
],
"total_pages": 642,
"total_results": 3206
},
"status": "success"
}
}About the takealot.com API
The Takealot API gives developers structured access to South Africa's largest online retailer through 3 endpoints covering product search, product detail, and customer reviews. The search_products endpoint returns paginated results with price, brand, star rating, and stock availability. The get_product endpoint exposes description HTML, image arrays, variant selectors, and category breadcrumbs. The get_reviews endpoint delivers per-review text, rating, author, date, and helpfulness upvotes.
Product Search
The search_products endpoint accepts a required query string (e.g. 'headphones', 'samsung tv') plus optional page, limit, and sort parameters. Each result in the products array includes id, title, slug, brand, star_rating, review_count, price, listing_price, pretty_price, saving, and in_stock. The response also returns total_results and total_pages so you can walk through all matching items with offset-based pagination.
Product Detail
get_product takes a product_id in either numeric form ('95575799') or PLID-prefixed form ('PLID95575799'), the format returned by search_products. The response includes title, subtitle, brand, price, images (array of URLs), in_stock, variants (selectors for size, colour, or other options), and an attributes object containing structured specification data like dimensions, material, or compatibility notes. Product IDs are interchangeable between endpoints.
Customer Reviews
get_reviews is paginated at 10 reviews per page and supports two optional filters: sort (helpfulness or recency) and rating (1–5 stars). Each review object in the reviews array contains uuid, rating, title, body, customer_name, date, time_after_purchase, upvotes, and variant_info — useful when a product has multiple variants and you want to know which one a reviewer actually bought. total_reviews and total_pages are included for full pagination.
The takealot.com API is a managed, monitored endpoint for takealot.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when takealot.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 takealot.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?+
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 Takealot products using the
priceandlisting_pricefields fromget_product. - Build a product comparison tool for South African electronics using
attributesandvariantsfromget_product. - Aggregate star rating distributions across a product category using
star_ratingandreview_countfromsearch_products. - Monitor stock availability (
in_stock) for high-demand items across search result pages. - Perform sentiment analysis on South African consumer reviews using the
bodyandratingfields fromget_reviews. - Build a review dashboard filtered by star rating using the
ratingfilter parameter inget_reviews. - Populate a product feed with images, pricing, and brand data using fields from both
search_productsandget_product.
| 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 | 250 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 Takealot have an official public developer API?+
What does get_reviews return and how can I filter it?+
uuid, rating, title, body, customer_name, date, time_after_purchase, upvotes, and variant_info. Use the optional rating parameter (1–5) to filter by star rating, and the sort parameter to order by helpfulness or recency.Does the API cover seller information or marketplace seller ratings?+
Can I retrieve a product's full category path?+
get_product returns category breadcrumbs as part of the product detail response, so you can reconstruct the category hierarchy for any product whose ID you have. Category-level browsing (listing all products within a category without a keyword search) is not currently covered. You can fork it on Parse and revise it to add a category-browse endpoint.