Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Getir API page →
E-commerce & Marketplaces

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.

5 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

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

Reference

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 comparedGetir (service=getir)GetirBüyük (service=buyuk)
Kuzeyden Su 24 x 500 ml473.99 TRY, struck 695.76 (32% off)487.50 TRY, struck 612.00 (20% off)
Su & İçecek products sold on both846 products846 products
Different price832 of 846cheaper on GetirBüyük for 800, dearer for 32
Same price and same struck price2 of 8462 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.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "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"
  }
}
Captured response
{
  "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
  }
}
Actions

What the Getir API does

ActionDescriptionConcrete use caseKey params
searchFind 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/detailThe 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
categoryEvery 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, ...
categoriesGetir'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
dealsDiscounted 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, ...
Code samples

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"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.getir.search with {"query":"kuzeyden","category":"551430043427d5010a3a5c5e"}.
Use cases

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

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.

docs / getir

Getir

Turkish quick-commerce grocery: Getir and GetirBüyük prices, discounts and label facts.

base /getir/v15 endpoints
post/getir/v1/product/detail1 credit

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.

ParameterAllowed / rangeDescription
product_idrequiredThe 24-character Getir product id every row returns, the product slug ('kuzeyden-su-h8DcoZauDv') or a getir.com product URL (a /buyuk/ URL selects GetirBüyük).
service = getiroptionalgetir · buyukWhich Getir grocery catalogue to read. They are separate price lists: the same product usually costs a different amount on each.
resolve_brand = trueoptionaltrue (default) also reads the product's category shelf to add the brand name, category name and shelf. Getir's product record carries only the brand id. false = one small read, brand name null.
max_rotations = 3optional1–6Advanced: how many times to retry a difficult request (1-6, default 3).
Try in playground →
post/getir/v1/category1 credit

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.

ParameterAllowed / rangeDescription
categoryrequiredA top category: its id or slug (from `categories`), its exact name ('Su & İçecek') or its getir.com category URL.
service = getiroptionalgetir · buyukWhich Getir grocery catalogue to read. They are separate price lists: the same product usually costs a different amount on each.
subcategoryoptionalOnly one shelf inside the category: its id or exact name ('Maden Suyu'), from `categories` or the response's `category.subcategories`.
brandoptionalOnly this brand: its exact name (case and Turkish letters ignored) or the brand id every row carries.
discounted_only = falseoptionaltrue = only products with a struck-through price.
min_priceoptional0–Lowest price in TRY (inclusive).
max_priceoptional0–Highest price in TRY (inclusive).
sort = site_orderoptionalsite_order · price_asc · price_desc · discount_percent · unit_price_ascResult order.
page = 1optional1–1000Result page, 1-based.
page_size = 50optional1–200Products per page (1-200, default 50).
include_hidden = falseoptionalfalse (default) returns only products getir.com shows on its own category pages. true also returns the sold-by-weight rows Getir's catalogue carries but does not list without a delivery address: loose fruit and vegetables (no product record exists for them) and weight-sold meat and deli items (product/detail works for these).
max_rotations = 3optional1–6Advanced: how many times to retry a difficult request (1-6, default 3).
Try in playground →
post/getir/v1/categories1 credit

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.

ParameterAllowed / rangeDescription
service = getiroptionalgetir · buyukWhich Getir grocery catalogue to read. They are separate price lists: the same product usually costs a different amount on each.
max_rotations = 3optional1–6Advanced: how many times to retry a difficult request (1-6, default 3).
Try in playground →
post/getir/v1/deals2 credits

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.

ParameterAllowed / rangeDescription
service = getiroptionalgetir · buyukWhich Getir grocery catalogue to read. They are separate price lists: the same product usually costs a different amount on each.
categoryoptionalLimit to one top category: its id or slug (from `categories`), its exact name ('Su & İçecek') or its getir.com URL. One category is one upstream read; without it all 17 are read.
brandoptionalOnly this brand: its exact name (case and Turkish letters ignored) or the brand id every row carries.
min_discount_percent = 1optional1–99Only products discounted at least this much.
min_priceoptional0–Lowest price in TRY (inclusive).
max_priceoptional0–Highest price in TRY (inclusive).
sort = discount_percentoptionaldiscount_percent · site_order · price_asc · price_desc · unit_price_ascResult order.
page = 1optional1–1000Result page, 1-based.
page_size = 50optional1–200Products per page (1-200, default 50).
max_rotations = 3optional1–6Advanced: how many times to retry a difficult request (1-6, default 3).
Try in playground →