جستوجوی هتل
موجودی لحظهای را در دو مرحله جستوجو کنید: جستوجوی شهر فهرست هتلها را با قیمت شروع برمیگرداند و سپس جستوجوی هتل نرخهای قابلرزرو همان هتل را. یک نرخ انتخاب میکنید، آن را تأیید میکنید و به سفارش تبدیلش میکنید.
جستوجوی موجودی#
به اسکوپ hotels:read نیاز دارد.
بدنه#
| فیلد | نوع | الزامی | توضیح |
|---|---|---|---|
check_in | string | الزامی | تاریخ ورود، با قالب YYYY-MM-DD. |
check_out | string | الزامی | تاریخ خروج، بعد از تاریخ ورود. |
city_id | integer | * | شناسهٔ شهر مقصد ← جستوجوی شهر. دقیقاً یکی از city_id یا hotel_id را بفرستید. |
hotel_id | integer | * | شناسهٔ یک هتل (از نتیجهٔ جستوجوی شهر) ← جستوجوی هتل با نرخهای قابلرزرو. |
occupancies | array | الزامی | یک ورودی برای هر اتاق. |
occupancies[].adults | integer | الزامی | تعداد بزرگسالان اتاق، بین 1 تا 8. |
occupancies[].children | array | اختیاری | سن کودکان، مثلاً [4, 9]. |
sort | string | اختیاری | فقط در حالت شهر: یک id مرتبسازی از sorts پاسخ (مثلاً price، stars_desc، review_score). |
filters | object | اختیاری | فقط در حالت شهر: نگاشت key فست ← آرایهای از valueـهای گزینه؛ توضیح در ادامه. |
page، page_size | integer | اختیاری | صفحهبندی (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 | درجهٔ اقامتگاه | range | 0 (بدون درجه) تا 5. |
review_score | امتیاز نظرات مهمانان | range | 5،6،7،8،9: حداقل امتیاز (مثلاً 8 یعنی ۸ و بالاتر). |
meals | وعدههای غذایی | enum | breakfast، breakfast_lunch، breakfast_dinner، full_board، all_inclusive، self_catering. |
free_cancellation | لغو رایگان | boolean | true. |
adults_only | فقط بزرگسالان | boolean | true. |
sustainable | دارای گواهی پایداری | boolean | true. |
distance_km | حداکثر فاصله از مرکز | range | 1، 3، 5 (کیلومتر). |
min_beds | حداقل تعداد تخت | range | 1 تا 5. |
min_bedrooms | حداقل تعداد اتاقخواب | range | 1 تا 4. |
bed_type | نوع تخت | enum | single (دو تخت یکنفره)، 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" } ]جستوجوی شهر: خلاصهٔ هتلها#
با 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": "…" }
}
]
}