Tiendeo APItiendeo.com.tr ↗
Access weekly retail catalogs and tagged product offers from BİM, Şok, Migros, A101, CarrefourSA and more via the tiendeo.com.tr API.
What is the Tiendeo API?
The tiendeo.com.tr API exposes 4 endpoints for retrieving weekly retail brochures and tagged product offers from Turkish supermarkets and other store categories. The get_catalog_offers endpoint returns every offer inside a single catalog — including price, description, brand, and validity dates — while list_retailers enumerates the featured retailers for any category, each carrying a retailer_slug you can pass directly into list_retailer_catalogs.
curl -X GET 'https://api.parse.bot/scraper/bc3d053b-c9a9-4af3-9433-9c7198a09a6e/list_retailers?category=supermarketler' \ -H 'X-API-Key: $PARSE_API_KEY'
Lists the retailers the site features for one store category (supermarkets by default), with the retailer_slug that list_retailer_catalogs accepts. One page load; returns the category's featured retailer tiles (18 observed for supermarkets), not every retailer the site knows - catalogs from non-featured retailers still appear in list_category_catalogs. total_catalogs_in_category is the site's own count of active catalogs in that category.
| Param | Type | Description |
|---|---|---|
| category | string | Store category whose featured retailers to list. |
{
"type": "object",
"fields": {
"category": "object with category_id, name (Turkish label) and slug of the requested category",
"retailers": "array of featured retailers: retailer_id, name, retailer_slug (input for list_retailer_catalogs), logo, url",
"total_catalogs_in_category": "integer - site-reported count of active catalogs in the category"
},
"sample": {
"data": {
"category": {
"name": "Süpermarketler",
"slug": "supermarketler",
"category_id": "1"
},
"retailers": [
{
"url": "https://www.tiendeo.com.tr/firsatlar-kataloglar/bim",
"logo": "https://d1h08qwp2t1dnu.cloudfront.net/assets/media/tr_tr/images/catene/logo_bim_transparent_webp.webp?modified=1719450255",
"name": "BİM",
"retailer_id": "822",
"retailer_slug": "bim"
},
{
"url": "https://www.tiendeo.com.tr/firsatlar-kataloglar/sok-market",
"logo": "https://d1h08qwp2t1dnu.cloudfront.net/assets/media/tr_tr/images/catene/logo_sok-market_transparent_webp.webp?modified=1719449621",
"name": "Şok Market",
"retailer_id": "541",
"retailer_slug": "sok-market"
}
],
"total_catalogs_in_category": 80
},
"status": "success"
}
}About the Tiendeo API
Retailers and Categories
The list_retailers endpoint accepts an optional category parameter and returns an array of featured retailer tiles for that category. Each entry includes retailer_id, name, retailer_slug, logo, and url. The response also carries total_catalogs_in_category, a site-reported integer showing how many active brochures exist across the category. The default category is supermarkets, which returns around 18 retailers including BİM, Şok Market, Migros, CarrefourSA, and A101.
Browsing Catalogs
list_retailer_catalogs takes a required retailer_slug and optional page and limit parameters (limit is clamped to 50). It returns a paginated array of active catalog objects — each with catalog_id, title, retailer_id, retailer_name, start_date, end_date in YYYY-MM-DD format, published_at, and a has_more boolean for pagination control. The retailer object in the response includes total_offers, the site's aggregate count of tagged product offers across that retailer's catalogs. list_category_catalogs works the same way but spans all retailers in a category rather than one, using the same pagination contract.
Product Offers
get_catalog_offers accepts a catalog_id (as returned by either catalog-listing endpoint) and returns all tagged offers in a single call — 50 offers were observed for a typical BİM weekly catalog. Each offer carries offer_id, title, description (nullable, often pack size or brand line), brand (nullable), price as a number, starting_price (nullable, previous price for discount tracking), and validity dates. The parent catalog object and an offer_count integer are also returned.
The Tiendeo API is a managed, monitored endpoint for tiendeo.com.tr — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when tiendeo.com.tr changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official tiendeo.com.tr API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track weekly price changes for grocery staples at BİM, Şok, or Migros using
priceandstarting_pricefields across successive catalogs - Build a Turkish supermarket deal aggregator by paginating
list_category_catalogsand then fetching offers percatalog_id - Monitor catalog publication frequency and active brochure counts per retailer using
published_atandtotal_offersfromlist_retailer_catalogs - Compare offer counts across supermarket chains in a given week using
offer_countfrom multipleget_catalog_offerscalls - Populate a price alert system by diffing
pricevsstarting_priceon tagged product offers across catalogs - Index Turkish retail brochure metadata (title, date range, retailer) for search by consuming
list_retailer_catalogsfor multiple slugs
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does tiendeo.com.tr have an official developer API?+
What does `get_catalog_offers` return and how many offers can I expect per call?+
offers array, a catalog object with metadata (dates, retailer, title), and offer_count. A BİM weekly catalog observed 50 offers. All offers come back at once; there is no per-offer pagination.Does the API cover catalog page images or the full brochure as a PDF?+
How does pagination work across the catalog-listing endpoints?+
list_retailer_catalogs and list_category_catalogs both use 1-based page and limit parameters. The limit is clamped to a maximum of 50. The has_more boolean in each response indicates whether a subsequent page may exist. total_count gives the site-reported total so you can calculate expected page count.Does `list_retailers` return every retailer on the site?+
category parameter. You can fork it on Parse and revise to add an endpoint that enumerates all retailers the site indexes.