POST /api/safaribookings/operators/search
Price: 20 credits
Search the SafariBookings directory of African safari tour operators by destination, company name, office country, comfort level, price bracket per person per day, specialization such as photographic or self-drive safaris, the extras they can arrange and their minimum customer rating. Each operator comes back with its rating and review count, offices, destinations, the kind of tours it runs, its price range in the requested currency, how many tours it offers, a sample of its headline tours with their starting price, logo and team photo.
Search African safari tour operators on SafariBookings. destination is a country/park/region slug (kenya, tanzania, serengeti). Filters: name, office_countries, comfort (luxury/mid_range/budget), price_ranges (up_to_150 ... from_751 US dollars per person per day), specializations (custom_private_tours, photographic, self_drive, birding, ...), services (international_flights, airport_transfers, ...), min_rating 1-5 and currency. Each result has id, name, rating, review_count, office_countries, destinations, tour_types, price_from/price_to, currency, tour_count, top_tours (headline tours with id, tour_title, price_from, currency and tour_url), image, photo and profile_url.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)destination string — Country, park or region slug the operator sells tours to, e.g. kenya or serengeti (default: ""; examples: "kenya", "serengeti")name string — Filter by tour operator name (default: ""; examples: "Wayfairer")office_countries array — Countries the operator has an office in (default: []; one of: "australia", "belgium", "botswana", "brazil", "canada", "comoros", "denmark", "eswatini", "ethiopia", "france", "germany", "greece", "india", "ireland", "italy", "kenya", "lesotho", "madagascar", "malawi", "mauritius", "mayotte", "mozambique", "namibia", "netherlands", "new_zealand", "nigeria", "norway", "portugal", "reunion", "russia", "rwanda", "seychelles", "singapore", "south_africa", "spain", "sweden", "switzerland", "tanzania", "uganda", "united_arab_emirates", "united_kingdom", "usa", "zambia", "zimbabwe")comfort array — Comfort levels the operator specializes in (default: []; one of: "luxury", "mid_range", "budget")price_ranges array — Price brackets per person per day in US dollars (default: []; one of: "up_to_150", "from_151_to_300", "from_301_to_500", "from_501_to_750", "from_751")specializations array — Types of safari the operator specializes in (default: []; one of: "custom_private_tours", "shared_group_tours", "day_tours", "self_drive", "guided_self_drive", "photographic", "horseback", "canoe", "birding", "golf_and_wildlife", "disabled_access")services array — Extras the operator can arrange (default: []; one of: "international_flights", "airport_transfers", "pre_post_accommodation", "pre_post_transfers", "domestic_flights", "custom_tour_extensions")min_rating integer nullable — Only operators rated this many stars or higher (min: 1; max: 5)currency string — Currency price ranges are returned in (default: "USD"; one of: "USD", "CAD", "EUR", "CHF", "CZK", "DKK", "GBP", "HUF", "ISK", "NOK", "PLN", "RON", "RUB", "SEK", "TRY", "AUD", "NZD", "AED", "CNY", "HKD", "ILS", "INR", "JPY", "KRW", "KWD", "MYR", "QAR", "SAR", "SGD", "TWD", "EGP", "NAD", "ZAR", "ARS", "BRL", "CLP", "MXN")count integer required — Max number of tour operators to return (min: 1)@type string (default: "SafaribookingsOperatorCard")id string requiredname string requiredrating number nullablereview_count integer nullableoffice_countries array (default: [])@type string (default: "SafaribookingsCountryRef")name string nullablecode string nullabledestinations array (default: [])@type string (default: "SafaribookingsCountryRef")name string nullablecode string nullabletour_types string nullableprice_from number nullableprice_to number nullablecurrency string nullabletour_count integer nullabletop_tours array (default: [])@type string (default: "SafaribookingsOperatorTopTour")id string nullabletour_title string requiredprice_from number nullablecurrency string nullabletour_url string nullableimage string nullablephoto string nullableprofile_url string nullable422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — Destination slug does not exist on SafariBookings Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.