Getir API

Turkish quick-commerce grocery prices as JSON, with Getir and GetirBüyük kept apart

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.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Getir endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
G
/getir/v1

5 active endpoints, on 1 and 2 credit tiers.

  • POST/getir/v1/search
  • POST/getir/v1/product/detail
  • POST/getir/v1/category
  • POST/getir/v1/categories
  • POST/getir/v1/deals

What Getir endpoints does ReefAPI ship?

5 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

5 endpoints

search

2 cr

Find Getir products by keyword across the public catalogue (all 17 categories, or one with ca…

required
query
optional
service, category, brand, discounted_only, min_price, max_price, sort, page, page_size, include_hidden, max_rotations

product/detail

1 cr

The full Getir product record by id, slug or getir.com URL.

required
product_id
optional
service, resolve_brand, max_rotations

category

1 cr

Every product on one Getir top category (optionally one shelf inside it), in Getir's own shel…

required
category
optional
service, subcategory, brand, discounted_only, min_price, max_price, sort, page, page_size, include_hidden, max_rotations

categories

1 cr

Getir's category tree.

required
optional
service, max_rotations

deals

2 cr

Discounted Getir products.

required
optional
service, category, brand, min_discount_percent, min_price, max_price, sort, page, page_size, max_rotations

Every parameter, every allowed value →

Getir API

3 of 5 endpoints, ready to run

View docs ↗

Getir products for a keyword: price, struck-through price and discount, unit price, pack size, brand, shelf, images and diet tags - from the Getir or GetirBüyük catalogue.

2 credits1 required · 3 optional
POST/getir/v1/search
ok4452 ms · 27 records · sample
{
  "ok": true,
  "meta": {
    "api": "getir",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 4452.1,
    "record_count": 27,
    "cache_hit": false
  },
  "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": "5ee3941d8a1a17d10d681221",
            "name": "Su"
          }
        ],
        "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": "5ee3941d8a1a17d10d681221",
            "name": "Su"
          }
        ],
        "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": "5ee3941d8a1a17d10d681221",
            "name": "Su"
          }
        ],
        "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
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows, with seller names left out. Press Try it for the untrimmed response.

How the Getir API works

Getir is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 252 engines.

02
Call
POST /getir/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Track one grocery shelf on both Getir price lists

Getir and GetirBüyük sell the same products at different prices, so a tracker that stores one number per product mixes two price lists. Three calls keep them apart.

01category
POST/getir/v1/category
{"category": "Su & İçecek", "sort": "unit_price_asc"}

Every product on the shelf with price, struck price, discount and unit price, cheapest per unit first, 50 per page.

02category
POST/getir/v1/category
{"category": "Su & İçecek", "service": "buyuk"}

The same shelf on GetirBüyük. Match rows on product_id - on 2026-09-15 832 of 846 shared products had a different price.

03detail
POST/getir/v1/product/detail
{"product_id": "603545c9877ea1efbab7dc90"}

The full record: 473.99 TRY with a struck 695.76 on Getir, pack size, unit price, brand, category and shelf.

One shelf priced on both Getir services, matched on the same product id, with unit prices on the same basis.

request
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"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "getir",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

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.

Which catalogue, which price, which id, and what Getir does not publish

getir.com only - Turkey, TRY, two grocery services. Measured on 2026-09-15 across the whole 17-category catalogue, 25 searches, 28 product reads and an independent comparison with Getir's own product pages on 7 products. Four of these lines go against us.

One market: Turkey, prices in TRY

This engine reads getir.com's grocery catalogue. Every price is TRY. There is no country parameter because Getir's catalogue for other countries is empty - it was checked for the United Kingdom, Germany, the Netherlands and the United States on 2026-09-15.

Two price lists, never mixed

service=getir is the quick market (default), service=buyuk is GetirBüyük. In Su & İçecek, 832 of 846 products sold on both had a different price on 2026-09-15 - GetirBüyük cheaper on 800 and dearer on 32. Every response echoes service and service_name.

The price Getir shows without a delivery address

Prices are Getir's service-wide price. They were identical to Getir's own category pages on 872 of 872 products in Su & İçecek and 114 of 114 in Meyve & Sebze, and to Getir's own product pages on 7 of 7 products.

Search rows agree with product records

Title, price, struck price and brand on a search or category row were checked against the full product record for 28 products across 12 categories and both services: equal on 28 of 28.

The id is a 24-character string

Product ids look like 603545c9877ea1efbab7dc90. product/detail also accepts the product slug and any getir.com product URL. A dead id returns NOT_FOUND, never another product, and so does a product asked on the service that does not sell it.

Against us: search matching is ours, not Getir's

Getir's own search box needs a signed-in account. search matches your words on the public catalogue - product name, brand, pack size, diet tag, shelf - and says so with match_mode catalogue. Searching all 17 categories takes several seconds; passing one category is much faster.

Against us: no stock and no neighbourhood prices

Stock and delivery depend on the warehouse serving an address, which needs a Getir account. in_stock is null rather than guessed, and prices are the service-wide price.

Against us: items sold by weight that Getir does not list

69 fruit and vegetable rows, 30 meat rows and 3 deli rows were hidden on 2026-09-15, exactly as on Getir's own pages. include_hidden=true returns them; loose fruit and vegetables have no product record, weight-sold meat and deli items do.

Against us: no ratings, no barcode, badges without text

Getir publishes no product ratings or reviews and no barcode, so those fields are null. Campaign badges are images only - badge_images returns their URLs and no label is invented.

What people build with Getir

The jobs this data is most often used for.

5

endpoints

1/2

credits per call

01

Turkish grocery price trackers record Getir and GetirBüyük prices separately, because the same product costs a different amount on each.

02

FMCG brands watch their struck prices and discount depth on Getir with deals, filtered by brand and category.

03

Retail analysts compare per-kg and per-litre unit prices across a Getir category with sort=unit_price_asc.

04

Catalogue and nutrition apps pull ingredients, nutrition tables, origin and manufacturer from product/detail.

What Getir data costs

The cheapest call here is 1 credit, 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 →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 252 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
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"}'
python
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"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Getir.

Get a free key →
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.

91 E-commerce & Marketplaces APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Getir, 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.

0/4000

No account needed · we reply from [email protected]

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 251 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-15.