# Getmobil API — live data from getmobil.com, Turkey's refurbished-electronics marketplace: refurbished iPhones, Samsung and Xiaomi phones, iPads, MacBooks, tablets and smartwatches. Search or browse the catalogue, then open any device variant for its live TRY price, stock, the five Getmobil cosmetic-condition tiers (Premium+, Premium, Mükemmel, İyi, Outlet) with each tier's price, every storage and colour option, every seller's competing offer with seller score and shipping days, the full technical spec sheet and the model's complete storage x colour x condition price matrix. No login, no API key.

> Keyword search across getmobil.com, exactly as its own search box answers: one row per device VARIANT (model + storage + colour + condition) with the live buy-box price in TRY, stock, the source's own attribute list and the variant id to open with `product`. 20 rows per page. `meta.total_results` is the source's own match count. Matching is fuzzy at the source (accessories match phone keywords); use `category` for an exact model. `sort`, `price_min`/`price_max` and `brand` were each measured to change the total; the condition filter is NOT honoured by the source's search and is therefore only offered on `category`.
> ReefAPI engine `getmobil` · 5 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/getmobil/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/getmobil/v1/search — 2 credits
Keyword search across getmobil.com, exactly as its own search box answers: one row per device VARIANT (model + storage + colour + condition) with the live buy-box price in TRY, stock, the source's own attribute list and the variant id to open with `product`. 20 rows per page. `meta.total_results` is the source's own match count. Matching is fuzzy at the source (accessories match phone keywords); use `category` for an exact model. `sort`, `price_min`/`price_max` and `brand` were each measured to change the total; the condition filter is NOT honoured by the source's search and is therefore only offered on `category`.

**Parameters:**
- `query` (string, required) — Free-text keyword, exactly what you would type in getmobil.com's search box (model, brand, accessory). Matching is the source's own and it is FUZZY: measured 2026-10-07, 'iphone 13' reported 6828 matches including accessories, while a nonsense keyword honestly reported 0. For an exact model use `category` with the model's path instead.
- `sort` (enum, optional, default "default") — Result order. The source silently ignores an order it does not know, so only these four are accepted. Measured on /cep-telefonu: price_asc first row 3,900 TRY, price_desc first row 125,000 TRY. [one of: default, price_asc, price_desc, newest]
- `price_min` (number, optional) — Lowest price in TRY. Measured on /cep-telefonu: 278 models -> price 20,000-30,000: 52.
- `price_max` (number, optional) — Highest price in TRY. Works with or without `price_min`.
- `brand` (enum, optional) — One brand, by getmobil's own brand slug. Measured on /cep-telefonu: 278 models -> samsung 93, apple 39. On keyword search 'iphone 13' + samsung: 6828 -> 6. [one of: apple, samsung, xiaomi, huawei, oppo, poco, vivo, lenovo, general-mobile, casper, omix, realme, tecno, honor]
- `page` (integer, optional, default 1) — Result page, 1-based. Page size is the source's: 12 on category/model pages, 20 on keyword search (measured). A page past the last one returns 0 rows with `meta.last_page` (measured: the source does not repeat the last page).
- `include_pii` (boolean, optional, default false) — Accepted for gateway compatibility; seller names and scores are returned as the page publishes them.

**Returns:** products[]{variant_id, row_type, title, model, variant_options[], storage, colour, colour_hex, attributes{}, condition, condition_code, condition_id, price_try, price_display, strikethrough_price_try, min_sell_price_try, sell_base_price_try, currency, stock, in_stock, has_fast_delivery, has_trusted_seller, has_successful_seller, vendor_id, sku, brand, category_path, category_titles, total_sold, favorite_count, view_count_24h, image, path, url, position} + meta{total_results, page, last_page, page_size, has_more}

**Example request body:**
```json
{
  "query": "iphone 13",
  "sort": "price_desc"
}
```

### POST https://api.reefapi.com/getmobil/v1/category — 3 credits
Browse one getmobil category or model page with the storefront's own filters. A top or brand category returns one row per MODEL (from-price, buy-box variant, a preview of its variants); a MODEL path returns one row per VARIANT (storage x colour x cosmetic condition) with its price, stock and buy-box seller id. 12 rows per page. Every filter here was measured to change the source's own total against an unfiltered call in the same run; `meta.total_results` is that total.

