مستندات

جست‌وجو در مستندات

نام اندپوینت، موضوع یا کلیدواژه را بنویسید

جست‌وجوی هتل

موجودی لحظه‌ای را در دو مرحله جست‌وجو کنید: جست‌وجوی شهر فهرست هتل‌ها را با قیمت شروع برمی‌گرداند و سپس جست‌وجوی هتل نرخ‌های قابل‌رزرو همان هتل را. یک نرخ انتخاب می‌کنید، آن را تأیید می‌کنید و به سفارش تبدیلش می‌کنید.

جست‌وجوی موجودی#

POST/v3/HAPI/hotels/searches

به اسکوپ hotels:read نیاز دارد.

بدنه#

فیلدنوعالزامیتوضیح
check_instringالزامیتاریخ ورود، با قالب YYYY-MM-DD.
check_outstringالزامیتاریخ خروج، بعد از تاریخ ورود.
city_idinteger*شناسهٔ شهر مقصد ← جست‌وجوی شهر. دقیقاً یکی از city_id یا hotel_id را بفرستید.
hotel_idinteger*شناسهٔ یک هتل (از نتیجهٔ جست‌وجوی شهر) ← جست‌وجوی هتل با نرخ‌های قابل‌رزرو.
occupanciesarrayالزامییک ورودی برای هر اتاق.
occupancies[].adultsintegerالزامیتعداد بزرگسالان اتاق، بین 1 تا 8.
occupancies[].childrenarrayاختیاریسن کودکان، مثلاً [4, 9].
sortstringاختیاریفقط در حالت شهر: یک id مرتب‌سازی از sorts پاسخ (مثلاً price، stars_desc، review_score).
filtersobjectاختیاریفقط در حالت شهر: نگاشت key فست ← آرایه‌ای از valueـهای گزینه؛ توضیح در ادامه.
page، page_sizeintegerاختیاریصفحه‌بندی (page_size حداکثر 200).

فیلتر و مرتب‌سازی جست‌وجوی شهر#

فیلترها مبتنی بر فست (facet) هستند و روی کل نتیجهٔ شهر اعمال می‌شوند (نه فقط یک صفحه). پاسخ جست‌وجوی شهر شامل این‌هاست:

  • facets: گروه‌های فیلتر موجود برای این مقصد و تاریخ‌ها. هر گروه یک key، یک title، یک type و optionsـی به شکل {value, name, count} دارد. گروه‌ها شامل stars، review_score، meals، facility (اینترنت بی‌سیم رایگان، استخر و…)، room_facility، property_type، district، chain، free_cancellation و موارد دیگرند که همه در ادامه آمده‌اند.
  • sorts: گزینه‌های مرتب‌سازی، هرکدام به شکل {id, name} (مثلاً price، stars_desc، review_score، distance، popularity).
  • total: تعداد کل اقامتگاه‌های منطبق، و pagination برای صفحه‌ها.

برای فیلترکردن، filters را به‌صورت نگاشتی از key فست به آرایه‌ای از valueـهای گزینه بفرستید و sort را به‌صورت یک id مرتب‌سازی:

curl -X POST https://api.simorghapi.com/v3/HAPI/hotels/searches \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "check_in": "2026-11-14",
    "check_out": "2026-11-16",
    "city_id": 1019782831,
    "occupancies": [ { "adults": 2 } ],
    "sort": "review_score",
    "filters": {
      "stars": [4, 5],
      "facility": [107, 433],
      "meals": ["breakfast"],
      "free_cancellation": [true]
    }
  }'

هر گروه فست به شکل { key, title, type, options: [{ value, name, count }] } است. type یکی از range (اعداد مرتب)، enum (یک مجموعه) یا boolean است. برای فیلترکردن، valueـهای گزینه را زیر key گروه در filters بگذارید. چند مقدار در یک گروه با هم OR می‌شوند و گروه‌های مختلف با هم AND.

گروه‌های فیلتر

