A101 Turkey Scraper - Products, Prices, Stock & Promotions avatar

A101 Turkey Scraper - Products, Prices, Stock & Promotions

Pricing

from $1.00 / 1,000 product results

Go to Apify Store
A101 Turkey Scraper - Products, Prices, Stock & Promotions

A101 Turkey Scraper - Products, Prices, Stock & Promotions

Scrape A101.com.tr products across A101 Ekstra and A101 Kapıda. Extract 80+ fields including prices, discounts, brands, barcodes, categories, images, stock, campaigns, promotions, variants, badges, origin, and descriptions. Supports search, URLs, filters, and sorting.

Pricing

from $1.00 / 1,000 product results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

1

Bookmarked

6

Total users

0

Monthly active users

4 days ago

Last modified

Share

A101 Scraper: Products, Prices, Deals & Stock

A101 Scraper turns a101.com.tr into structured product data. Search by keyword or paste product, search and deals URLs, and get back one clean record per product with full pricing (current, original and discount), stock and quantity rules, sales channels, categories, brand, images, campaigns and badges, across both the A101 Ekstra online range and the A101 Kapida doorstep range. Turn on detail-page enrichment for the full description and specifications, then export to JSON, CSV or Excel, pull results through the API, or pipe them into your own apps.

Why This Scraper?

  • 55+ fields per product. Identifiers, full pricing, stock and quantity rules, sales channels, origin country, campaigns and media, far beyond a title and a price.
  • Was price and savings, already split out. Current price, original (was) price, discount amount, discount percentage and an is_on_special flag come as clean, separate fields on every discounted product.
  • Two catalogues, one actor. Search A101 Ekstra (the full online range) or A101 Kapida (the doorstep range), selectable per run.
  • Deals views in one click. Scrape A101's Aldin Aldin weekly deals event, plus its Electronics and Home and Living variants, directly, or paste any promo or category listing URL.
  • Optional detail-page enrichment. Turn on Fetch details to add each product's full description and its full specifications and attributes list, such as an appliance's power, capacity, dimensions and warranty, billed only for rows that actually gain new content.
  • Built for monitoring. Incremental mode returns only new, changed, reappeared and (on a complete scan) expired products on recurring runs, and Resume continues one interrupted run without re-collecting or re-billing what it already gathered.
  • Search, filters and sort. Build searches from keyword terms, or narrow by price band, brand and stock, and order results with five sort options.

Use Cases

  • Retail price monitoring: track current price, was price and discount rate on grocery and household staples over time.
  • Deals and promo tracking: capture the Aldin Aldin weekly event and its category variants as campaigns and badges change.
  • Appliance and electronics research: pull full specifications and attribute lists through detail-page enrichment for products the listing card alone never carries.
  • Merchandising and stock analysis: watch channel availability, stock status and quantity limits across A101 Ekstra and A101 Kapida.
  • Scheduled monitoring: run the same search on a schedule and receive only new, changed or expired products instead of a full re-scrape.

Data You Get

Sample shape: values are illustrative placeholders, not from a live listing.

FieldExample
product_id"00000000"
barcode"0000000000000"
title"Sample Coffee Beans 1000 G"
brand"Sample Brand"
category_path"Market > Beverages > Coffee"
currency"TRY"
current_price99.9
original_price149.9
discount_rate33
is_on_specialtrue
savings_amount50.0
savings_percent33
promo_label"Sample promo label"
specials_category"aldin-aldin"
pack_size"1000 g"
in_stocktrue
channel_names["A101 Online", "Magaza", "A101 Kapida"]
origin_country"Sample Country"
return_days15
variant_count1
primary_image_url"https://cdn2.a101.com.tr/.../1.jpg"
collections[{"id": "S0000000", "name": "Sample Campaign"}]
url"https://www.a101.com.tr/.../sample_p-00000000"