**Parameters:**
- `category` (string, required) — A getmobil category path: the part after /satin-al/ in a category URL. A top category ('cep-telefonu', 'bilgisayar-tablet', 'aksesuar') returns one row per MODEL; a MODEL path ('cep-telefonu/iphone-ios-telefonlar/apple/iphone-13') returns one row per VARIANT (storage x colour x condition). Every row's `category_path` and the `categories` action give valid values.
- `condition` (enum, optional) — One of getmobil's own cosmetic-condition tiers. ONE value per call: the source silently ignores a combined value and returns everything. Measured on /cep-telefonu (278 models): premium_plus 38, premium 35, perfect 269, good 79. Category/model pages only — keyword search ignores it at the source. [one of: premium_plus, premium, perfect, good, outlet]
- `brand` (enum, optional) — One brand, by getmobil's own brand slug. Measured on /cep-telefonu: 278 models -> samsung 93, apple 39. On keyword search 'iphone 13' + samsung: 6828 -> 6. [one of: apple, samsung, xiaomi, huawei, oppo, poco, vivo, lenovo, general-mobile, casper, omix, realme, tecno, honor]
- `storage` (enum, optional) — Storage capacity, as getmobil labels it. Measured on /cep-telefonu: 278 -> 256 GB 113; on the iPhone 13 model page 41 -> 10. [one of: 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB]
- `colour_id` (integer, optional) — A colour by getmobil's own colour id (attribute 'Renk' in the `filters` action; e.g. 251 = Siyah). An id the category does not carry returns a real 0.
- `vendor_id` (integer, optional) — Only offers from this seller, by getmobil vendor id (1 = Getmobil itself; the `filters` action lists every seller of a category, product `other_offers[]` carry it). Measured: /cep-telefonu 278 -> vendor 1: 45.
- `price_min` (number, optional) — Lowest price in TRY. Measured on /cep-telefonu: 278 models -> price 20,000-30,000: 52.
- `price_max` (number, optional) — Highest price in TRY. Works with or without `price_min`.
- `fast_delivery` (boolean, optional) — Only 'Hızlı Kargo' (fast shipping) offers. Measured: 278 -> 193.
- `trusted_seller` (boolean, optional) — Only 'Güvenilir Satıcı' (trusted seller) offers. Measured: 278 -> 106.
- `successful_seller` (boolean, optional) — Only 'Başarılı Satıcı' (successful seller) offers. Measured: 278 -> 67.
- `sort` (enum, optional, default "default") — Result order. The source silently ignores an order it does not know, so only these four are accepted. Measured on /cep-telefonu: price_asc first row 3,900 TRY, price_desc first row 125,000 TRY. [one of: default, price_asc, price_desc, newest]
- `page` (integer, optional, default 1) — Result page, 1-based. Page size is the source's: 12 on category/model pages, 20 on keyword search (measured). A page past the last one returns 0 rows with `meta.last_page` (measured: the source does not repeat the last page).
- `include_pii` (boolean, optional, default false) — Accepted for gateway compatibility; seller names and scores are returned as the page publishes them.

**Returns:** products[]{row_type='model', model_id, model, model_slug, variant_id, price_try, price_display, strikethrough_price_try, stock, condition, condition_code, variant_quantity, has_trusted_seller, category_path, favorite_count, view_count_24h, image, path, url, variants_preview[]{variant_id, row_type, title, model, variant_options[], storage, colour, colour_hex, attributes{}, condition, condition_code, condition_id, price_try, price_display, strikethrough_price_try, min_sell_price_try, sell_base_price_try, currency, stock, in_stock, has_fast_delivery, has_trusted_seller, has_successful_seller, vendor_id, sku, brand, category_path, category_titles, total_sold, favorite_count, view_count_24h, image, path, url, position} | variant_id, row_type, title, model, variant_options[], storage, colour, colour_hex, attributes{}, condition, condition_code, condition_id, price_try, price_display, strikethrough_price_try, min_sell_price_try, sell_base_price_try, currency, stock, in_stock, has_fast_delivery, has_trusted_seller, has_successful_seller, vendor_id, sku, brand, category_path, category_titles, total_sold, favorite_count, view_count_24h, image, path, url, position} + meta{total_results, grouped, page, last_page, page_size, has_more, category_title}

**Example request body:**
```json
{
  "category": "cep-telefonu/iphone-ios-telefonlar/apple/iphone-13",
  "sort": "price_asc"
}
```

### POST https://api.reefapi.com/getmobil/v1/product — 3 credits
The full record of one device variant by `variant_id`: live TRY price as the page prints it, monthly instalment, stock, the buy-box seller with its score and badges, EVERY other seller's offer (price, stock, shipping days, score), the five cosmetic-condition tiers with each tier's price and stock flag, the storage and colour selectors with price steps, full technical specs, images, breadcrumbs and add-ons (e.g. battery replacement). With `all_variants` (default) it also returns the model's complete storage x colour x condition matrix, one row per variant with its own price, stock and seller id. An unknown id is NOT_FOUND.

**Parameters:**
- `variant_id` (integer, required) — getmobil variant id: the trailing number of a product URL (.../apple-iphone-13-128-gb-gece-yarisi-**795**/) and the `variant_id` of every search, category and option row. A variant that no longer exists returns NOT_FOUND.
- `path` (string, optional) — Optional: the row's `path` (or the full product URL). Saves the source's two redirect hops from a bare id; must end in the same `-<variant_id>`.
- `all_variants` (boolean, optional, default true) — Also read the model's full variant matrix (every storage x colour x condition currently listed, each with its own price, stock and buy-box seller id). Costs one extra request per 12 variants (measured: iPhone 13 = 41 variants = 4 pages). false returns only the product page itself.
- `include_pii` (boolean, optional, default false) — Accepted for gateway compatibility; seller names and scores are returned as the page publishes them.

**Returns:** product{variant_id, sku, title, model, brand, storage, colour, condition, condition_code, price_try, price_display, strikethrough_price_try, currency, monthly_installment_display, installment_count, in_stock, low_stock, stock, seller{vendor_id, name, slug, store_url, score, is_getmobil, is_top_seller, is_trusted_seller, is_vendor_of_the_month}, shipping_days, is_fast_delivery, committed_ship_date, other_offers[]{vendor_id, name, store_url, score, inventory_id, price_try, stock, shipping_days, fast_delivery, is_buybox_winner}, other_offer_count, condition_options[]{label, condition_code, variant_id, price_try, in_stock, selected}, storage_options[], colour_options[], specs{}, images[], breadcrumbs[], category_path, model_id, add_ons[], url, all_variants[]{variant_id, row_type, title, model, variant_options[], storage, colour, colour_hex, attributes{}, condition, condition_code, condition_id, price_try, price_display, strikethrough_price_try, min_sell_price_try, sell_base_price_try, currency, stock, in_stock, has_fast_delivery, has_trusted_seller, has_successful_seller, vendor_id, sku, brand, category_path, category_titles, total_sold, favorite_count, view_count_24h, image, path, url, position}, all_variants_total} + meta{all_variants_pages, all_variants_pages_failed}

**Example request body:**
```json
{
  "variant_id": 795
}
```

### POST https://api.reefapi.com/getmobil/v1/filters — 3 credits
The live filter vocabulary of one category, as the storefront itself builds its filter panel: brands with ids, models with paths, every seller (vendor id + name), the attribute values with the source's ids (Depolama, Renk, Ekran Boyutu, İşlemci, Bellek …) and the badge toggles. Use it to find a `colour_id` or `vendor_id`. One request.

**Parameters:**
- `category` (string, required) — A getmobil category path: the part after /satin-al/ in a category URL. A top category ('cep-telefonu', 'bilgisayar-tablet', 'aksesuar') returns one row per MODEL; a MODEL path ('cep-telefonu/iphone-ios-telefonlar/apple/iphone-13') returns one row per VARIANT (storage x colour x condition). Every row's `category_path` and the `categories` action give valid values.
- `include_pii` (boolean, optional, default false) — Accepted for gateway compatibility; seller names and scores are returned as the page publishes them.

**Returns:** brands[]{id, slug, name, path}, models[]{id, brand_id, name, path}, vendors[]{id, name}, attributes[]{attribute_type_id, name, values[]{id, value}}, badges[] + meta{total_results}

**Example request body:**
```json
{
  "category": "cep-telefonu"
}
```

### POST https://api.reefapi.com/getmobil/v1/categories — 1 credit
getmobil's live category tree as its own site navigation publishes it (120 categories on 2026-10-07; the source's sitemap lists 405 category URLs including deeper model pages, which `category` also accepts): every category with id, title, path (feed it to `category`), depth, parent and the category's best-selling variant with its buy-box price. One request.

**Parameters:**
- `include_pii` (boolean, optional, default false) — Accepted for gateway compatibility; seller names and scores are returned as the page publishes them.

**Returns:** categories[]{category_id, title, slug, path, depth, parent_id, url, top_selling_variant_id, top_selling_total_sold, top_selling_buy_box_price_try}

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=getmobil
- Human docs page: https://reefapi.com/docs/getmobil
- Overview page: https://reefapi.com/getmobil-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
