Takealot Scraper icon

Takealot Scraper

Scrape Takealot (takealot.com) South African marketplace products by keyword or URL. Extract prices, discounts, regional stock, ratings and customer…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Takealot Scraper at a glance

Takealot Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes kind, recordid, plid, url and title, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.40 per 1,000 results on the Apify Free plan and from $1.80 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Web data
Pricing
$2.40 per 1,000 results (Free plan), from $1.80 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
27 options

Scrape Takealot (takealot.com) South African marketplace products by keyword or URL. Extract prices, discounts, regional stock, ratings and customer reviews. Monitor Daily Deals and price drops with scheduled runs. Export structured data via JSON, CSV, Excel or API.

What Takealot Scraper can do

  • Two ways to find products. Search by one or more keywords, or paste any takealot.com link: a product page, a search or filter page (including a department filter link) or the Daily Deals page.
  • Full pricing detail. Offer price range, pretty price text, was-price, saving percent and currency come straight from the storefront's own data, not guessed from a rendered page.
  • A Daily Deals monitor built in. Track the Featured, Bundle or TakealotMORE deal surfaces and get only the price drops and stock changes on each scheduled run.
  • Regional stock and ratings on every record. Distribution-centre availability, star rating, review count and the full 1 to 5 star breakdown.
  • Full detail on demand. Switch on product detail fetching for the spec sheet, rich description, category chain, variant options, loyalty prices and offer detail, plus real written reviews.
  • Built for schedules. Incremental mode returns only new and changed products on recurring runs, and a run that hits a connection problem fails loudly instead of returning an empty dataset.

Choose what to collect

These inputs let you configure Takealot Scraper - Products, Prices, Stock & Reviews. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredSearch looks up products by keyword. URL mode reads specific takealot.com pages you paste (a product page, a search, the Daily Deals page).

Choices: search, url

queriesarraySearch mode: one or more keywords, for example 'laptop', 'air fryer', 'nappy bag'. Each keyword is its own walk; results are tagged with the keyword they came from.
sortstringHow results are ordered: Relevance, Price Descending, Price Ascending, Rating Descending (Top Rated) or ReleaseDate Descending (Newest Arrivals).

Choices: Relevance, Price Descending, Price Ascending, Rating Descending, ReleaseDate Descending

urlsarrayURL mode: takealot.com pages to read, one per line (the mobile m. host works too). Product pages are read as single records; search, filter and Daily Deals pages are walked forward, with the link's own sort and filter applied. Department path pages are not supported and are skipped with a warning.
brandstringSearch mode: only products of this brand, for example Apple, Samsung or HP. Use the exact brand spelling the site uses.
minPriceintegerSearch mode: only products priced at or above this many rand.
maxPriceintegerSearch mode: only products priced at or below this many rand.
Show 20 more inputs
More input fields
InputWhat it controls
minRatingstringSearch mode: only products rated this many stars or better.

Choices: 1, 2, 3, 4

inStockRegionstringSearch mode: only products in stock at the selected regional warehouse.

Choices: cpt, dbn, jhb

dealTypestringSearch mode: only deal products. Featured Deals is the Daily Deals surface the homepage promotes; run it on a schedule to monitor price drops (each run reports what changed in incremental mode). Works with or without a keyword.

Choices: Featured Deals, Bundle Deals, TakealotMORE Deals

fetchDetailsbooleanRead each product's own page to add the spec sheet, rich description, category chain, variant options, loyalty prices and offer detail. Adds a per-product surcharge (see the section caption below).
fetchReviewsbooleanWith Fetch product details on, also read each product's written customer reviews (needs Fetch product details). Adds no extra surcharge beyond the detail one.
maxReviewsPerProductintegerCap on written reviews collected per product when Fetch written reviews is on (10 per page; at most 1000).
maxItemsintegerStop after this many product records (0 = no limit; the run then stops when results run out). This is the only limit that stops a run early by default.
maxPagesintegerUpper bound on pages walked per keyword or link. Defaults wide open so Max items is the only cap that stops a run early.
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a large pull without returning products already collected there.
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns every matching product as NEW. Later runs return only NEW, UPDATED and REAPPEARED products. UPDATED means a compared field changed: price, price range, was-price, saving percent, stock flag and status, distribution centres, title, brand, ratings and review counts, badges, images, shipping text and every detail field; the scrape timestamp, product slug and estimated delivery text and type and any fields you list in Ignore fields are never compared (use What counts as a change to compare price and availability only). Turn on Emit unchanged or Emit expired only when you also want those rows returned (and billed). State is kept separately for each keyword, link and filter setup; use State key to name or deliberately share a monitoring campaign.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or deliberately share state across differently configured runs. Leave empty to let the actor derive a key automatically from the search, link and filter settings.
emitUnchangedbooleanOff by default. Turn on to also return products that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have.
emitExpiredbooleanOff by default. Turn on to also return products that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search.
changeScopestringAll fields (default): any change to the product record returns an UPDATED row, except the scrape timestamp, product slug and estimated delivery text and type and any names in Ignore fields. Price and availability only: only a change to price, price range, was-price (listingPrice), saving percent, in-stock flag, stock status or the distribution centres returns an UPDATED row; changes to titles, images, ratings, badges, descriptions or shipping text never do. Changing this option or the ignore list on a search with no State key starts a new baseline (use State key to keep one).

Choices: all, priceAndStock