With Fetch details on, a row also carries description (the detail page's full text) and specifications (a key/value attribute table), plus sku and availability when the product page publishes them; simpler grocery and apparel items may expose only one or two attributes, while electronics and appliances can expose dozens. A101 does not publish customer reviews or star ratings anywhere on its site, so rating and review_count are always present but always empty. A101 Kapida records use the same field names with a flatter set of values (no brand URL, no channel list beyond Kapida itself).

How to Use

  1. Pick a Search mode: search (build from query terms and filters) or url (paste one or more a101.com.tr links).
  2. In search mode, fill in your queries and optional catalogue, filters, sort order or a deals view. In URL mode, paste search, deals, category or product page links.
  3. Set Max products to control run size and cost (0 for unlimited), and optionally cap Max pages per search, then click Start.
  4. Download the dataset as JSON, CSV or Excel, or read it through the API.

Search by keyword (A101 Ekstra):

{
"mode": "search",
"queries": ["kahve", "deterjan"],
"channel": "ekstra",
"maxListings": 100
}

Scrape a deals view (Aldin Aldin weekly deals):

{
"mode": "search",
"specialsCategory": "aldin-aldin",
"maxListings": 200
}

Search with filters and sorting:

{
"mode": "search",
"queries": ["kahve"],
"minPrice": 50,
"maxPrice": 500,
"brand": "Tchibo",
"inStockOnly": true,
"sortBy": "price-asc",
"maxListings": 50
}

Paste URLs (search, deals or product pages):

{
"mode": "url",
"urls": [
"https://www.a101.com.tr/arama?k=su",
"https://www.a101.com.tr/market/sample-product_p-00000000"
],
"maxListings": 40
}

The three Aldin Aldin deals slugs are aldin-aldin (weekly), aldin-aldin-elektronik (electronics) and aldin-aldin-ev-yasam (home and living). You can add keyword queries alongside a deals view in the same run, and each still respects its own filters and sort. To enrich the products this run collects with their full description and specifications, add "fetchDetails": true to any of the inputs above; this is billed once per product actually enriched, in addition to the per-product result charge. A101 Kapida products link to a separate storefront and are never enriched (or billed for enrichment).

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/a101-product-scraper").call(run_input={"mode": "search", "queries": ["kahve"]})
for product in client.dataset(run["defaultDatasetId"]).iterate_items():
print(product["title"], product["current_price"], product["currency"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/a101-product-scraper').call({ mode: 'search', queries: ['kahve'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

How Max products splits across multiple searches

When a run has more than one query, deals view or search/listing URL, Max products is divided evenly across all of them up front. If one search runs out of matching products before using its share, that unused share is not handed to another search in the same run; raise Max products, or run large searches on their own, if that matters to you. Pasted product page URLs are not part of that split: they are fetched first and count against the run total.

Sort order applies page by page. Sorting is applied to each results page (up to about 100 products) as it is read, not to the whole catalogue. With a small Max products, price-asc returns the cheapest products among the first page of relevance-ordered results, not necessarily the cheapest products on the site.

Resume and incremental monitoring

  • Resume (resumeFromRunId) continues one interrupted run: paste its run or dataset ID and the actor skips every product already collected there, so you do not pay twice.
  • Incremental mode (incrementalMode) is for scheduled runs over the same search or URL set. Each product is classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless Emit unchanged is on), REAPPEARED, or, only after a run that scanned every search and URL to its natural end without Resume and with nothing pasted as raw product URLs, EXPIRED (only with Emit expired on). stateKey names or shares the stored state; leave it empty and the actor derives one automatically from your mode, queries or URLs, catalogue and filters. With incremental mode off, output is exactly as before.

Known limitation: toggling Fetch details on pasted product URLs. For keyword searches, deals views and search/listing URLs, turning Fetch details on or off between runs does not create a change by itself. For pasted product page URLs it does: the enrichment's sku and availability fields are compared like any other field, so the first run after you switch Fetch details on or off marks every such product UPDATED (with changedFields typically availability and sku), and bills it, although nothing on A101 changed. Keep Fetch details fixed for a monitoring campaign of product URLs, or use a new State key when you change it.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use through Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape; the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each product, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify, Settings, Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the Pipe results into your apps input field. If the picker is empty, you have not authorized a connector yet.
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (build from query terms and filters) or url (paste a101.com.tr search or product URLs).
queriesarray["kahve"]Product terms to search. One search runs per term. Search mode only.
channelstringekstraCatalogue to search: ekstra (A101 Ekstra) or kapida (A101 Kapida). Search mode only.
minPriceinteger(none)Keep only products with a current price at or above this value, in Turkish lira. Search mode only.
maxPriceinteger(none)Keep only products with a current price at or below this value, in Turkish lira. Search mode only.
brandstring(none)Keep only products of this exact brand, case insensitive. Search mode only.
inStockOnlybooleanfalseDrop out-of-stock products. Search mode only.
sortBystringrelevancerelevance, price-asc, price-desc, discount-desc, or name-asc. Search mode only.
specialsCategorystring(none)Optionally scrape a deals view instead of, or alongside, keyword searches: aldin-aldin, aldin-aldin-elektronik or aldin-aldin-ev-yasam. Search mode only.
urlsarraysamplea101.com.tr search, deals or product page URLs. URL mode only; search-mode filters are ignored here.
maxPagesintegerunlimitedOptional page ceiling per search or URL. Leave empty or 0 for unlimited; Max products still bounds the run.
maxListingsinteger20The run's single hard cap: total products across every search and URL. Set 0 for unlimited.
fetchDetailsbooleanfalseAdds each product's full description and full specifications and attributes list from its own detail page, in both modes. Billed as a detail-enrichment surcharge.
resumeFromRunIdstring(none)Continue one interrupted run: paste its run or dataset ID to skip products already collected there.
incrementalModebooleanfalseTurn on for recurring monitoring of the same search or URL set: later runs return only new, changed and reappeared products.
stateKeystring(none)Optionally name a monitoring campaign, or share state across differently configured runs. Left empty, a key is derived automatically.
emitUnchangedbooleanfalseAlso return, and bill, products unchanged since the last incremental run.
emitExpiredbooleanfalseAlso return, and bill, products no longer found after a complete incremental scan.
proxyobjectApify ProxyConnection used to reach the site.
mcpConnectorsarray(none)Optional: send a summary of each product to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which item pages are created.
maxNotifyListingsinteger50Cap on items written to each connector per run. Does not affect the dataset.

Output Example

Sample shape: values are illustrative placeholders, not from a live listing.

{
"product_id": "00000000",
"base_id": "00000000",
"barcode": "0000000000000",
"title": "Sample Coffee Beans 1000 G",
"seo_name": "Sample Coffee Beans 1000 G",
"url": "https://www.a101.com.tr/market/sample-coffee-beans-1000-g_p-00000000",
"country": "TR",
"brand": "Sample Brand",
"brand_url": "https://www.a101.com.tr/markalar/sample-brand",
"category": "Coffee",
"category_path": "Market > Beverages > Coffee",
"currency": "TRY",
"current_price": 99.9,
"original_price": 149.9,
"discounted_price": 99.9,
"discount_rate": 33,
"is_on_special": true,
"savings_amount": 50.0,
"savings_percent": 33,
"promo_label": "Sample promo label",
"specials_category": "aldin-aldin",
"pack_size": "1000 g",
"in_stock": true,
"min_quantity": 1,
"max_quantity": 5,
"return_days": 15,
"vat_rate": 1,
"channel_names": ["A101 Online", "Magaza", "A101 Kapida"],
"origin_country": "Sample Country",
"primary_image_url": "https://cdn2.a101.com.tr/.../1.jpg",
"image_count": 1,
"collections": [{ "id": "S0000000", "name": "Sample Campaign" }],
"variant_count": 1,
"short_description": "Sample short description.",
"description": "Guc kaynagi: Sample specification text\nKapasite: 1.5 L\nGaranti suresi: 2 yil",
"specifications": { "Kapasite": "1.5 L", "Garanti suresi": "2 yil" },
"sku": "00000000",
"availability": "https://schema.org/InStock",
"rating": null,
"review_count": null
}

description, specifications, sku and availability are only present when Fetch details is on and the product page carries them; otherwise these keys are absent from the row entirely. The full record also includes fields not shown here, such as categories, images, promotions, badges, variants and channels. rating and review_count are always present and always empty, since A101 has no reviews or ratings feature.

Plan Requirement

This actor runs on any Apify account. The default proxy setting works well for keyword search. For deals views and for detail-page enrichment, the actor automatically routes through a higher-quality connection on your behalf when the Apify proxy is enabled; you do not need to configure anything extra for that. If you turn the Apify proxy off, those two features may return fewer results.

FAQ

How much does it cost?

You pay per product returned, plus a separate charge for each product actually enriched when Fetch details is on. The Pricing tab shows the current rates. Use Max products to cap the cost of any run.

This actor collects only publicly available product, price and stock data. You are responsible for how you use it: follow a101.com.tr's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution.

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

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Later runs then return only new, updated and reappeared products by default; turn on Emit unchanged or Emit expired if you also want those returned and billed.

Why don't I see ratings or reviews in the data?

A101 does not publish a customer reviews or star-rating feature anywhere on its site. The rating and review_count fields exist for a stable schema but are always empty.

What is the difference between Resume and Incremental mode?

Resume continues one specific interrupted run from a pasted run or dataset ID, so you do not re-collect or re-pay for products already gathered there. Incremental mode is for running the same search or URL set again and again, for example daily, and getting back only what changed since last time.

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

Only two situations fail the run outright: a Resume run or dataset ID that this account cannot read (checked before any scraping starts), and Incremental mode combined with Resume when that search already has saved incremental state. Fix the ID, or remove one of the two settings, and run it again.

A page that still cannot be read after several retries does not fail the run. That search simply ends there, and if nothing at all could be read, the run finishes with an empty dataset and the status message "No products matched. Check the query terms, filters, or URLs." In that case the site may have been briefly unreachable rather than your search matching nothing, so run it again in a few minutes before changing your input. A search cut short this way never triggers EXPIRED rows.

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.

🔗 Want more e-commerce data?

Pair this actor with these related scrapers from the same team:

🔌 Dienmayxanh Scraper
Scrape dienmayxanh.com home appliances and electronics with full specifications, current...
👗 24S Scraper
Scrape 24S luxury fashion by category, filters, or URL. Extract brand, name, price...
🛒 Thegioididong Scraper
Scrape thegioididong.com products with full specifications, current & original price...
🔌 Boulanger.com
Scrape Boulanger (boulanger.com) electronics and home-appliance products: current price...
🥦 E.Leclerc Scraper
Scrape E.Leclerc France (e.leclerc) grocery and retail products. Search by keyword or...
🛒 Costco AU Scraper
Scrape Costco.com.au products by keyword or product, search and category URLs. Extract...

👉 Browse all abotapi scrapers

💬 Support

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email contact@abotapi.com.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.