{"openapi":"3.1.0","info":{"title":"nurPOLEN Agent-API","version":"1.0.0","description":"\u00d6ffentliche, tokenfreie Read-only-API f\u00fcr Hotelsuche (Kur- und SPA-Reisen nach Polen). Preise sind unverbindlich.\n\nKein Token. Rate-Limit: 60 Anfragen\/Minute\/IP. Nur aktive Hotels. Keine Buchung.\n\nPreise immer als unverbindlich formulieren. Buchung nur \u00fcber inquiry_url auf nurpolen.de.\n\nBeispiele:\n\n- https:\/\/nurpolen.de\/api\/agent\/hotels\/search?location=Swinem\u00fcnde\n\n- https:\/\/nurpolen.de\/api\/agent\/hotels\/lookup?hotel_name=PLATINO+MARE+RESORT+SPA&location=Swinem\u00fcnde\n\n- https:\/\/nurpolen.de\/api\/agent\/hotels\/quote?hotel_name=PLATINO+MARE+RESORT+SPA&location=Swinem\u00fcnde&check_in=2026-09-26&nights=7&adults=2"},"servers":[{"url":"https:\/\/nurpolen.de"}],"paths":{"\/api\/agent\/destinations":{"get":{"operationId":"listDestinations","summary":"Reiseziele","description":"Listet aktive CMS-Reiseziele (Kurorte).","responses":{"200":{"description":"Reiseziele","content":{"application\/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"destinations":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"}}}}}}}}}}}},"\/api\/agent\/hotels\/search":{"get":{"operationId":"searchHotels","summary":"Hotels suchen","description":"Suche nach Ort\/Name inkl. unverbindlichem Preis (price_hint) und Deep-Links. Deutsche Ortsnamen (Kolberg, Swinem\u00fcnde).","parameters":[{"name":"location","in":"query","required":false,"description":"Ort, z. B. Kolberg oder Swinem\u00fcnde.","schema":{"type":"string"}},{"name":"hotel_name","in":"query","required":false,"description":"Optionaler Hotelname oder Namensfragment.","schema":{"type":"string"}},{"name":"keywords","in":"query","required":false,"description":"Freie Suchbegriffe, falls kein hotel_name gesetzt ist.","schema":{"type":"string"}},{"name":"check_in","in":"query","required":false,"description":"Anreise YYYY-MM-DD f\u00fcr den unverbindlichen Preis.","schema":{"type":"string"}},{"name":"nights","in":"query","required":false,"description":"N\u00e4chte, Standard 7.","schema":{"type":"integer","minimum":1,"maximum":60}},{"name":"adults","in":"query","required":false,"description":"Erwachsene, Standard 2.","schema":{"type":"integer","minimum":1,"maximum":20}},{"name":"children","in":"query","required":false,"description":"Kinder, Standard 0.","schema":{"type":"integer","minimum":0,"maximum":20}},{"name":"meal_plan","in":"query","required":false,"description":"Optional Verpflegung f\u00fcr den unverbindlichen Preis.","schema":{"type":"string"}}],"responses":{"200":{"description":"Trefferliste mit hotel_url und inquiry_url","content":{"application\/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean"},"disclaimer":{"type":"string","example":"unverbindlich"},"travel_total_eur":{"type":"number"},"grand_total_eur":{"type":"number"},"price_per_person_eur":{"type":"number"},"hotel_url":{"type":"string","format":"uri"},"inquiry_url":{"type":"string","format":"uri"}}}}}},"422":{"description":"Validierung fehlgeschlagen (z. B. inaktive hotel_id)."},"429":{"description":"Rate-Limit 60 Anfragen\/Minute\/IP."}}}},"\/api\/agent\/hotels\/lookup":{"get":{"operationId":"lookupHotel","summary":"Hotel nachschlagen","description":"Details und Ausstattung nach Name, optional Ort.","parameters":[{"name":"hotel_name","in":"query","required":true,"description":"Hotelname oder Namensfragment, z. B. PLATINO MARE.","schema":{"type":"string"}},{"name":"location","in":"query","required":false,"description":"Ort zur Disambiguierung, z. B. Swinem\u00fcnde.","schema":{"type":"string"}},{"name":"keywords","in":"query","required":false,"description":"Alternative zu hotel_name.","schema":{"type":"string"}}],"responses":{"200":{"description":"Hoteldetails oder Mehrfachtreffer","content":{"application\/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean"},"disclaimer":{"type":"string","example":"unverbindlich"},"travel_total_eur":{"type":"number"},"grand_total_eur":{"type":"number"},"price_per_person_eur":{"type":"number"},"hotel_url":{"type":"string","format":"uri"},"inquiry_url":{"type":"string","format":"uri"}}}}}},"422":{"description":"Validierung fehlgeschlagen (z. B. inaktive hotel_id)."},"429":{"description":"Rate-Limit 60 Anfragen\/Minute\/IP."}}}},"\/api\/agent\/hotels\/{hotel_id}":{"get":{"operationId":"getHotel","summary":"Hotel-Details per ID","parameters":[{"name":"hotel_id","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Hotel-ID aus search oder lookup."}],"responses":{"200":{"description":"Details oder found=false","content":{"application\/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean"},"disclaimer":{"type":"string","example":"unverbindlich"},"travel_total_eur":{"type":"number"},"grand_total_eur":{"type":"number"},"price_per_person_eur":{"type":"number"},"hotel_url":{"type":"string","format":"uri"},"inquiry_url":{"type":"string","format":"uri"}}}}}},"422":{"description":"Validierung fehlgeschlagen (z. B. inaktive hotel_id)."},"429":{"description":"Rate-Limit 60 Anfragen\/Minute\/IP."}}}},"\/api\/agent\/hotels\/quote":{"get":{"operationId":"quoteHotel","summary":"Unverbindlichen Preis berechnen","description":"Gesamtpreis wie auf der Website. Pflicht: hotel_name oder hotel_id, check_in, adults oder persons. Antwortfelder travel_total_eur, grand_total_eur, price_per_person_eur, disclaimer (unverbindlich), hotel_url, inquiry_url.","parameters":[{"name":"hotel_id","in":"query","required":false,"description":"Hotel-ID (oder hotel_name).","schema":{"type":"integer","minimum":1,"maximum":999999}},{"name":"hotel_name","in":"query","required":false,"description":"Hotelname (oder hotel_id).","schema":{"type":"string"}},{"name":"location","in":"query","required":false,"description":"Ort zur Disambiguierung, z. B. Kolberg.","schema":{"type":"string"}},{"name":"check_in","in":"query","required":true,"description":"Anreise YYYY-MM-DD.","schema":{"type":"string"}},{"name":"check_out","in":"query","required":false,"description":"Abreise YYYY-MM-DD (Alternative zu nights).","schema":{"type":"string"}},{"name":"nights","in":"query","required":false,"description":"N\u00e4chte, Standard 7.","schema":{"type":"integer","minimum":1,"maximum":60}},{"name":"adults","in":"query","required":false,"description":"Erwachsene (oder persons).","schema":{"type":"integer","minimum":1,"maximum":20}},{"name":"persons","in":"query","required":false,"description":"Kurzform: alle Personen als Erwachsene.","schema":{"type":"integer","minimum":1,"maximum":20}},{"name":"children","in":"query","required":false,"description":"Anzahl Kinder, Standard 0.","schema":{"type":"integer","minimum":0,"maximum":20}},{"name":"meal_plan","in":"query","required":false,"description":"Verpflegung, z. B. Halbpension.","schema":{"type":"string"}},{"name":"room_type","in":"query","required":false,"description":"Zimmertyp, z. B. Doppelzimmer.","schema":{"type":"string"}},{"name":"plz","in":"query","required":false,"description":"Deutsche PLZ (5 Ziffern) f\u00fcr Transferpreis.","schema":{"type":"string"}}],"responses":{"200":{"description":"Unverbindlicher Preis","content":{"application\/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean"},"disclaimer":{"type":"string","example":"unverbindlich"},"travel_total_eur":{"type":"number"},"grand_total_eur":{"type":"number"},"price_per_person_eur":{"type":"number"},"hotel_url":{"type":"string","format":"uri"},"inquiry_url":{"type":"string","format":"uri"}}}}}},"422":{"description":"Validierung fehlgeschlagen (z. B. inaktive hotel_id)."},"429":{"description":"Rate-Limit 60 Anfragen\/Minute\/IP."}}}}}}