compactUpdatesbooleanOff by default. When on, UPDATED and EXPIRED rows are short: product id, url, title, brand, current price and stock, plus priceChanges and variantChanges showing the old and new value of each moved price or stock field. NEW rows always carry the complete record. Detail fields and reviews are not in compact rows, so the per-product detail charge is not applied to them.
expireAfterMissedScansintegerOnly used with Emit expired records. A product is marked EXPIRED only after it has been missing from this many complete scans in a row (default 1). Raise it so a product that briefly drops out of a listing is not reported as gone. A product that comes back resets the count. EXPIRED means the product was no longer found in the scan, not that it is out of stock; stock is reported by inStock and stockStatus.
ignoreFieldsForChangesarrayOptional. Field names to exclude from UPDATED change detection (the scrape timestamp, product slug and estimated delivery text and type are always excluded). Use it if a field in your setup is noisy. Dotted names such as ratingDistribution.star5 drop one key inside an object or each array element. Ignored fields stay in the output; they just never trigger UPDATED or appear in changedFields.
mcpConnectorsarrayOptionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write or digest. Leave empty to skip; never changes the dataset output.
notionParentPageUrlstringURL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

kindkind
recordIdrecordId
plidplid
urlurl
titletitle
subtitlesubtitle
brandbrand
priceprice
priceMaxpriceMax
prettyPriceprettyPrice
listingPricelistingPrice
savingPercentsavingPercent
Show 44 more fields
currencycurrency
starRatingstarRating
reviewCountreviewCount
ratingDistributionratingDistribution
inStockinStock
stockStatusstockStatus
isImportedItemisImportedItem
distributionCentresdistributionCentres
isPreorderisPreorder
addToCartAvailableaddToCartAvailable
isDealisDeal
isPromotionisPromotion
badgesbadges
imageUrlimageUrl
imageCountimageCount
shippingMessageshippingMessage
shippingCodeshippingCode
tsintsin
productIdproductId
hasMoreColourshasMoreColours
promotionLabelpromotionLabel
descriptionHtmldescriptionHtml
descriptionTextdescriptionText
specsspecs
boxContentsboxContents
warrantywarranty
categoriesPathcategoriesPath
departmentNamedepartmentName
departmentIddepartmentId
categoryNamescategoryNames
categoryIdscategoryIds
variantsOptionsvariantsOptions
loyaltyPricesloyaltyPrices
offerDetailofferDetail
buyboxTypebuyboxType
detailImagesdetailImages
detailUrldetailUrl
reviewsListreviewsList
reviewPagesreviewPages
reviewsFetchedreviewsFetched
changeTypechangeType
changedFieldschangedFields
firstSeenAtfirstSeenAt
lastSeenAtlastSeenAt

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "kind": "product",
  "recordId": "PLID00000000",
  "plid": 0,
  "url": "https://www.takealot.com/sample-gadget-name/PLID00000000",
  "title": "Sample Gadget 100 (Fictional Model)",
  "brand": "Example Brand",
  "price": 1299,
  "priceMax": 1499,
  "prettyPrice": "From R 1,299",
  "listingPrice": 1699,
  "savingPercent": 23,
  "currency": "ZAR",
  "starRating": 4.4,
  "reviewCount": 89,
  "ratingDistribution": {
    "star5": 50,
    "star4": 20,
    "star3": 10,
    "star2": 5,
    "star1": 4
  },
  "inStock": true,
  "stockStatus": "In stock",
  "distributionCentres": [
    "CPT",
    "JHB"
  ],
  "isDeal": true,
  "isPreorder": false,
  "addToCartAvailable": true,
  "badges": [
    "Sale",
    "Preferred Seller"
  ],
  "imageUrl": "https://example.com/sample-image.jpg",
  "shippingMessage": "Free delivery",
  "changeType": "NEW",
  "changedFields": []
}

Ways to use this data

  • Price and deal tracking: monitor the Daily Deals surface on a schedule and get an alert-ready feed of price drops and stock changes.
  • Competitive pricing research: track a category, brand or keyword's price range, saving percent and regional stock over time.
  • Product catalog building: collect spec sheets, descriptions, variant options and images for a set of products.
  • Customer sentiment analysis: pull written reviews and rating distributions to spot trends per product or brand.
  • Marketplace monitoring: watch how a brand's listings change: new products, price moves and stock-outs.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Takealot Scraper return?

The documented output for Takealot Scraper includes kind, recordid, plid, url, title, subtitle, brand and price. Availability of each field depends on the source page and the selected mode.

How much does Takealot Scraper cost?

It costs $2.40 per 1,000 results on the Apify Free plan and from $1.80 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed products on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental changes for scheduled runs. Each run then returns only new, updated and reappeared products, and unchanged ones are not billed unless you turn on emitUnchanged. This is the shape behind the Daily Deals price-drop monitor.

What is the difference between Resume and Incremental mode?

This is the most common mix-up. Resume continues one specific interrupted run so it never re-collects products it already gathered. Incremental mode is for running the same search again and again, for example daily, and getting back only what changed since the last time. Use Resume for a one-off large pull that got cut off; use incremental mode for ongoing monitoring.

Why did my run fail instead of returning an empty dataset?

If a keyword or link genuinely has no results, the run succeeds with an empty dataset. If the store's connection refused every request instead, the run stops with a clear message ("Could not load any results page (the requests failed), so nothing was collected. This is a connection problem, not an empty search.", or the plan messages in Plan Requirement) so "no products found" is never confused with "nothing could be read". Run it again in a few minutes. If only some keywords or links could be read, you still get what was found.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with Takealot Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.