گروه‌هایی که مجموعهٔ مقادیر ثابت دارند، کامل در ادامه فهرست شده‌اند و بدون خواندن فست‌ها هم می‌توانید آن‌ها را بسازید. گروه‌هایی که با catalogue مشخص شده‌اند، مقادیرشان به مقصد بستگی دارد (شناسه‌هایی همراه با name قابل‌خواندن)؛ آن‌ها را از facets بخوانید و همان value را برگردانید.

keyعنوانtypeمقادیر
starsدرجهٔ اقامتگاهrange0 (بدون درجه) تا 5.
review_scoreامتیاز نظرات مهمانانrange5،6،7،8،9: حداقل امتیاز (مثلاً 8 یعنی ۸ و بالاتر).
mealsوعده‌های غذاییenumbreakfast، breakfast_lunch، breakfast_dinner، full_board، all_inclusive، self_catering.
free_cancellationلغو رایگانbooleantrue.
adults_onlyفقط بزرگسالانbooleantrue.
sustainableدارای گواهی پایداریbooleantrue.
distance_kmحداکثر فاصله از مرکزrange1، 3، 5 (کیلومتر).
min_bedsحداقل تعداد تختrange1 تا 5.
min_bedroomsحداقل تعداد اتاق‌خوابrange1 تا 4.
bed_typeنوع تختenumsingle (دو تخت یک‌نفره)، double.
property_typeنوع اقامتگاهenumفهرست کامل در ادامه.
facilityامکاناتenum · catalogueفهرست کامل در ادامه.
room_facilityامکانات اتاقenum · catalogueفهرست کامل در ادامه.
districtمحلهenum · per-cityمقادیر برای هر شهر متفاوت است (شناسه و نام محله)؛ آن‌ها را از facets بخوانید.
chainزنجیرهٔ هتلenum · per-cityمقادیر برای هر شهر متفاوت است (شناسه و نام زنجیره)؛ آن‌ها را از facets بخوانید.
landmarkنزدیک یک مکان شاخصenum · per-cityمقادیر برای هر شهر متفاوت است (شناسه و نام مکان شاخص)؛ آن‌ها را از facets بخوانید.

مثال: {"stars":[4,5], "facility":[107,433], "meals":["breakfast"], "free_cancellation":[true]} یعنی (۴ یا ۵ ستاره) AND (دارای اینترنت بی‌سیم رایگان و استخر) AND (با صبحانه) AND (لغو رایگان).

مقادیر property_type

valueنامvalueنام
3خانه و آپارتمان دربست216مهمان‌خانه
201آپارتمان220خانهٔ تعطیلات
203هاستل221لاج
204هتل222اقامت در منزل محلی (هوم‌استی)
205متل223خانهٔ روستایی
206ریزورت224چادر لوکس
208اقامت با صبحانه (B&B)225هتل کپسولی
209ریوکان226لاو هتل
212پارک تعطیلات228شاله
213ویلا231هتل اقتصادی
214کمپینگ235اقامتگاه دانشجویی
215قایق

مقادیر facility

valueنامvalueنام
2پارکینگ46پارکینگ رایگان
3رستوران54اسپا و مرکز سلامت
4پذیرش حیوان خانگی72امکانات باربیکیو
5سرویس اتاق107اینترنت بی‌سیم رایگان
8پذیرش ۲۴ ساعته139ترانسفر فرودگاهی (رایگان)
11باشگاه بدنسازی182ایستگاه شارژ خودروی برقی
16اتاق‌های غیرسیگاری185مناسب ویلچر
17ترانسفر فرودگاهی433استخر
28اتاق خانوادگی

مقادیر room_facility

valueنامvalueنام
5وان حمام81چشم‌انداز
11تهویهٔ مطبوع86کتری برقی
16آشپزخانهٔ کوچک93استخر اختصاصی
17بالکن108چشم‌انداز دریا
23میز کار120دستگاه قهوه‌ساز
34ماشین لباسشویی123تراس
37پاسیو998قهوه‌ساز/چای‌ساز
38حمام اختصاصی999آشپزخانه/آشپزخانهٔ کوچک
75تلویزیون صفحه‌تخت79عایق صدا
facility و room_facility گروه‌های catalogue هستند: facets پاسخ فقط مقادیری را فهرست می‌کند که برای مقصد و تاریخ‌های فعلی وجود دارند (هرکدام با count لحظه‌ای). جدول‌های بالا مقادیر کاتالوگ‌اند؛ همیشه شناسه‌هایی را بفرستید که در facets آمده‌اند.
این فیلترها همان فهرست امکانات نیستند. facility / room_facility مجموعه‌ای کوتاه و گزینش‌شده از امکاناتی هستند که می‌توانید بر اساس آن‌ها فیلتر کنید (مقادیر بالا). این‌ها با amenities هر هتل یا اتاق که در پاسخ جزئیات هتل دریافت می‌کنید یکی نیستند؛ آن یک فهرست توصیفی و متنی آزاد است (حوله‌پوش، دمپایی، سرویس بیدارباش، پریز کنار تخت و…) که از اقامتگاهی به اقامتگاه دیگر فرق می‌کند و مجموعهٔ مقادیر ثابتی ندارد. با شناسه‌های این صفحه فیلتر کنید و امکانات توصیفی را از پاسخ نمایش دهید.

گزینه‌های مرتب‌سازی

یک id مرتب‌سازی را به‌عنوان sort بفرستید (حالت شهر):

idمعنا
priceقیمت، از کم به زیاد.
stars_descستاره، از زیاد به کم.
stars_ascستاره، از کم به زیاد.
review_scoreامتیاز نظرات مهمانان، از زیاد به کم.
distanceفاصله از مرکز شهر.
popularityمحبوبیت.

نمونهٔ بخش facets

"facets": [
  { "key": "stars", "title": "Property rating", "type": "range",
    "options": [ { "value": 5, "name": "5 stars", "count": 639 }, { "value": 4, "name": "4 stars", "count": 4196 } ] },
  { "key": "facility", "title": "Facilities", "type": "enum",
    "options": [ { "value": 107, "name": "Free WiFi", "count": 6110 }, { "value": 433, "name": "Swimming pool", "count": 5604 } ] },
  { "key": "meals", "title": "Meals", "type": "enum",
    "options": [ { "value": "breakfast", "name": "Breakfast included", "count": 652 } ] },
  { "key": "free_cancellation", "title": "Free cancellation", "type": "boolean",
    "options": [ { "value": true, "name": "Free cancellation", "count": 4614 } ] }
],
"sorts": [ { "id": "price", "name": "Price (low to high)" }, { "id": "review_score", "name": "Guest review score" } ]
فهرست کامل امکانات یک اقامتگاه در جست‌وجوی هتل (با hotel_id) و زیر hotel.facility_groups هم می‌آید.

جست‌وجوی شهر: خلاصهٔ هتل‌ها#

با city_id، هر پیشنهاد یک hotel_summary است: اقامتگاه، امتیاز نظرات آن و ارزان‌ترین قیمت موجود. در این مرحله هنوز چیزی قابل‌رزرو نیست؛ hotel_id هتل موردنظر را بردارید و با آن دوباره جست‌وجو کنید.

curl -X POST https://api.simorghapi.com/v3/HAPI/hotels/searches \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "check_in": "2026-11-14",
    "check_out": "2026-11-16",
    "city_id": 1019782831,
    "occupancies": [ { "adults": 2 } ]
  }'
{
  "object": "hotel_search",
  "id": "hsr_485158995",
  "mode": "city",
  "check_in": "2026-11-14",
  "check_out": "2026-11-16",
  "nights": 2,
  "total": 6263,
  "sort": null,
  "filters_applied": {},
  "sorts": [ { "id": "price", "name": "Price (low to high)" }, { "id": "stars_desc", "name": "Stars (5 to 0)" } ],
  "facets": [
    { "key": "stars", "title": "Property rating", "type": "range", "options": [ { "value": 5, "name": "5 stars", "count": 639 } ] },
    { "key": "facility", "title": "Facilities", "type": "enum", "options": [ { "value": 107, "name": "Free WiFi", "count": 6110 } ] }
  ],
  "pagination": { "page": 1, "page_size": 140, "total_pages": 8, "has_next": true, "has_prev": false },
  "offer_count": 140,
  "offers": [
    {
      "object": "hotel_summary",
      "hotel_id": "70784396381",
      "name": "Vida Creek Harbour",
      "lead_rate": { "amount": "165.52", "currency": "USD" },
      "lead_rate_before_discount": null,
      "discount_percent": 0,
      "deal_badges": [],
      "meal_plan": "Room Only",
      "refundable": true,
      "free_cancellation": true,
      "nights": 2,
      "occupancy": { "adults": 2, "children": 0 },
      "rating": 5,
      "review_score": 8.6,
      "review_count": 1565,
      "review_word": "Very good",
      "accommodation": "Hotels",
      "address": { "city": "Dubai", "country": "United Arab Emirates", "country_code": "AE" },
      "location": { "lat": 25.19, "lng": 55.35 },
      "images": [ "…" ]
    }
  ]
}

با hotel_id، پاسخ اطلاعات اقامتگاه را یک بار زیر hotel می‌آورد (نشانی، ساعت ورود و خروج، توضیحات، امکانات) و هر پیشنهاد یک hotel_rate قابل‌رزرو است با شناسهٔ نرخ واقعی، نوع پذیرایی، اتاق و شرایط لغو.

{
  "object": "hotel_search",
  "id": "hsr_738363500",
  "mode": "hotel",
  "check_in": "2026-11-14",
  "check_out": "2026-11-16",
  "nights": 2,
  "hotel": {
    "id": "70784396381",
    "name": "Vida Creek Harbour",
    "rating": 5,
    "address": { "line": "…", "city": "Dubai", "country": "United Arab Emirates", "country_code": "AE", "postal_code": "…" },
    "location": { "lat": 25.19, "lng": 55.35 },
    "images": [ "…" ],
    "description": "…",
    "check_in_from": "15:00",
    "check_out_until": "12:00",
    "facility_groups": [ { "name": "General", "facilities": [ "Air conditioning", "…" ] } ]
  },
  "offer_count": 39,
  "offers": [
    {
      "object": "hotel_rate",
      "id": "hrt_TkRNNU5qTTRNWHd5…",
      "total": { "amount": "165.52", "currency": "USD" },
      "total_before_discount": null,
      "discount_percent": 0,
      "deal_badges": [],
      "refundable": true,
      "refundable_until": "2026-11-12T23:59:00",
      "available_rooms": 5,
      "units": 1,
      "board": "Breakfast included",
      "board_basis": "breakfast_included",
      "board_included": [ "Breakfast included (Buffet)" ],
      "rooms": [
        {
          "id": "…",
          "name": "Classic Twin Room with City View",
          "adults": 2,
          "children": 0,
          "beds": [ "2 single beds" ],
          "max_occupancy": 2,
          "size_m2": 32,
          "description": "…",
          "images": [ "…" ]
        }
      ],
      "payment": { "title": "Pay online", "description": "…", "deposit_required": true },
      "cancellation": { "non_refundable": false, "type": "free_cancellation", "policy_text": "…" }
    }
  ]
}
نرخ‌ها استعلام قیمت‌اند. درست پیش از رزرو نرخ را تأیید کنید تا قیمت و موجودی قطعی شود. قدم بعدی، یعنی تأیید نرخ، همین کار را انجام می‌دهد و پیش از ثبت سفارش الزامی است.
ویرایش این صفحه در گیت‌هابمشکلی دیدید؟ از پنل ← پشتیبانی خبرمان کنید.