Search places to stay on Airbnb — apartments, houses, rooms, cabins, villas and hotels — in any city, region or country, for given dates and guests: price for the stay, rating and review count, Guest favourite / Superhost badges, beds and baths, coordinates, photos and a link that opens the same stay. Filter by room type, minimum bedrooms and total price. One page is up to 18 stays; page 2–15 for more (Airbnb caps a search at 270). Pass a listing's id to airbnb_listing for amenities, house rules and the host. Scraped live from airbnb.pl (typically ~1 s via direct fetch; ~10 s when it falls back to an unblocker). WITH checkin + checkout, price is the TOTAL for the whole stay for the given guests, all fees and taxes included (Airbnb's EU total-price display), in currency; price_per_night = price ÷ nights; price_before_discount is the struck-through total when discounted; price_breakdown lists Airbnb's own lines (e.g. '2 noce x 245,00 zł' → 490, 'Podatki' → 8). Stays of 28+ nights are quoted per month: price null, price_per_month set. WITHOUT dates, Airbnb prices each listing for its own suggested stay (its stay, usually ~5 nights soon), so prices are not comparable and not a quote — a note says so; pass dates to quote a trip. Only stays bookable for the given dates are listed. Result shape: { source, fetchedAt, query, search_url, place: { query, place_id, resolved, city, region, country }, stay: { checkin, checkout, nights } | null, guests: { adults, children, infants, pets }, currency, total_count, page, total_pages, count, listings: [...], note? } — the list key is listings; total_count is Airbnb's count of matches (more than it lets you page through). Each listing: { id, url, name, kind, city, details, bedrooms, beds, baths, host_type, rating, review_count, is_new, guest_favorite, superhost, badges, free_cancellation, stay, price_basis, price, price_per_night, price_per_month, price_before_discount, nights, currency, price_text, price_breakdown, lat, lng, photos }. rating is 0–5; kind/city/details/price_text are Airbnb's Polish wording (e.g. kind 'Mieszkanie' = apartment, 'Pokój' = room, 'Dom' = house); host_type is business | private; coordinates are approximate (Airbnb blurs them). An empty match answers count: 0 with a note saying why and what to change — that is a successful result, not an error.