Getir API & Scraper
The Getir API turns the public catalogue of Getir, Turkey's quick-commerce grocery, into clean JSON in five actions: search, product/detail, category, categories and deals.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
It reads both of Getir's grocery services through one parameter - service=getir for the quick market and service=buyuk for GetirBüyük - and never mixes them, because they are separate price lists: in the Su & İçecek category 832 of the 846 products sold on both carried a different price on 2026-09-15. Every product row carries the 24-character Getir product id, title, brand, pack size such as 24 x 500 ml, price, the struck-through price with discount percent and amount, the unit price per piece, kg or litre, whether it is sold by weight, bundle flag, images, diet tags such as Vegan or Glutensiz, and every shelf it sits on. product/detail adds the description, ingredients, usage notes, the nutrition table as structured rows, weight options for items sold by weight, bundle contents, and the product-safety block split into origin, manufacturer and registration number. search and deals work across all 17 categories or inside one, with brand, price and discount filters and sorting by price, discount or unit price. Verification on 2026-09-15: 25 of 25 searches and 28 of 28 product reads across 12 categories and both services succeeded, search rows agreed with product records on 28 of 28 products, and 7 of 7 products matched Getir's own product page on title, price, struck price, unit price and pack size. Prices are TRY. No Getir account needed - one ReefAPI key and the standard { ok, data, meta, error } envelope.
Getir and GetirBüyük are two price lists - the same product costs a different amount on each
The first thing to know before you build a Turkish grocery price tracker on Getir. The same product id is sold by both services at different prices, so the API asks which one you want and echoes it on every response. Measured on 2026-09-15.
| What was compared | Getir (service=getir) | GetirBüyük (service=buyuk) |
|---|---|---|
| Kuzeyden Su 24 x 500 ml | 473.99 TRY, struck 695.76 (32% off) | 487.50 TRY, struck 612.00 (20% off) |
| Su & İçecek products sold on both | 846 products | 846 products |
| Different price | 832 of 846 | cheaper on GetirBüyük for 800, dearer for 32 |
| Same price and same struck price | 2 of 846 | 2 of 846 |
service defaults to getir. A getir.com/buyuk/ product or category URL selects GetirBüyük on its own, and a URL that contradicts the service you pass is rejected rather than silently answered from the wrong price list.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/getir/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "kuzeyden",
"category": "551430043427d5010a3a5c5e"
}
}{
"ok": true,
"meta": {
"api": "getir",
"endpoint": "search",
"mode": "live",
"latency_ms": 2742,
"record_count": 27,
"bytes": 741130,
"cache_hit": false,
"pagination": {
"page": 1,
"has_more": false,
"page_size": 50,
"total": 27
}
},
"data": {
"results": [
{
"product_id": "603545c9877ea1efbab7dc90",
"title": "Kuzeyden Su",
"short_name": "Kuzeyden Su",
"brand": {
"id": "5aae7beb3c0b5484c7acbfd4",
"name": "Kuzeyden"
},
"size": "24 x 500 ml",
"price": 473.99,
"currency": "TRY",
"original_price": 695.76,
"discount_percent": 32,
"discount_amount": 221.77,
"unit_price": 19.75,
"unit_price_unit": "piece",
"sold_by": "piece",
"is_bundle": true,
"image": "https://cdn.getir.com/product/603545c9877ea1efbab7dc90_tr_1630062624863.jpeg",
"images": [
"https://cdn.getir.com/product/603545c9877ea1efbab7dc90_tr_1630062624863.jpeg"
],
"badge_images": [],
"tags": [],
"category": {
"id": "551430043427d5010a3a5c5e",
"name": "Su & İçecek",
"slug": "su-icecek-ewknEvzsJc",
"url": "https://getir.com/kategori/su-icecek-ewknEvzsJc/"
},
"subcategory": {
"id": "5ee3941d8a1a17d10d681221",
"name": "Su"
},
"subcategories": [
{
"id": "[trimmed-depth]",
"name": "[trimmed-depth]"
}
],
"url": "https://getir.com/urun/603545c9877ea1efbab7dc90/",
"in_stock": null,
"rating": null,
"review_count": null,
"rating_scale": null
},
{
"product_id": "67656a677636aac3eb021d92",
"title": "Kuzeyden Premium Doğal Mineralli Su",
"short_name": "Kuzeyden Premium Doğal Mineralli Su",
"brand": {
"id": "5aae7beb3c0b5484c7acbfd4",
"name": "Kuzeyden"
},
"size": "400 ml",
"price": 34.99,
"currency": "TRY",
"original_price": null,
"discount_percent": null,
"discount_amount": null,
"unit_price": null,
"unit_price_unit": null,
"sold_by": "piece",
"is_bundle": false,
"image": "https://cdn-image.getir.com/market/product/d4992e12-0b30-4789-ad53-7558a9164d2c.webp",
"images": [
"https://cdn-image.getir.com/market/product/d4992e12-0b30-4789-ad53-7558a9164d2c.webp",
"https://cdn-image.getir.com/market/product/93aafd70-f0d9-452e-bce0-01f0e0609e51.jpg",
"https://cdn-image.getir.com/market/product/fb96845b-bcc2-4fa0-878c-61a0ce451027.jpg"
],
"badge_images": [],
"tags": [],
"category": {
"id": "551430043427d5010a3a5c5e",
"name": "Su & İçecek",
"slug": "su-icecek-ewknEvzsJc",
"url": "https://getir.com/kategori/su-icecek-ewknEvzsJc/"
},
"subcategory": {
"id": "5ee3941d8a1a17d10d681221",
"name": "Su"
},
"subcategories": [
{
"id": "[trimmed-depth]",
"name": "[trimmed-depth]"
}
],
"url": "https://getir.com/urun/67656a677636aac3eb021d92/",
"in_stock": null,
"rating": null,
"review_count": null,
"rating_scale": null
},
{
"product_id": "6789fecc60b1247639f9a0fc",
"title": "Kuzeyden Premium Doğal Mineralli Su",
"short_name": "Kuzeyden Premium Doğal Mineralli Su",
"brand": {
"id": "5aae7beb3c0b5484c7acbfd4",
"name": "Kuzeyden"
},
"size": "12 x 400 ml",
"price": 377.99,
"currency": "TRY",
"original_price": 419.88,
"discount_percent": 10,
"discount_amount": 41.89,
"unit_price": null,
"unit_price_unit": null,
"sold_by": "piece",
"is_bundle": true,
"image": "https://cdn-image.getir.com/market/product/68c86db7-e5f9-4da8-ac03-2ed21391be46.jpg",
"images": [
"https://cdn-image.getir.com/market/product/68c86db7-e5f9-4da8-ac03-2ed21391be46.jpg"
],
"badge_images": [
"https://cdn-image.getir.com/market/badge/332c023d-4c57-4e29-94cc-da51aefe6abe.png?bg=transparent&pad=15pct,15pct,3pct,3pct"
],
"tags": [],
"category": {
"id": "551430043427d5010a3a5c5e",
"name": "Su & İçecek",
"slug": "su-icecek-ewknEvzsJc",
"url": "https://getir.com/kategori/su-icecek-ewknEvzsJc/"
},
"subcategory": {
"id": "5ee3941d8a1a17d10d681221",
"name": "Su"
},
"subcategories": [
{
"id": "[trimmed-depth]",
"name": "[trimmed-depth]"
}
],
"url": "https://getir.com/urun/6789fecc60b1247639f9a0fc/",
"in_stock": null,
"rating": null,
"review_count": null,
"rating_scale": null
}
],
"count": 27,
"total_results": 27,
"page": 1,
"page_size": 50,
"page_count": 1,
"hidden_rows_dropped": 0,
"service": "getir",
"service_name": "Getir",
"match_mode": "catalogue",
"query": "kuzeyden",
"categories_read": 1
}
}What the Getir API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Find Getir products by keyword across the public catalogue (all 17 categories, or one with `category`). Each row has price, struck-through price and discount, unit price, pack size, brand, shelf, images and diet tags. Filter by brand, price range or discounted only; sort by match, price, discount or unit price. Choose the Getir or GetirBüyük catalogue with `service`. | Pricing teams call search to find Getir products by keyword across the public catalogue (all 17 categories, or one with `c…. | query, service, category, brand, discounted_only, ... |
| product/detail | The full Getir product record by id, slug or getir.com URL: title, brand, pack size, every image, price, struck-through price and discount, unit price, weight options for items sold by weight, bundle contents, description, ingredients, usage, the nutrition table, the product-safety block (origin, manufacturer, registration number) and the category. | Marketplace operators call product/detail to get the full Getir product record by id, slug or getir.com URL. | product_id, service, resolve_brand, max_rotations |
| category | Every product on one Getir top category (optionally one shelf inside it), in Getir's own shelf order or sorted by price, discount or unit price, paged. The response lists the category's shelves with how many products each one holds. | Catalog enrichment teams call category to get every product on one Getir top category (optionally one shelf inside it), in Getir's own shel…. | category, service, subcategory, brand, discounted_only, ... |
| categories | Getir's category tree: the 17 top categories with id, slug, URL, image and product count, and every shelf (subcategory) inside each with its product count. | Retail analysts call categories to get getir's category tree. | service, max_rotations |
| deals | Discounted Getir products — every product with a struck-through price, across the catalogue or in one category, biggest discount first by default. Filter by brand, price or minimum discount. | Pricing teams call deals to get discounted Getir products. | service, category, brand, min_discount_percent, min_price, ... |
Call search from your stack
curl -X POST https://api.reefapi.com/getir/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"kuzeyden","category":"551430043427d5010a3a5c5e"}'import requests
r = requests.post(
"https://api.reefapi.com/getir/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "kuzeyden",
"category": "551430043427d5010a3a5c5e"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/getir/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "kuzeyden",
"category": "551430043427d5010a3a5c5e"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.getir.search with {"query":"kuzeyden","category":"551430043427d5010a3a5c5e"}.Who uses this API and why
- Turkish grocery price trackers record Getir and GetirBüyük prices separately, because the same product costs a different amount on each.
- FMCG brands watch their struck prices and discount depth on Getir with deals, filtered by brand and category.
- Retail analysts compare per-kg and per-litre unit prices across a Getir category with sort=unit_price_asc.
- Catalogue and nutrition apps pull ingredients, nutrition tables, origin and manufacturer from product/detail.
Questions developers ask before integrating
Which prices does the API return - my neighbourhood's?
Getir's service-wide price: the price getir.com shows a visitor who has not entered a delivery address. On 2026-09-15 that price was identical to the one on Getir's own category page for every product compared (872 of 872 in Su & İçecek, 114 of 114 in Meyve & Sebze). Stock depends on the warehouse that delivers to an address, so in_stock is null rather than guessed.
Why does search say match_mode catalogue?
Because the matching is done on Getir's public catalogue rather than by Getir's own search box, which needs a signed-in Getir account. Every word you type must appear in the product name, brand, pack size, diet tag or shelf name; Turkish and ASCII spellings match each other, so cay finds Çay. Pass category to search one of the 17 categories and the call is much faster; without it all 17 are searched.
Some fruit, vegetables and meat never appear - why?
Getir's catalogue carries items sold by weight that getir.com does not list for a visitor without a delivery address. The API follows the site: on 2026-09-15 it hid 69 rows in Meyve & Sebze, 30 in Et, Tavuk & Balık and 3 in Kahvaltılık, exactly the rows Getir's own pages left out, and counts them in hidden_rows_dropped. include_hidden=true returns them. Loose fruit and vegetables among them have no product record at all; weight-sold meat and deli items do, and product/detail reads them with their weight options.
How are items sold by weight priced?
The price is for the initial weight and the unit price is per kg. Etin En İyisi Kuzu Sırt is 1,545.75 TRY for 500 g, which is 3,091.50 TRY per kg; weight_options returns the initial weight (500 g), the step (500 g) and the minimum (300 g), and sold_by reads weight.
What does product/detail add to a search row?
The description, ingredients, usage notes, the nutrition table as rows with name, value as printed, the value as a number and the unit, bundle contents with each item's size and count, weight options, and the product-safety block Getir shows - origin, manufacturer, registered trade name and registration number - as labelled fields. Getir's product record itself carries only a brand id, so product/detail also looks up the brand name, category and shelf; resolve_brand=false skips that and returns in one small read.
Does a product appear more than once?
Not in the results. Getir places some products on several shelves of the same category - 749 products were listed on two or more shelves on 2026-09-15 - so rows are de-duplicated on product_id and subcategories lists every shelf the product sits on.
What does Getir NOT publish?
Ratings and reviews - there are none, so rating, review_count and rating_scale are null. No barcode. No stock count or per-address price without a delivery address. Campaign badges are images only, so badge_images returns their URLs and no badge text is invented. Nutrition tables and ingredients appear only where Getir publishes them (on 28 products sampled across 12 categories on 2026-09-15, 11 had a nutrition table and 15 had ingredients; origin and manufacturer were published on 3).
What is the Getir API?
Getir API is a ReefAPI endpoint group for turkish quick-commerce grocery: getir and getirbüyük prices, discounts and label facts. It returns live JSON through POST requests under /getir/v1.
Is the Getir API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Getir calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Getir login or account?
No login to Getir 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 Getir data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Getir API use?
Getir actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Getir from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call getir actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Getir API a Getir scraper?
It is the managed alternative to a DIY Getir 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 turkish quick-commerce grocery: getir and getirbüyük prices, discounts and label facts back as clean JSON.