curl --request POST \
--url https://api.anysite.io/api/safaribookings/operators/search \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"count": 2,
"timeout": 300,
"destination": "",
"name": "",
"office_countries": [],
"comfort": [],
"price_ranges": [],
"specializations": [],
"services": [],
"min_rating": 3,
"currency": "USD"
}
'import requests
url = "https://api.anysite.io/api/safaribookings/operators/search"
payload = {
"count": 2,
"timeout": 300,
"destination": "",
"name": "",
"office_countries": [],
"comfort": [],
"price_ranges": [],
"specializations": [],
"services": [],
"min_rating": 3,
"currency": "USD"
}
headers = {
"access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
count: 2,
timeout: 300,
destination: '',
name: '',
office_countries: [],
comfort: [],
price_ranges: [],
specializations: [],
services: [],
min_rating: 3,
currency: 'USD'
})
};
fetch('https://api.anysite.io/api/safaribookings/operators/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.anysite.io/api/safaribookings/operators/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'count' => 2,
'timeout' => 300,
'destination' => '',
'name' => '',
'office_countries' => [
],
'comfort' => [
],
'price_ranges' => [
],
'specializations' => [
],
'services' => [
],
'min_rating' => 3,
'currency' => 'USD'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"access-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.anysite.io/api/safaribookings/operators/search"
payload := strings.NewReader("{\n \"count\": 2,\n \"timeout\": 300,\n \"destination\": \"\",\n \"name\": \"\",\n \"office_countries\": [],\n \"comfort\": [],\n \"price_ranges\": [],\n \"specializations\": [],\n \"services\": [],\n \"min_rating\": 3,\n \"currency\": \"USD\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("access-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.anysite.io/api/safaribookings/operators/search")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"count\": 2,\n \"timeout\": 300,\n \"destination\": \"\",\n \"name\": \"\",\n \"office_countries\": [],\n \"comfort\": [],\n \"price_ranges\": [],\n \"specializations\": [],\n \"services\": [],\n \"min_rating\": 3,\n \"currency\": \"USD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/safaribookings/operators/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"count\": 2,\n \"timeout\": 300,\n \"destination\": \"\",\n \"name\": \"\",\n \"office_countries\": [],\n \"comfort\": [],\n \"price_ranges\": [],\n \"specializations\": [],\n \"services\": [],\n \"min_rating\": 3,\n \"currency\": \"USD\"\n}"
response = http.request(request)
puts response.read_body[
{
"id": "<string>",
"name": "<string>",
"@type": "SafaribookingsOperatorCard",
"rating": 123,
"review_count": 123,
"office_countries": [],
"destinations": [],
"tour_types": "<string>",
"price_from": 123,
"price_to": 123,
"currency": "<string>",
"tour_count": 123,
"top_tours": [],
"image": "<string>",
"photo": "<string>",
"profile_url": "<string>"
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}/safaribookings/operators/search
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.
Price: 20 credits per 10 results
⚠️ Common errors: 412: Destination slug does not exist on SafariBookings
curl --request POST \
--url https://api.anysite.io/api/safaribookings/operators/search \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"count": 2,
"timeout": 300,
"destination": "",
"name": "",
"office_countries": [],
"comfort": [],
"price_ranges": [],
"specializations": [],
"services": [],
"min_rating": 3,
"currency": "USD"
}
'import requests
url = "https://api.anysite.io/api/safaribookings/operators/search"
payload = {
"count": 2,
"timeout": 300,
"destination": "",
"name": "",
"office_countries": [],
"comfort": [],
"price_ranges": [],
"specializations": [],
"services": [],
"min_rating": 3,
"currency": "USD"
}
headers = {
"access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
count: 2,
timeout: 300,
destination: '',
name: '',
office_countries: [],
comfort: [],
price_ranges: [],
specializations: [],
services: [],
min_rating: 3,
currency: 'USD'
})
};
fetch('https://api.anysite.io/api/safaribookings/operators/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.anysite.io/api/safaribookings/operators/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'count' => 2,
'timeout' => 300,
'destination' => '',
'name' => '',
'office_countries' => [
],
'comfort' => [
],
'price_ranges' => [
],
'specializations' => [
],
'services' => [
],
'min_rating' => 3,
'currency' => 'USD'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"access-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.anysite.io/api/safaribookings/operators/search"
payload := strings.NewReader("{\n \"count\": 2,\n \"timeout\": 300,\n \"destination\": \"\",\n \"name\": \"\",\n \"office_countries\": [],\n \"comfort\": [],\n \"price_ranges\": [],\n \"specializations\": [],\n \"services\": [],\n \"min_rating\": 3,\n \"currency\": \"USD\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("access-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.anysite.io/api/safaribookings/operators/search")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"count\": 2,\n \"timeout\": 300,\n \"destination\": \"\",\n \"name\": \"\",\n \"office_countries\": [],\n \"comfort\": [],\n \"price_ranges\": [],\n \"specializations\": [],\n \"services\": [],\n \"min_rating\": 3,\n \"currency\": \"USD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/safaribookings/operators/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"count\": 2,\n \"timeout\": 300,\n \"destination\": \"\",\n \"name\": \"\",\n \"office_countries\": [],\n \"comfort\": [],\n \"price_ranges\": [],\n \"specializations\": [],\n \"services\": [],\n \"min_rating\": 3,\n \"currency\": \"USD\"\n}"
response = http.request(request)
puts response.read_body[
{
"id": "<string>",
"name": "<string>",
"@type": "SafaribookingsOperatorCard",
"rating": 123,
"review_count": 123,
"office_countries": [],
"destinations": [],
"tour_types": "<string>",
"price_from": 123,
"price_to": 123,
"currency": "<string>",
"tour_count": 123,
"top_tours": [],
"image": "<string>",
"photo": "<string>",
"profile_url": "<string>"
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
API token from the dashboard
Headers
Body
x >= 120 <= x <= 1500australia, 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 luxury, mid_range, budget up_to_150, from_151_to_300, from_301_to_500, from_501_to_750, from_751 custom_private_tours, shared_group_tours, day_tours, self_drive, guided_self_drive, photographic, horseback, canoe, birding, golf_and_wildlife, disabled_access international_flights, airport_transfers, pre_post_accommodation, pre_post_transfers, domestic_flights, custom_tour_extensions 1 <= x <= 5USD, 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 Response
Successful Response
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes