Takealot Scraper avatar

Takealot Scraper

Pricing

from $0.80 / 1,000 product listings

Go to Apify Store
Takealot Scraper

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

Cocoa Kit

Maintained by Community

Actor 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

  1. Enter one or more Search terms, such as laptop.
  2. Set Maximum products. Start with 50.
  3. Choose whether to Scrape full product details.
  4. Click Start and wait for the run to finish.
  5. 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.

InputDefaultDescription
searchTermsNoneList of search terms.
startUrlsNoneTakealot product, search, department, category, or filtered listing URLs. Use objects with a url field, as shown in the examples.
categoryFiltersNoneOne source per filter, such as Type:13, Category:25850, or Brand:HP.
scrapeProductDetailstrueAdd full product details. Direct product URLs always return full details.
maxItems50Maximum unique products across all sources. Set 0 for no product limit.
maxPages10Maximum listing pages per source. Applies even when maxItems is 0.
imageSizepdpxlImage URL size: pdpxl, zoom, full, large, or small.
sortRelevanceTakealot sort name. A sort value in a listing URL takes priority.
proxyConfigurationDisabledOptional Apify Proxy or custom proxy settings.
maxConcurrency5Maximum requests in progress, from 1 to 20.
maxRequestsPerMinute120Maximum request rate, from 1 to 600 per minute.
maxRequestRetries3Retries after a request or response error, from 0 to 10.
requestDelayMillis200Delay before each request, in milliseconds.
requestTimeoutSecs45Network request timeout, from 10 to 180 seconds.
keywordNoneAlternate input for one search term. A supplied url takes priority.
urlNoneAlternate input for one source URL.
results_wantedNoneAlternate name for maxItems; takes priority when greater than 0. Set 0 to use maxItems.
max_pagesNoneAlternate 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.

GroupFields
Product identityplid, productId, tsin, offerProductId, title, subtitle, slug, brand, url
Pricesprice, priceMin, priceMax, prices, prettyPrice, listingPrice, saving, currency
AvailabilitystockStatus, inStock, isLeadtime, isImported, isPreorder, addToCartAvailable, shopAllOptionsAvailable, hasMoreColours
DeliverydistributionCentres, estimatedDelivery, estimatedDeliveryType
RatingsstarRating, reviewCount, reviewDistribution
Images and badgesimageUrl, images, imageCount, badges
Full product detailssku, ean, mpn, model, warranty, descriptionHtml, attributes, department, categories, categoryPath
Sellers and optionssellerId, sellerName, sellerRating, offers, variants
Source and positionsourceUrl, searchTerm, departmentSlug, categorySlug, sort, page, pagePosition, overallPosition, pageCursor
Collection statusscrapedAt, 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

ResultPrice 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.