Turkish Discount Market Scraper - A101, BİM, ŞOK Deals avatar

Turkish Discount Market Scraper - A101, BİM, ŞOK Deals

Pricing

$4.00 / 1,000 product-scrapeds

Go to Apify Store
Turkish Discount Market Scraper - A101, BİM, ŞOK Deals

Turkish Discount Market Scraper - A101, BİM, ŞOK Deals

Scrape weekly promotional catalogs (aktuel) from Turkey's three largest discount grocery chains in one run. Unified schema, historical BIM archive, no personal data.

Pricing

$4.00 / 1,000 product-scrapeds

Rating

0.0

(0)

Developer

Fatih Şahinbaş

Fatih Şahinbaş

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Turkish Discount Market Scraper — A101, BİM, ŞOK Aktüel Deals

Scrape the weekly promotional catalogs ("aktüel" campaigns) of Turkey's three largest hard-discount grocery chains — A101, BİM and ŞOK — in a single run, into a single unified dataset.

These catalogs drive a huge share of Turkish household spending and rotate every week. Until now there was no self-serve way to collect them. This Actor gives you one clean schema across all three chains, so you can compare them directly instead of stitching three different site structures together.

What you get

FieldDescription
chainA101, BIM or SOK
campaignCampaign or catalog date, e.g. Aldın Aldın, 25-31 Temmuz, Haftanın Fırsatları
productIdStable identifier within the chain
brandManufacturer brand where the chain publishes it
nameProduct name
priceCurrent selling price as a number (TRY)
originalPriceStruck-through price — null when there is no markdown
discountRateDiscount percentage
currencyAlways TRY
inStockStock flag where the chain exposes it
unitWeight, volume or pack size (e.g. 500 g)
urlProduct page URL
imageProduct image URL
categoryPathCategory breadcrumb where available
promotionsPromotion badges, e.g. multi-buy offers
featuresBullet-point specs (BİM non-food items)
scrapedAtUTC timestamp of the run

Prices are parsed into real numbers, not strings. Turkish decimal formatting (34.750,00) and split price markup are handled, and a struck-through price that is not actually higher than the selling price is discarded rather than saved as a fake discount.

The dataset ships with two views: Aktuel products (everything) and Discounted only (rows that carry a real markdown).

Why this Actor

Three chains, one schema. A101 serves JSON inside its page payload, BİM serves classic server-rendered HTML with prices split across separate elements, ŞOK serves a Next.js storefront. All three are normalised into identical rows.

BİM historical archive. BİM keeps a separate catalog per promotion date, newest first. Raise bimMaxDates and the Actor walks those dated catalogs, so you can build a price history instead of only capturing this week.

ŞOK campaign IDs are auto-discovered and ranked. ŞOK rotates its collection IDs every week. Rather than hardcoding a URL that breaks every Monday, the Actor reads the homepage, then ranks what it finds so weekly-deal and campaign pages are scraped before brand showcases.

Fair quotas. When you cap the run with maxItems, every selected chain and every campaign page gets a reserved share. A small fast-loading brand page cannot consume the budget and leave the weekly deals empty.

Failure isolation. Each chain is scraped independently. If one site changes its layout, the others still return data.

No personal data. Only product catalog information is collected — no seller names, no reviewer profiles, no contact details.

Use cases

  • FMCG and CPG price intelligence in the Turkish market
  • Retail media and news coverage of weekly discount catalogs
  • Brand monitoring: where and at what price your SKUs appear
  • Building a longitudinal Turkish grocery price index
  • Feeding LLM, BI or dashboard pipelines with structured retail pricing data

Input

{
"chains": ["A101", "BIM", "SOK"],
"a101Campaigns": ["aldin-aldin"],
"bimMaxDates": 2,
"sokAutoDiscover": true,
"sokMaxCollections": 4,
"sokMaxPages": 3,
"maxItems": 300,
"onlyDiscounted": false
}
InputMeaning
chainsWhich chains to include
a101CampaignsA101 campaign slugs. aldin-aldin = weekly deals, ekstra = marketplace catalog, kapida = grocery delivery
bimMaxDatesHow many dated BİM catalogs to pull beyond the current one, newest first. 0 = current only
sokAutoDiscoverFollow live ŞOK collection links from the homepage
sokUrlsExplicit ŞOK collection URLs, if you prefer to pin them
sokMaxCollectionsHow many discovered ŞOK collections to scrape, highest relevance first
sokMaxPagesPages to follow per ŞOK collection (~20 products each)
maxItemsCap across all chains, shared out fairly. 0 = unlimited
onlyDiscountedKeep only products that show a struck-through original price

Output sample

{
"chain": "BIM",
"campaign": "25-31 Temmuz",
"productId": "makarna-cesitleri-25-7",
"brand": "NUH'UN ANKARA",
"name": "MAKARNA ÇEŞİTLERİ",
"price": 24.5,
"originalPrice": 33.5,
"discountRate": 26,
"currency": "TRY",
"unit": "500 g",
"url": "https://www.bim.com.tr/aktuel-urunler/makarna-cesitleri-25-7/aktuel.aspx",
"image": "https://cdn1.bim.com.tr/uploads/aktuel-urunler/1627_kucuk.jpg",
"scrapedAt": "2026-07-25T09:00:00+00:00"
}

Pricing

Pay per event: you are charged only for products actually written to the dataset. Runs that return nothing cost nothing.

Tips

  • Start with maxItems: 300 to see the shape of the data before scaling up.
  • For a weekly price archive, schedule the Actor every Monday morning and keep appending to the same dataset.
  • onlyDiscounted: true is the fastest way to answer "what is actually marked down this week".
  • Set maxItems: 0 when you want the full catalogs; quotas only apply when a cap is set.
  • Turkish residential proxies are the default and give the most reliable results, though these sites are usually reachable without one. If your plan has no proxy access the Actor logs a warning and continues on a direct connection.

Notes

Catalogs change weekly, and occasionally a chain restructures its pages. If you see a drop in results, open an issue on the Actor page and it will be fixed. Only publicly available product catalog data is collected.