/safaribookings/countries
curl --request POST \
--url https://api.anysite.io/api/safaribookings/countries \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"country": "<string>",
"timeout": 300,
"currency": "USD"
}
'import requests
url = "https://api.anysite.io/api/safaribookings/countries"
payload = {
"country": "<string>",
"timeout": 300,
"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({country: '<string>', timeout: 300, currency: 'USD'})
};
fetch('https://api.anysite.io/api/safaribookings/countries', 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/countries",
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([
'country' => '<string>',
'timeout' => 300,
'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/countries"
payload := strings.NewReader("{\n \"country\": \"<string>\",\n \"timeout\": 300,\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/countries")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"country\": \"<string>\",\n \"timeout\": 300,\n \"currency\": \"USD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/safaribookings/countries")
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 \"country\": \"<string>\",\n \"timeout\": 300,\n \"currency\": \"USD\"\n}"
response = http.request(request)
puts response.read_body[
{
"alias": "<string>",
"name": "<string>",
"@type": "SafaribookingsCountry",
"rate_from": 123,
"rate_to": 123,
"currency": "<string>",
"best_time_to_go": "<string>",
"high_season": "<string>",
"size": "<string>",
"user_ratings": {
"@type": "SafaribookingsSubjectRatings",
"rating": 123,
"review_count": 123,
"sub_ratings": {
"@type": "SafaribookingsSubRatings",
"wildlife": 123,
"scenery": 123,
"bush_vibe": 123,
"birding": 123
}
},
"expert_ratings": {
"@type": "SafaribookingsSubjectRatings",
"rating": 123,
"review_count": 123,
"sub_ratings": {
"@type": "SafaribookingsSubRatings",
"wildlife": 123,
"scenery": 123,
"bush_vibe": 123,
"birding": 123
}
},
"pros": [],
"cons": [],
"sections": [],
"parks": [],
"expert": {
"@type": "SafaribookingsSubjectExpert",
"name": "<string>",
"bio": "<string>",
"image": "<string>",
"links": [],
"expert_url": "<string>"
},
"tour_count": 123,
"image": "<string>",
"wikipedia_url": "<string>",
"map_url": "<string>",
"country_url": "<string>"
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}/safaribookings
/safaribookings/countries
Get a SafariBookings safari country guide by its slug: name, expert introduction, typical daily rate range per person in the requested currency, best time to go, high season and size, separate expert and traveller ratings broken down into wildlife, scenery, bush vibe and birding, pros and cons, the long-form guide sections, the headline parks and reserves, the author of the guide, how many safaris are on offer, header photo, Wikipedia link and map.
Price: 5 credits
⚠️ Common errors: 412: Country not found (slug with no SafariBookings country guide)
POST
/
api
/
safaribookings
/
countries
/safaribookings/countries
curl --request POST \
--url https://api.anysite.io/api/safaribookings/countries \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"country": "<string>",
"timeout": 300,
"currency": "USD"
}
'import requests
url = "https://api.anysite.io/api/safaribookings/countries"
payload = {
"country": "<string>",
"timeout": 300,
"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({country: '<string>', timeout: 300, currency: 'USD'})
};
fetch('https://api.anysite.io/api/safaribookings/countries', 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/countries",
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([
'country' => '<string>',
'timeout' => 300,
'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/countries"
payload := strings.NewReader("{\n \"country\": \"<string>\",\n \"timeout\": 300,\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/countries")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"country\": \"<string>\",\n \"timeout\": 300,\n \"currency\": \"USD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/safaribookings/countries")
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 \"country\": \"<string>\",\n \"timeout\": 300,\n \"currency\": \"USD\"\n}"
response = http.request(request)
puts response.read_body[
{
"alias": "<string>",
"name": "<string>",
"@type": "SafaribookingsCountry",
"rate_from": 123,
"rate_to": 123,
"currency": "<string>",
"best_time_to_go": "<string>",
"high_season": "<string>",
"size": "<string>",
"user_ratings": {
"@type": "SafaribookingsSubjectRatings",
"rating": 123,
"review_count": 123,
"sub_ratings": {
"@type": "SafaribookingsSubRatings",
"wildlife": 123,
"scenery": 123,
"bush_vibe": 123,
"birding": 123
}
},
"expert_ratings": {
"@type": "SafaribookingsSubjectRatings",
"rating": 123,
"review_count": 123,
"sub_ratings": {
"@type": "SafaribookingsSubRatings",
"wildlife": 123,
"scenery": 123,
"bush_vibe": 123,
"birding": 123
}
},
"pros": [],
"cons": [],
"sections": [],
"parks": [],
"expert": {
"@type": "SafaribookingsSubjectExpert",
"name": "<string>",
"bio": "<string>",
"image": "<string>",
"links": [],
"expert_url": "<string>"
},
"tour_count": 123,
"image": "<string>",
"wikipedia_url": "<string>",
"map_url": "<string>",
"country_url": "<string>"
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
API token from the dashboard
Headers
Body
application/json
Minimum string length:
1Required range:
20 <= x <= 1500Available options:
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 Response
Successful Response
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes