Qatar Living API & Scraper
Qatar Living is where Qatar buys, rents, hires and goes out, and this API reads all of it as JSON.
🤖 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.
One `search` call reaches eight separate indexes - classifieds, properties, vehicles, services, deals, news, events and jobs - and every answer also tells you how many hits the other indexes hold, so a query that belongs in vehicles is never silently empty in classifieds. Filtering is structured, not keyword guessing: 108 named filters including make, model, year range, mileage ceiling, fuel and gearbox on cars; purpose, property type, bedroom and bathroom counts, furnishing, amenities and area range on property; price range, condition, brand, colour, district and freebie flags on classifieds. `facets` returns the vocabulary and the live size of every bucket in one call, so you can read the market before you query it - on 2026-10-06 the vehicles index was 4,154 SUVs against 1,131 saloons, and 4,634 petrol cars against 69 diesel and 31 electric. Free text works in English and Arabic, and `listing` returns the full advert in both languages at once.
What a Qatar Living field actually contains
Six fields where the obvious reading is the wrong one. Every row was measured against live Qatar Living responses on 2026-10-06.
| Field | What it holds |
|---|---|
| total_matched vs total_reported | total_matched is the number to trust. On deals, news and events a free-text search returns a relevance pool rather than a match count - the deals index answered 500 for every query we tried, including a nonsense string, while a filtered browse of the same index reports 738. When that happens total_is_relevance_pool is true and total_matched falls back to the honest count the source publishes separately (news 'world cup': 1,001 reported, 50 matched). A filter-only browse always carries an exact count. |
| irrelevant_query | True means Qatar Living's own relevance gate refused the query for that vertical, not that nothing matched. Searching camry in the properties index returns zero with this flag set; the same word in vehicles returns real cars. The flag plus the vertical counts in the same response tell you where the query belongs. |
| sub_vertical | The section slug: items, stores, offers, pre-loved, collectibles on classifieds; residential, commercial, agencies, international, schools on property. Pass the slug and the count moves (classifieds 36,670 to 3,061 for stores). Every response also reports all section counts whether you filtered or not. |
| price | A number in QAR, or null. Null means no price was published - normal on ask-for-price services and deals, where 6 of 10 and 5 of 10 sampled rows carried one. A price is never reported as 0, so 'no price' and 'free' stay distinct. |
| title_ar / description_ar | Only on the listing endpoint, and that is where the whole Arabic side lives - up to 17 translated fields per vertical including make_ar, fuel_type_ar, purpose_ar, furnishing_status_ar and offer_type_ar. A search row answers in ONE language: ask for Arabic and the Arabic text arrives in the ordinary title and category fields. |
| images | Classifieds, services, news and events publish full image URLs. Deals, properties and vehicles publish storage-relative paths, and the response says which form you got in image_paths. We do not fabricate an absolute URL for the relative ones - the listing url field always works instead. |
Deliberate gaps, measured: the jobs index is accepted and documented by Qatar Living but currently holds zero documents, and the API says so in a warning rather than pretending. There is no public 'all adverts by one seller' endpoint. Vehicles and deals rows carry no coordinates. Page size is capped at 100 because the source returns 100 even when 200 is requested, and paging past the last page returns zero rows rather than repeating it.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/qatarliving/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "land cruiser",
"vertical": "vehicles",
"limit": 10
}
}{
"ok": true,
"meta": {
"api": "qatarliving",
"endpoint": "search",
"mode": "live",
"latency_ms": 1267.7,
"record_count": 10,
"bytes": 37887,
"cache_hit": false,
"charged_credits": 1,
"version": "1.0.0",
"request_id": "dfeba0192b6f4760",
"queue_ms": 1.6,
"fetched_at": "2026-10-06T14:47:19.450Z"
},
"data": {
"query": "land cruiser",
"vertical": "vehicles",
"sub_vertical": "car",
"sort": "relevance",
"page": 1,
"limit": 10,
"total_matched": 483,
"total_reported": 483,
"total_is_relevance_pool": false,
"total_pages": 49,
"has_more": true,
"vertical_counts": {
"deals": 0,
"properties": 0,
"vehicles": 535,
"classifieds": 36,
"services": 0,
"news": 8,
"events": 1
},
"section_counts": {
"car": 483,
"rental-car": 44,
"car-parts": 8,
"commercial": 0,
"motorbike": 0,
"showrooms": 0,
"garages": 0,
"special-numbers": 0,
"rental-companies": 0,
"boat": 0
},
"irrelevant_query": false,
"irrelevant_query_message": null,
"did_you_mean": null,
"facets": {
"make": [
{
"value": "Toyota",
"count": 483
}
],
"model": [
{
"value": "Land Cruiser",
"count": 478
},
{
"value": "Prado",
"count": 5
}
],
"trim": [
{
"value": "GXR",
"count": 188
},
{
"value": "VXR",
"count": 74
},
{
"value": "GX",
"count": 60
}
],
"fuel_type": [
{
"value": "Petrol",
"count": 290
},
{
"value": "Hybrid",
"count": 9
},
{
"value": "Diesel",
"count": 8
}
],
"gear_type": [
{
"value": "Automatic",
"count": 296
},
{
"value": "Manual",
"count": 11
},
{
"value": "Other",
"count": 1
}
],
"imported": [
{
"value": "Qatar",
"count": 192
},
{
"value": "GCC",
"count": 8
},
{
"value": "Japan",
"count": 5
}
],
"service_history": [
{
"value": "Regular service",
"count": 50
},
{
"value": "Full dealer service history",
"count": 42
},
{
"value": "Full service history",
"count": 30
}
],
"color": [
{
"value": "White",
"count": 146
},
{
"value": "Black",
"count": 46
},
{
"value": "Silver",
"count": 21
}
],
"inside_color": [
{
"value": "Beige",
"count": 143
},
{
"value": "Black & Beige",
"count": 13
},
{
"value": "Brown",
"count": 6
}
],
"condition": [
{
"value": "Used",
"count": 468
},
{
"value": "New",
"count": 15
}
],
"body_type": [
{
"value": "SUV/4x4",
"count": 481
},
{
"value": "Pickup",
"count": 1
},
{
"value": "Sedan",
"count": 1
}
],
"zone": [
{
"value": "Doha",
"count": 458
},
{
"value": "Wakrah",
"count": 14
},
{
"value": "Al Khor",
"count": 6
}
],
"year_int": [
{
"value": 2024,
"count": 48
},
{
"value": 2025,
"count": 32
},
{
"value": 2021,
"count": 30
}
],
"door_count": [
{
"value": 5,
"count": 130
},
{
"value": 4,
"count": 50
},
{
"value": 2,
"count": 3
}
],
"seat_count": [
{
"value": 7,
"count": 151
},
{
"value": 5,
"count": 24
},
{
"value": 2,
"count": 2
}
],
"cylinder_count": [
{
"value": 6,
"count": 122
},
{
"value": 8,
"count": 101
},
{
"value": 4,
"count": 15
}
]
},
"listing_count": 10,
"listings": [
{
"id": "car_197651",
"title": "Toyota Land Cruiser GX 2017",
"description": "Toyota Land Cruiser GX 2017 Mileage: 180,000 Price: 99,000 With original accessories Bluetooth sensors",
"slug": "/vehicles/cars/197651_toyota_land_cruiser_gx_2017",
"category": "Car",
"category_id": "1",
"location": null,
"zone": "Doha",
"zone_ar": "الدوحة",
"geo": null,
"images": [
{
"url": "[trimmed-depth]",
"order": "[trimmed-depth]"
},
{
"url": "[trimmed-depth]",
"order": "[trimmed-depth]"
},
{
"url": "[trimmed-depth]",
"order": "[trimmed-depth]"
}
],
"is_active": true,
"is_featured": false,
"distance_km": null,
"created_at": "2026-10-06T13:19:45.306000Z",
"updated_at": "2026-10-06T13:19:45.306000Z",
"published_date": "2026-10-06T13:19:45.306000Z",
"tags": [],
"vertical": "vehicles",
"purpose": "Sale",
"make": "Toyota",
"make_id": 82,
"model": "Land Cruiser",
"model_id": 761,
"trim": "GX",
"year": "2017",
"year_int": 2017,
"fuel_type": null,
"gear_type": null,
"wheel_drive": null,
"imported": null,
"service_history": null,
"color": null,
"color_hex": null,
"inside_color": null,
"doors": null,
"door_count": null,
"seats": null,
"seat_count": null,
"cylinders": null,
"cylinder_count": null,
"engine_size": null,
"engine_size_l": null,
"mileage": 180000,
"condition": "Used",
"body_type": "SUV/4x4",
"bike_type": null,
"boat_type": null,
"part_type": null,
"car_parts_type": null,
"accessory_type": null,
"number_type": null,
"plate_category": null,
"plate_number": null,
"number_digits": null,
"provider": null,
"length": null,
"width": null,
"depth": null,
"engine_count": null,
"boat_bedrooms": null,
"boat_bathrooms": null,
"kitchens": null,
"with_captain": null,
"with_driver": null,
"emergency_roadside": null,
"same_as_company_location": null,
"pick_drop_location": null,
"features": [],
"price": 99000,
"hourly_price": null,
"daily_price": null,
"weekly_price": null,
"monthly_price": null,
"zone_id": "1",
"country": null,
"street": null,
"company_id": "38507",
"company_name": null,
"agency_id": 1338,
"agency_name": "AL Marwa Cars",
"agency_slug": "al-marwa-cars-1338",
"agency_logo_url": "prod/2300/1775792981922-Logo (93).png",
"agency_type": "Showroom",
"cover_image_desktop": null,
"cover_image_mobile": null,
"logo_url": null,
"under_warranty": false,
"is_computer_checked": false,
"installments_available": false,
"is_showroom": true,
"is_reverse_gear": null,
"is_promoted": false,
"is_basic": false,
"featured_end": null,
"promote_end": null,
"refreshed_on": "2026-10-06T13:19:45.349000Z",
"expiry_date": null,
"sold_date": null,
"currency": "QAR",
"url": "https://www.qatarliving.com/en/vehicles/cars/197651_toyota_land_cruiser_gx_2017",
"images_count": 7,
"image": "prod/toyota-land-cruiser-gx-2017-1791292783642/1791292783642-WhatsApp Image 2026-10-06 at 8.44.04 AM.jpeg",
"title_is_arabic": false,
"user_name": "AL Marwa Cars",
"phone_number": null,
"pii_withheld": false
},
{
"id": "car_197567",
"title": "Toyota Land Cruiser GXR 2019",
"description": "Toyota Land Cruiser GXR 2019",
"slug": "/vehicles/cars/197567_toyota_land_cruiser_gxr_2019",
"category": "Car",
"category_id": "1",
"location": null,
"zone": "Doha",
"zone_ar": "الدوحة",
"geo": null,
"images": [
{
"url": "[trimmed-depth]",
"order": "[trimmed-depth]"
},
{
"url": "[trimmed-depth]",
"order": "[trimmed-depth]"
},
{
"url": "[trimmed-depth]",
"order": "[trimmed-depth]"
}
],
"is_active": true,
"is_featured": false,
"distance_km": null,
"created_at": "2026-10-06T07:29:19.938000Z",
"updated_at": "2026-10-06T07:29:45.516000Z",
"published_date": "2026-10-06T07:29:19.938000Z",
"tags": [],
"vertical": "vehicles",
"purpose": "Sale",
"make": "Toyota",
"make_id": 82,
"model": "Land Cruiser",
"model_id": 761,
"trim": "GXR",
"year": "2019",
"year_int": 2019,
"fuel_type": "Petrol",
"gear_type": "Automatic",
"wheel_drive": null,
"imported": null,
"service_history": null,
"color": "White",
"color_hex": "#ffffff",
"inside_color": null,
"doors": null,
"door_count": null,
"seats": null,
"seat_count": null,
"cylinders": "8",
"cylinder_count": 8,
"engine_size": null,
"engine_size_l": null,
"mileage": 290000,
"condition": "Used",
"body_type": "SUV/4x4",
"bike_type": null,
"boat_type": null,
"part_type": null,
"car_parts_type": null,
"accessory_type": null,
"number_type": null,
"plate_category": null,
"plate_number": null,
"number_digits": null,
"provider": null,
"length": null,
"width": null,
"depth": null,
"engine_count": null,
"boat_bedrooms": null,
"boat_bathrooms": null,
"kitchens": null,
"with_captain": null,
"with_driver": null,
"emergency_roadside": null,
"same_as_company_location": null,
"pick_drop_location": null,
"features": [],
"price": 110000,
"hourly_price": null,
"daily_price": null,
"weekly_price": null,
"monthly_price": null,
"zone_id": "1",
"country": null,
"street": null,
"company_id": "2183286",
"company_name": null,
"agency_id": 2014,
"agency_name": "AL-QEMA FOR CARS",
"agency_slug": "al-qema-for-cars-2014",
"agency_logo_url": "prod/2300/1787728318489-al qema .png",
"agency_type": "Showroom",
"cover_image_desktop": null,
"cover_image_mobile": null,
"logo_url": null,
"under_warranty": false,
"is_computer_checked": false,
"installments_available": false,
"is_showroom": true,
"is_reverse_gear": null,
"is_promoted": false,
"is_basic": false,
"featured_end": null,
"promote_end": null,
"refreshed_on": "2026-10-06T07:29:19.972000Z",
"expiry_date": null,
"sold_date": null,
"currency": "QAR",
"url": "https://www.qatarliving.com/en/vehicles/cars/197567_toyota_land_cruiser_gxr_2019",
"images_count": 8,
"image": "prod/toyota-land-cruiser-gxr-2019-1791271748674/1791271748674-1791271748674-1.jpg",
"title_is_arabic": false,
"user_name": "AL-QEMA FOR CARS",
"phone_number": null,
"pii_withheld": false
},
{
"id": "car_197613",
"title": "Toyota Land Cruiser GXR 2020",
"description": "Toyota Land Cruiser GXR 2020 Type: Toyota Land Cruiser Class: GXR Model: 2020 Mileage: 134,000 km Engine: 8 Cylinder Transmission: Automatic Drive System: 4X4 Color: White Price: 169,000 QAR",
"slug": "/vehicles/cars/197613_toyota_land_cruiser_gxr_2020",
"category": "Car",
"category_id": "1",
"location": null,
"zone": "Doha",
"zone_ar": "الدوحة",
"geo": null,
"images": [
{
"url": "[trimmed-depth]",
"order": "[trimmed-depth]"
},
{
"url": "[trimmed-depth]",
"order": "[trimmed-depth]"
},
{
"url": "[trimmed-depth]",
"order": "[trimmed-depth]"
}
],
"is_active": true,
"is_featured": false,
"distance_km": null,
"created_at": "2026-10-06T10:20:14.930000Z",
"updated_at": "2026-10-06T10:20:14.930000Z",
"published_date": "2026-10-06T10:20:14.930000Z",
"tags": [],
"vertical": "vehicles",
"purpose": "Sale",
"make": "Toyota",
"make_id": 82,
"model": "Land Cruiser",
"model_id": 761,
"trim": "GXR",
"year": "2020",
"year_int": 2020,
"fuel_type": null,
"gear_type": null,
"wheel_drive": null,
"imported": null,
"service_history": null,
"color": null,
"color_hex": null,
"inside_color": null,
"doors": null,
"door_count": null,
"seats": null,
"seat_count": null,
"cylinders": null,
"cylinder_count": null,
"engine_size": null,
"engine_size_l": null,
"mileage": 134000,
"condition": "Used",
"body_type": "SUV/4x4",
"bike_type": null,
"boat_type": null,
"part_type": null,
"car_parts_type": null,
"accessory_type": null,
"number_type": null,
"plate_category": null,
"plate_number": null,
"number_digits": null,
"provider": null,
"length": null,
"width": null,
"depth": null,
"engine_count": null,
"boat_bedrooms": null,
"boat_bathrooms": null,
"kitchens": null,
"with_captain": null,
"with_driver": null,
"emergency_roadside": null,
"same_as_company_location": null,
"pick_drop_location": null,
"features": [],
"price": 169000,
"hourly_price": null,
"daily_price": null,
"weekly_price": null,
"monthly_price": null,
"zone_id": "1",
"country": null,
"street": null,
"company_id": "40408",
"company_name": null,
"agency_id": 1393,
"agency_name": "Al Sumou Car",
"agency_slug": "al-sumou-car-1393",
"agency_logo_url": "prod/2300/1775793457269-Logo (94).png",
"agency_type": "Showroom",
"cover_image_desktop": null,
"cover_image_mobile": null,
"logo_url": null,
"under_warranty": false,
"is_computer_checked": false,
"installments_available": false,
"is_showroom": true,
"is_reverse_gear": null,
"is_promoted": false,
"is_basic": false,
"featured_end": null,
"promote_end": null,
"refreshed_on": "2026-10-06T10:20:14.974000Z",
"expiry_date": null,
"sold_date": null,
"currency": "QAR",
"url": "https://www.qatarliving.com/en/vehicles/cars/197613_toyota_land_cruiser_gxr_2020",
"images_count": 11,
"image": "prod/toyota-land-cruiser-gxr-2020-1791282011925/1791282011925-WhatsApp Image 2026-10-06 at 11.56.33 AM (1).jpeg",
"title_is_arabic": false,
"user_name": "AL SUMOU CAR",
"phone_number": null,
"pii_withheld": false
}
],
"similar_listings": [],
"search_id": "c18c08249caa4b4e9a22d1643ab7fe2b",
"image_paths": "storage-relative"
}
}What the Qatar Living API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search or browse Qatar Living across all eight of its indexes — second-hand items, cars, property, services, merchant deals, news and events — with the price, images, district, geo-coordinates, category tree and every structured attribute the vertical publishes. Free text works in English and Arabic; leave the query out and it becomes a filtered, sorted browse of the whole index, which is also the only way to get an exact count. | Price-intelligence teams call search to search or browse Qatar Living across all eight of its indexes. | query, vertical, sub_vertical, sort, filters, ... |
| listing | One Qatar Living listing in full, bilingual: the seller's own text and its Arabic or English counterpart, the price, the whole image set, the category breadcrumb, the geo-coordinates and every structured attribute the vertical publishes (make/model/year/mileage/gearbox on a car, bedrooms/bathrooms/area/furnishing/amenities on a flat, merchant/branches/validity/terms on a deal). | Classifieds aggregators call listing to get one Qatar Living listing in full, bilingual. | id, vertical, lang, include_pii |
| similar | More listings like this one — Qatar Living's own vector nearest-neighbour search over the listing's text. Give it a car and it returns comparable cars, give it a flat and it returns comparable flats; on news and events it returns related articles inside a recency window. | Resale and arbitrage tools call similar to get more listings like this one. | id, vertical, limit, months, lang, ... |
| suggest | Autocomplete the way Qatar Living's own search box does: the keywords and merchant names it would offer for a partial query, each with the number of listings or offers behind it, in English or Arabic. | Lead-generation teams call suggest to get autocomplete the way Qatar Living's own search box does. | query, vertical, limit, fuzzy, lang |
| popular_keywords | What Qatar is actually searching for on Qatar Living right now, per vertical — the demand signal behind the marketplace. Measured examples: classifieds fridge / washing machine / wardrobe, vehicles land cruiser / prado / camry, properties studio apartment / 1 BHK / furnished studio, deals buffet / pool access / massage, services babysitting / electrician / ac repair. | Price-intelligence teams call popular_keywords to get what Qatar is actually searching for on Qatar Living right now, per vertical. | vertical, limit, entry_type, sub_vertical, all_verticals, ... |
| facets | The filter VOCABULARY and the size of every bucket, in one call — the category tree, the car makes and models, the property types and purposes, the brands, conditions, colours and districts a vertical actually publishes, each with its live count. This is the dictionary the `filters` parameter needs, and it doubles as a market snapshot (vehicles: SUV/4x4 4154, Sedan 1131, Petrol 4634, Diesel 69 at capture). | Classifieds aggregators call facets to get the filter VOCABULARY and the size of every bucket, in one call. | facets, vertical, query, filters, lang |
| deals_map | Every merchant offer matching a query as a map pin, one pin per branch and no paging — an offer with four branches becomes four pins with the same offer id and distinct coordinates. The whole of Qatar Living's deals catalogue on a map in a single call. | Resale and arbitrage tools call deals_map to get every merchant offer matching a query as a map pin, one pin per branch and no paging. | query, filters, lang |
| merchants_map | Every merchant whose offers match a query as a map pin, one pin per distinct branch and deduped across that merchant's offers — the merchant footprint behind the deals catalogue, with no paging. | Lead-generation teams call merchants_map to get every merchant whose offers match a query as a map pin, one pin per distinct branch and dedup…. | query, filters, lang |
Call search from your stack
curl -X POST https://api.reefapi.com/qatarliving/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"land cruiser","vertical":"vehicles","limit":10}'import requests
r = requests.post(
"https://api.reefapi.com/qatarliving/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "land cruiser",
"vertical": "vehicles",
"limit": 10
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/qatarliving/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "land cruiser",
"vertical": "vehicles",
"limit": 10
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.qatarliving.search with {"query":"land cruiser","vertical":"vehicles","limit":10}.Who uses this API and why
- Track the Qatari used-car market daily: browse vehicles filtered by make and year, keeping id, price, mileage, gearbox, body type and the canonical URL, then follow any id for the full bilingual advert.
- Build a Doha rental index by browsing properties with purpose=Rent and bedroom counts, grouping QAR prices by zone and reading area_sqm, furnishing and amenities straight off each row.
- Size a category before you scrape it: one facets call returns every bucket and its live count, so you know there are 9,129 electronics and 2,927 phone listings before paging a single result.
- Watch Qatar's demand signal week by week with popular_keywords per vertical, then size each term with the count a real search returns for it.
- Map the merchant-offer landscape in one request with merchants_map and deals_map, pinning every branch of every matching deal for a location-based app.
Questions developers ask before integrating
Do I need an account, a key or a Qatari IP for the Qatar Living API?
No. Every endpoint is read without an account, a login or a cookie, and access is handled for you - you call reefapi.com from anywhere.
Which Qatar Living index should I query?
You do not have to decide first. Every answer carries vertical_counts for all eight indexes, so a single call tells you that `camry` has 39 hits in vehicles and none in classifieds. The eight are classifieds (36,670 live rows on 2026-10-06), properties (29,678), vehicles (7,340), news (2,318), services (969), deals (738), events (635) and jobs (0 - see below).
Why does the jobs vertical return nothing?
Because Qatar Living's jobs search index is empty. The vertical is accepted and listed by the source and the site has a jobs section, but the index behind search held zero documents on 2026-10-06 - on a plain browse and on real queries like `driver`. The API returns a successful response with zero rows and a warning saying so, rather than an error or a padded page.
Can I trust the result count?
On classifieds, properties, vehicles and services, yes - and a filter-only browse is exact (vehicles unfiltered 7,340, make=Toyota 1,163, condition=New 606, year from 2022 3,389). On deals, news and events a free-text total is a relevance pool, so the response sets total_is_relevance_pool and gives you the honest number in total_matched where the source publishes one. We publish the distinction instead of hiding it.
How do I find the right filter values?
Call facets. It returns the live vocabulary and the bucket size for whatever fields you name - vehicle makes and models, property types and purposes, classifieds categories, brands, conditions, colours and districts, deal categories and merchants. Add filters to it and the counts become conditional, so you can ask how many models Nissan has in stock (27 on 2026-10-06) before you page anything.
Does Arabic search work?
Yes, in both directions. Arabic queries return Arabic listings (the Arabic spelling of Nissan returned 471 vehicles, a fridge query 490 classifieds), and setting the language to Arabic returns the Arabic side of every title, category and attribute. The listing endpoint returns both languages at once.
Can I get the seller's phone number?
Qatar Living publishes a phone and WhatsApp number on every classifieds advert, and the API returns them when you explicitly ask for personal data. By default the seller's name and numbers are withheld and the row says pii_withheld: true, so nothing personal reaches your logs by accident. Business identity - company name, agency name, verified and showroom flags - is always returned.
What is the map endpoint for?
deals_map and merchants_map return the entire matching set as coordinates in one call, with no paging - one pin per branch, so a merchant with four branches becomes four pins. A single unfiltered call returned 1,242 offer pins and 386 merchant pins, which would otherwise be dozens of paged requests.
What is the Qatar Living API?
Qatar Living API is a ReefAPI endpoint group for qatar's biggest marketplace in one api: 36,670 classifieds, 29,678 properties, 7,340 vehicles, 969 services, 738 deals, news and events. It returns live JSON through POST requests under /qatarliving/v1.
Is the Qatar Living API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Qatar Living calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Qatar Living login or account?
No login to Qatar Living 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 Qatar Living 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 Qatar Living API use?
Qatar Living actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Qatar Living from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call qatarliving actions with the same key, credit pool and JSON envelope used by normal REST requests.