A101 Turkey Scraper icon

A101 Turkey Scraper

Scrape A101.com.tr products across A101 Ekstra and A101 Kapıda. Extract 80+ fields including prices, discounts, brands, barcodes, categories, images,…

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

A101 Turkey Scraper at a glance

A101 Turkey Scraper is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes id, title, change type (incremental mode), brand and barcode, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 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
Ecommerce, Automation, Developer Tools
Pricing
$1.80 per 1,000 results (Free plan), from $1.00 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
26 options

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.

What A101 Turkey Scraper can do

  • 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.
  • Search, filters and sort. Build searches from keyword terms, or narrow by price band, brand and stock, and order results with five sort options.

Choose what to collect

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

Supported input fields
InputWhat it controls
modestring · requiredsearch = build searches from query terms + filters. url = paste one or more a101.com.tr search or product URLs.

Choices: search, url

queriesarrayProduct terms to search, e.g. kahve, su, deterjan, Dove. One search runs per term. Only applies when mode = search.
channelstringWhich A101 catalogue to search. A101 Ekstra is the full online range; A101 Kapida is the doorstep range. Only applies when mode = search.

Choices: ekstra, kapida

minPriceintegerKeep only products with a current price at or above this value, in Turkish lira. Only applies when mode = search.
maxPriceintegerKeep only products with a current price at or below this value, in Turkish lira. Only applies when mode = search.
brandstringKeep only products of this exact brand (case-insensitive), e.g. Tchibo. Leave empty for all brands. Only applies when mode = search.
inStockOnlybooleanWhen on, drops products that are out of stock. Only applies when mode = search.
Show 19 more inputs
More input fields
InputWhat it controls
sortBystringOrder of the collected products. Only applies when mode = search.

Choices: relevance, price-asc, price-desc, discount-desc, name-asc

specialsCategorystringOptionally scrape a promotional listing instead of (or alongside) your keyword searches. A101's flagship deals event is Aldın Aldın. Leave as None for a normal keyword search. Only applies when mode = search. To scrape any other promo or category listing, switch to URL mode and paste its page URL.

Choices: , aldin-aldin, aldin-aldin-elektronik, aldin-aldin-ev-yasam

urlsarrayPaste a101.com.tr URLs: search (/arama?k=..., a ?page=N start page is honoured), Kapida search (/kapida/arama?k=...), promo pages (/ekstra/..., /liste/...), category (/elektronik, /anne-bebek-oyuncak/bebek-bezi), brand (/markalar/...) or product page URLs. Multi-URL supported. Filter fields above are ignored in this mode. Listings walk pages forward automatically. The bare /kapida landing page has no product list and is skipped with a warning. Leaving this field empty runs the example list shown.
maxPagesintegerOptional safety stop on how many result pages to read per query/URL (about 100 products per page). This does NOT cap the run: leave it empty (or 0) for unlimited pages and the run is bounded solely by Max products. Set a value only if you also want a per-search page ceiling.
maxListingsintegerThe run's single hard cap: maximum total products across all searches and URLs. Defaults to 20. Set 0 for unlimited. This is the only default limit; Max pages is unlimited by default and defers to this.
fetchDetailsbooleanAdds the product's full description and full specifications/attributes list from its detail page (beyond the search card, e.g. an appliance's power/capacity/dimensions/warranty attributes). Applies to every product this run collects, in both modes. Billed as a detail-enrichment surcharge.
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a large crawl of products without returning or charging for products already collected there. Use this after an interrupted run, or when continuing a product pull in another run. For recurring daily monitoring of the same search, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns all matching products as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED products. Turn on "Emit unchanged" or "Emit expired" only when you also want those products returned (and billed). State is kept separately for each mode/query/URL/filter combination; use State key when you want to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the mode, queries/URLs, channel and filters, different searches then never mix state with each other.
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, so leave it off unless you specifically want the full snapshot every run.
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/URL set, not when Max products capped it, when Resume was used, or when pasted product URLs were used. This returns, and bills, extra synthetic rows, so leave it off unless you need expiry tracking.
ignoreFieldsForChangesarrayOptional. Field names to exclude from UPDATED change detection (they are still returned in each row). Use this if a field turns out to be noisy, e.g. one that rotates without the product itself changing. Source URL, description and specifications are already ignored. For a field inside a list such as images, use a dotted name like images.id. Leave empty to track every field.
mcpConnectorsarrayOptionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON; the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
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.
min_pricenumberAlias of minPrice. When set it overrides minPrice.
max_pricenumberAlias of maxPrice. When set it overrides maxPrice.
limitintegerAlias of maxListings. When set it overrides maxListings.
startUrlsarrayAlias of urls (url mode); items may be strings or objects with a url key.

Fields in the output

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

product_idID (text)
titleTitle (text)
changeTypeChange type (incremental mode) (text)
brandBrand (text)
barcodeBarcode (text)
category_pathCategory (text)
current_pricePrice (number)
original_priceList price (number)
discount_rateDisc % (number)
currencyCur (text)
in_stockIn stock (boolean)
channel_namesChannels (array)
Show 24 more fields
origin_countryOrigin (text)
variant_countVariants (number)
primary_image_urlImage (image)
urlURL (link)
changedFieldsChanged fields (incremental mode) (array)
firstSeenAtFirst seen (incremental mode) (date)
lastSeenAtLast seen (incremental mode) (date)
discounted_priceDiscounted (number)
is_on_specialOn special (boolean)
savings_amountYou save (number)
savings_percentSave % (number)
promo_labelPromo (text)
specials_categoryDeals view (text)
collectionsCampaigns (array)
promotionsPromotions (array)
badgesBadges (array)
descriptionDescription (text)
source_urlSource URL (link)
search_querySearch query (text)
page_numberPage (number)
positionPosition (number)
total_item_countTotal items (number)
platform_namePlatform (text)
enrichment_statusEnrichment (text)

Example output

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

{
  "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,
  "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
}

Ways to use this data

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

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 A101 Turkey Scraper return?

The documented output for A101 Turkey Scraper includes id, title, change type (incremental mode), brand, barcode, category, price and list price. Availability of each field depends on the source page and the selected mode.

How much does A101 Turkey Scraper cost?

It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 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, 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.

Ready to collect with A101 Turkey Scraper?

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