Takealot Scraper
Pricing
from $0.80 / 1,000 product listings
Takealot Scraper
Extract Takealot product prices, stock, ratings, seller offers, barcodes, and details from searches, categories, and product URLs.
Pricing
from $0.80 / 1,000 product listings
Rating
0.0
(0)
Developer
Cocoa Kit
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Share
Collect Takealot product prices, stock, ratings, and seller offers in a structured dataset. Start with search terms, category pages, brand filters, or direct product URLs. Export the results to JSON, CSV, or Excel, or connect them to your reporting tools through the Apify API.
Use fast listing mode to compare a large range of products. Enable full product details to add descriptions, barcodes, specifications, seller information, and other published offers.
What can you do with this scraper?
- Monitor prices and stock: Run scheduled collections and compare prices, discounts, and availability.
- Research product ranges: Search by keyword or browse departments, categories, and brands.
- Match products: Use Takealot product IDs, TSIN values, barcodes, and model numbers when available.
- Compare seller offers: Collect the selected offer and other offers shown on the product page.
- Build reports: Send results to spreadsheets, dashboards, or other tools with Apify integrations.
The scraper removes duplicate products across sources in the same run. It follows listing pagination and stops at your product or page limit. Prices are in South African rand (ZAR). No Takealot account is needed.
Quick start
- Enter one or more Search terms, such as
laptop. - Set Maximum products. Start with 50.
- Choose whether to Scrape full product details.
- Click Start and wait for the run to finish.
- Open the Products dataset to view or export your results.
Search for products
{"searchTerms": ["laptop", "wireless mouse"],"maxItems": 100,"maxPages": 5,"scrapeProductDetails": true}
Collect a category in listing mode
{"startUrls": [{ "url": "https://www.takealot.com/automotive/interior-accessories-25850" }],"maxItems": 100,"scrapeProductDetails": false}
Get one product with full details
{"startUrls": [{ "url": "https://www.takealot.com/playstation-5-slim-console-with-disc-drive-ps5-slim/PLID95228805" }],"maxItems": 1}
Browse by department or brand
{"categoryFilters": ["Type:13", "Brand:HP"],"maxItems": 100,"scrapeProductDetails": false}
Each filter entry starts a separate source. To use a combination of filters, supply a Takealot /all?filter=... listing URL. Department URLs such as https://www.takealot.com/computers also work. Listing URLs can include an after cursor to start from a later page.
Input options
Supply at least one source: searchTerms, categoryFilters, startUrls, keyword, or url.
| Input | Default | Description |
|---|---|---|
searchTerms | None | List of search terms. |
startUrls | None | Takealot product, search, department, category, or filtered listing URLs. Use objects with a url field, as shown in the examples. |
categoryFilters | None | One source per filter, such as Type:13, Category:25850, or Brand:HP. |
scrapeProductDetails | true | Add full product details. Direct product URLs always return full details. |
maxItems | 50 | Maximum unique products across all sources. Set 0 for no product limit. |
maxPages | 10 | Maximum listing pages per source. Applies even when maxItems is 0. |
imageSize | pdpxl | Image URL size: pdpxl, zoom, full, large, or small. |
sort | Relevance | Takealot sort name. A sort value in a listing URL takes priority. |
proxyConfiguration | Disabled | Optional Apify Proxy or custom proxy settings. |
maxConcurrency | 5 | Maximum requests in progress, from 1 to 20. |
maxRequestsPerMinute | 120 | Maximum request rate, from 1 to 600 per minute. |
maxRequestRetries | 3 | Retries after a request or response error, from 0 to 10. |
requestDelayMillis | 200 | Delay before each request, in milliseconds. |
requestTimeoutSecs | 45 | Network request timeout, from 10 to 180 seconds. |
keyword | None | Alternate input for one search term. A supplied url takes priority. |
url | None | Alternate input for one source URL. |
results_wanted | None | Alternate name for maxItems; takes priority when greater than 0. Set 0 to use maxItems. |
max_pages | None | Alternate name for maxPages; takes priority when supplied. |
Direct product URLs are processed first. When you use multiple listing sources, request completion order determines which products fill the shared limit. Each unique product has one source record in the output.
Output data
Each row represents one product. Fields are omitted when Takealot does not supply a valid value. Empty arrays mean that no entries were supplied. Listing prices can describe a range of options; full-detail price is the selected offer price.
| Group | Fields |
|---|---|
| Product identity | plid, productId, tsin, offerProductId, title, subtitle, slug, brand, url |
| Prices | price, priceMin, priceMax, prices, prettyPrice, listingPrice, saving, currency |
| Availability | stockStatus, inStock, isLeadtime, isImported, isPreorder, addToCartAvailable, shopAllOptionsAvailable, hasMoreColours |
| Delivery | distributionCentres, estimatedDelivery, estimatedDeliveryType |
| Ratings | starRating, reviewCount, reviewDistribution |
| Images and badges | imageUrl, images, imageCount, badges |
| Full product details | sku, ean, mpn, model, warranty, descriptionHtml, attributes, department, categories, categoryPath |
| Sellers and options | sellerId, sellerName, sellerRating, offers, variants |
| Source and position | sourceUrl, searchTerm, departmentSlug, categorySlug, sort, page, pagePosition, overallPosition, pageCursor |
| Collection status | scrapedAt, detailsScraped, detailError |
reviewDistribution contains rating counts by star value. The Actor does not collect reviewer names or review text. attributes maps specification names to their published text. offers contains other seller offers; variants contains the purchase options supplied in the product response. It does not crawl every linked variant. mpn is included only when published; a barcode is not assumed to be an MPN.
overallPosition is the position within a source, starting from the requested page. It is not a global rank across sources. imageCount in listing mode can exceed the number of image URLs supplied. Delivery estimates depend on Takealot's default location and can differ from checkout.
Example product
This example shows a selection of fields. Prices and availability can change.
{"plid": "PLID95228805","productId": 95228805,"title": "PlayStation 5 Slim Console with disc drive (PS5 Slim)","brand": "Sony Playstation","price": 15904,"listingPrice": 17999,"currency": "ZAR","inStock": true,"stockStatus": "In stock","ean": "711719577188","starRating": 4.9,"reviewCount": 212,"department": "Gaming","categories": ["Consoles"],"distributionCentres": ["JHB"],"detailsScraped": true,"url": "https://www.takealot.com/playstation-5-slim-console-with-disc-drive-ps5-slim/PLID95228805"}
Pricing
| Result | Price per 1,000 results |
|---|---|
| Product listing | $0.80 |
| Product with full details | $2.00 |
Each saved product incurs one result charge. A full-detail result replaces the listing charge; the two are not added together. A run start costs $0.00005 at up to 1 GB of memory, with one additional start event per extra GB. Standard platform usage is included in the event price.
For example, 100 listing results cost $0.08 plus the run start. 100 full-detail results cost $0.20 plus the run start. Set a maximum run cost in Apify to control spending. The Actor stops when it cannot save another result within that budget. The Pricing tab shows the current rates.
Scheduling and integrations
Create an Apify schedule to collect fresh data each day or week. Each run produces a separate dataset. Compare plid, price, inStock, and scrapedAt across runs to track changes. Use the Apify API, webhooks, Make, Zapier, or dataset exports to send results to your workflow.
FAQ
Why did I get fewer products than requested?
The source can contain fewer products, reach the page limit, or repeat products already collected from another source. Your maximum run cost can also stop collection. maxItems is an upper limit, not a guaranteed count.
What happens if a product detail request fails?
After retries, the Actor keeps the available listing with detailsScraped: false and a detailError. It charges the listing rate for that record. The run is marked as failed if any request remains unsuccessful, so missing data is visible. The Run summary output lists failed requests and the number of saved products. Successful records remain available.
Which URLs are supported?
Use public Takealot product URLs with a PLID, search URLs, department pages, category pages, or /all?filter=... listings. Promotion landing pages, account pages, and other non-listing pages are not supported. Unsupported inputs fail with an error instead of returning unrelated products.
Why are some fields missing?
Some products have no published barcode, MPN, brand, seller, or price. Enable full product details for richer data. An absent stock flag means unknown availability, not necessarily out of stock. HTML descriptions are source content; sanitize them before displaying them in your application.
Where can I get help?
Open an issue from this Actor's Issues tab. Include the run ID, input source, and expected result. Do not include API tokens or private account information.
Use the data in line with Takealot's terms and applicable requirements. This Actor is not affiliated with Takealot.