BİM has no webshop. The leaflet is the catalogue, and this reads it
The BİM API turns bim.com.tr, Turkey's largest hard-discount grocery chain, into clean JSON in six actions.
6 active endpoints, on 0 and 1 credit tiers.
- POST/bim/v1/leaflets
- POST/bim/v1/leaflet/products
- POST/bim/v1/product/detail
- POST/bim/v1/posters
- POST/bim/v1/stores
- POST/bim/v1/brands
What BİM endpoints does ReefAPI ship?
6 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
BİM API
4 of 6 endpoints, ready to run
Every sheet BİM is publishing right now, including the upcoming ones it posts days ahead: the key, the family, BİM's own date label, the dates it covers and whether it is on shelf today. Free.
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
How the BİM API works
BİM is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 294 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Have the deals page written before the campaign opens
BİM posts the coming sheets days ahead of the day they open. Listing them costs nothing, so the check for a new one is free and you can publish the moment it appears.
{"type": "all"}Zero credits. Returns every live sheet with its leaflet_key, its family, BİM's own date label and a status of current, upcoming or past. On 2026-09-24 that was 12 sheets, 10 Aktüel and 2 İndirim, with exactly one marked current.
{"leaflet_key": 1667}1 credit for the whole sheet. Take the key of an upcoming one and you have next week's products today. An expired key is refused with NOT_FOUND rather than quietly serving this week's rows.
{"slug": "<a row's slug>"}1 credit. The product page carries more feature bullets than the leaflet tile and every image. It also reads the product's leaflet so the brand is filled, since the product page itself publishes none.
A dated, priced product list for a campaign that has not started yet, with the discount BİM itself printed and the exact arithmetic beside it.
curl -X POST https://api.reefapi.com/bim/v1/leaflets \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"type":"all"}'{
"ok": true,
"data": { … },
"meta": {
"api": "bim",
"endpoint": "leaflets",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}What a BİM leaflet prints, and what it does not
The two leaflet families do not publish the same fields, and the difference belongs to BİM rather than to the parser. Measured on 2026-09-24 across the 12 leaflets BİM had live and the 636 products on them.
| Field | Measured 2026-09-24 | What comes back |
|---|---|---|
| price | 636 of 636 | The campaign price in TRY. A price BİM renders as 0,00 is dropped rather than published as zero. |
| price_before_discount | 0 of 584 Aktüel products · 52 of 52 İndirim products | The struck price where BİM prints one. Null on an Aktüel sheet, because BİM prints none there. |
| discount_percent | the same split as the struck price | BİM's own printed figure, kept verbatim. It truncates: 199,00 down to 189,00 is printed as 5 per cent where the arithmetic is 5.03. |
| discount_percent_calculated | filled wherever a struck price exists | The exact arithmetic, in its own field, so neither number hides the other. |
| brand | 562 of 636 | Null when BİM left its own brand field empty. The brand is often inside the title, and it is not split out of the title. |
| starts_on / ends_on | every label BİM prints carries a day and a month, never a year | Dates are completed and flagged year_inferred, with BİM's own date_label kept verbatim beside them. |
| stock, ratings, reviews, barcodes | 0 on every surface | BİM publishes none of these. They are absent, not estimated. |
BİM keeps no archive. Once a sheet drops off its site it is gone, and a key BİM no longer lists comes back as NOT_FOUND rather than the current week's products under an old label. The store finder prints a branch name and street address only, with no coordinates, telephone number or opening hours.
What BİM publishes, measured on 12 live leaflets and 636 products
Measured 2026-09-24 across every sheet BİM had live. Two of these lines go against us, and the first one is the reason the two leaflet families cannot be treated as one.
BİM's leaflet prices are the same in every branch, so there is no per-store price and no basket. Currency is TRY on every row. The stores action is a locator rather than a price source: 81 provinces, their districts, and each branch's name and street address.
0 of 584 products across 10 Aktüel leaflets carried a struck price or a discount badge, so price_before_discount and discount_percent are null there. The control that proves this is the source and not the parser: the same parser read both fields on 52 of 52 products on the İndirim sheets.
199,00 down to 189,00 is printed as 5 per cent where the arithmetic is 5.03; 169,50 down to 129,00 is printed as 23 where it is 23.89. 12 of 52 İndirim products differ by more than 0.6 points. discount_percent keeps BİM's printed figure verbatim and discount_percent_calculated carries the exact one, so neither hides the other.
BİM publishes a rolling window and keeps nothing behind it. Its own site answers a stale leaflet key with the current sheet, which is how a naive reader ends up storing this week's prices under last week's date. A key that leaflets no longer lists returns NOT_FOUND here instead.
Every date label BİM prints carries a day and a month only. starts_on and ends_on are completed and marked year_inferred, with BİM's own date_label kept verbatim beside them so you can check. A label that carries no date at all comes back null rather than guessed.
BİM publishes none of them on any surface, so they are absent rather than estimated. A leaflet product is on the sheet, which is not the same as in stock. The store finder publishes no coordinates, telephone numbers or opening hours either.
leaflets and brands are free. leaflet/products, product/detail, posters and stores are 1 credit each, flat, whatever the sheet's size. A 100-product sheet and a 10-product sheet cost the same, so ask for the sheet.
What people build with BİM
The jobs this data is most often used for.
endpoints
credits per call
Deals and discount sites publish BİM's sheet the moment it goes up, using the upcoming leaflets to have the page ready before the campaign opens.
Price trackers compare BİM against the other Turkish discounters week over week from the same struck price and discount fields.
Retail and FMCG analysts follow promotion frequency, discount depth and category mix across both leaflet families.
Shopping apps and subscriber channels push each new leaflet to their users, with the poster page images alongside the structured rows.
What BİM data costs
The cheapest call here is 0 credits, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 294 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/bim/v1/leaflets \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"type":"all"}'import requests
r = requests.post(
"https://api.reefapi.com/bim/v1/leaflets",
headers={"x-api-key": REEF_KEY},
json={
"type": "all"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up BİM.
Get a free key →Can I get next week's BİM leaflet before it starts?▾
Yes, once BİM has posted it. BİM puts the coming sheets up days ahead of the day they open, and leaflets returns them with status upcoming, their start date and the leaflet_key that leaflet/products takes. That is the whole point of the action: you can have the deals page written before the campaign opens.
Can I get an old BİM leaflet?▾
No, because BİM does not keep one. Its site publishes a rolling window and nothing behind it. Ask for a key that leaflets no longer lists and you get NOT_FOUND. That matters more than it sounds: BİM's own site answers a stale key with the current sheet, so a naive reader would store this week's prices under last week's date.
Why is the discount percent different from the one I calculate?▾
Because BİM rounds its own figure down and the API keeps both. 169,50 down to 129,00 is printed as 23 per cent where the arithmetic is 23.89, and 12 of 52 measured İndirim products differ from the arithmetic by more than 0.6 points. discount_percent is BİM's printed number, discount_percent_calculated is the exact one. Use whichever your product needs and know which you have.
Are BİM prices per store?▾
No. BİM's leaflet prices are national, so there is no per-store price and no basket. The stores action is a locator: it returns the 81 provinces, then a province's districts, then that district's branch names and addresses. A province on its own returns the district list rather than an empty success, because BİM's own finder needs a district before it will list shops.
Does it cover the İndirim sheets as well as Aktüel?▾
Both, and each is tagged. leaflets takes type with all, aktuel or indirim. leaflet/products takes aktuel or indirim, and picks a sheet by leaflet_key, by date, or by neither for the one on shelf today. On a day covered by two overlapping İndirim sheets, a date lookup takes the one whose start is nearest and the other stays reachable by its key.
Is there a BİM product search?▾
No, and no permanent catalogue to search. BİM's site has neither. The leaflet is the catalogue, so the pattern is to list a sheet and filter its rows yourself. leaflets costs nothing, which makes the check for a new sheet free.
What is the BİM API?▾
BİM API is a ReefAPI endpoint group for turkey's biggest discount grocer: the weekly aktüel and i̇ndirim leaflets with every product priced, plus the store finder. It returns live JSON through POST requests under /bim/v1.
Is the BİM API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. BİM calls use the same shared credit balance as every other ReefAPI engine.
Do I need a BİM login or account?▾
No login to BİM is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the BİM data?▾
The page example is captured from a live leaflets call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the BİM API use?▾
BİM actions currently cost 1 credit per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call BİM from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call bim actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the BİM API a BİM scraper?▾
It is the managed alternative to a DIY BİM scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same turkey's biggest discount grocer: the weekly aktüel and i̇ndirim leaflets with every product priced, plus the store finder back as clean JSON.
Why does my BİM scraper keep getting blocked?▾
Most BİM scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.
122 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling BİM, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 293 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-24.