curl --request POST \
--url https://api.birdeye.com/resources/v1/listing/searchAi/public/business \
--header 'Content-Type: application/json' \
--data '
{
"businessNumbers": [
67348934989,
327349434334,
278237892323
],
"aiModel": "CHATGPT",
"theme": "Dental implants",
"pageNo": 1,
"pageSize": 25,
"startDate": "03/01/2026",
"endDate": "03/31/2026",
"viewReportType": "LOCATION_LEVEL"
}
'import requests
url = "https://api.birdeye.com/resources/v1/listing/searchAi/public/business"
payload = {
"businessNumbers": [67348934989, 327349434334, 278237892323],
"aiModel": "CHATGPT",
"theme": "Dental implants",
"pageNo": 1,
"pageSize": 25,
"startDate": "03/01/2026",
"endDate": "03/31/2026",
"viewReportType": "LOCATION_LEVEL"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
businessNumbers: [67348934989, 327349434334, 278237892323],
aiModel: 'CHATGPT',
theme: 'Dental implants',
pageNo: 1,
pageSize: 25,
startDate: '03/01/2026',
endDate: '03/31/2026',
viewReportType: 'LOCATION_LEVEL'
})
};
fetch('https://api.birdeye.com/resources/v1/listing/searchAi/public/business', 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.birdeye.com/resources/v1/listing/searchAi/public/business",
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([
'businessNumbers' => [
67348934989,
327349434334,
278237892323
],
'aiModel' => 'CHATGPT',
'theme' => 'Dental implants',
'pageNo' => 1,
'pageSize' => 25,
'startDate' => '03/01/2026',
'endDate' => '03/31/2026',
'viewReportType' => 'LOCATION_LEVEL'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.birdeye.com/resources/v1/listing/searchAi/public/business"
payload := strings.NewReader("{\n \"businessNumbers\": [\n 67348934989,\n 327349434334,\n 278237892323\n ],\n \"aiModel\": \"CHATGPT\",\n \"theme\": \"Dental implants\",\n \"pageNo\": 1,\n \"pageSize\": 25,\n \"startDate\": \"03/01/2026\",\n \"endDate\": \"03/31/2026\",\n \"viewReportType\": \"LOCATION_LEVEL\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.birdeye.com/resources/v1/listing/searchAi/public/business")
.header("Content-Type", "application/json")
.body("{\n \"businessNumbers\": [\n 67348934989,\n 327349434334,\n 278237892323\n ],\n \"aiModel\": \"CHATGPT\",\n \"theme\": \"Dental implants\",\n \"pageNo\": 1,\n \"pageSize\": 25,\n \"startDate\": \"03/01/2026\",\n \"endDate\": \"03/31/2026\",\n \"viewReportType\": \"LOCATION_LEVEL\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.birdeye.com/resources/v1/listing/searchAi/public/business")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"businessNumbers\": [\n 67348934989,\n 327349434334,\n 278237892323\n ],\n \"aiModel\": \"CHATGPT\",\n \"theme\": \"Dental implants\",\n \"pageNo\": 1,\n \"pageSize\": 25,\n \"startDate\": \"03/01/2026\",\n \"endDate\": \"03/31/2026\",\n \"viewReportType\": \"LOCATION_LEVEL\"\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"theme": "Dental implants",
"prompt": "Best dental implant clinics near me",
"aiModel": "CHATGPT",
"businessNumber": 67348934989,
"processedDate": "13-Mar-2026",
"businesses": [
{
"name": "SmileCare Dental Clinic",
"phone": "+91-9876543210",
"postalCode": "700091",
"address": "Salt Lake Sector V, Bidhannagar",
"city": "Kolkata",
"websiteUrl": "https://www.smilecaredental.in"
},
{
"name": "Apollo Dental Clinic",
"phone": "+91-9831123456",
"postalCode": "700020",
"address": "Park Street, Near Metro Station",
"city": "Kolkata",
"websiteUrl": "https://www.apollodentalclinics.com"
}
]
},
{
"theme": "Dental implants",
"prompt": "Affordable dental implants in India",
"aiModel": "GEMINI",
"businessNumber": 327349434334,
"processedDate": "23-Mar-2026",
"businesses": [
{
"name": "Clove Dental",
"phone": "+91-9999030303",
"postalCode": "110001",
"address": "Connaught Place, Block A",
"city": "New Delhi",
"websiteUrl": "https://www.clovedental.in"
},
{
"name": "32 Smile Dental Clinic",
"phone": "+91-9823456789",
"postalCode": "411001",
"address": "MG Road, Camp Area",
"city": "Pune",
"websiteUrl": "https://www.32smile.in"
}
]
},
{
"theme": "Dental implants",
"prompt": "Top rated dental implant specialists",
"aiModel": "CHATGPT",
"businessNumber": 278237892323,
"processedDate": "25-Mar-2026",
"businesses": [
{
"name": "Axiss Dental Clinic",
"phone": "+91-9619944444",
"postalCode": "400050",
"address": "Linking Road, Bandra West",
"city": "Mumbai",
"websiteUrl": "https://www.axissdental.com"
}
]
}
],
"total": 3
}{
"code": 1161,
"message": "Invalid API key"
}{
"code": 89,
"message": "Rate limit exceeded"
}Get Search AI Businesses
Retrieves Search AI business results for the specified business, including businesses identified by AI models for given prompts and themes.
curl --request POST \
--url https://api.birdeye.com/resources/v1/listing/searchAi/public/business \
--header 'Content-Type: application/json' \
--data '
{
"businessNumbers": [
67348934989,
327349434334,
278237892323
],
"aiModel": "CHATGPT",
"theme": "Dental implants",
"pageNo": 1,
"pageSize": 25,
"startDate": "03/01/2026",
"endDate": "03/31/2026",
"viewReportType": "LOCATION_LEVEL"
}
'import requests
url = "https://api.birdeye.com/resources/v1/listing/searchAi/public/business"
payload = {
"businessNumbers": [67348934989, 327349434334, 278237892323],
"aiModel": "CHATGPT",
"theme": "Dental implants",
"pageNo": 1,
"pageSize": 25,
"startDate": "03/01/2026",
"endDate": "03/31/2026",
"viewReportType": "LOCATION_LEVEL"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
businessNumbers: [67348934989, 327349434334, 278237892323],
aiModel: 'CHATGPT',
theme: 'Dental implants',
pageNo: 1,
pageSize: 25,
startDate: '03/01/2026',
endDate: '03/31/2026',
viewReportType: 'LOCATION_LEVEL'
})
};
fetch('https://api.birdeye.com/resources/v1/listing/searchAi/public/business', 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.birdeye.com/resources/v1/listing/searchAi/public/business",
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([
'businessNumbers' => [
67348934989,
327349434334,
278237892323
],
'aiModel' => 'CHATGPT',
'theme' => 'Dental implants',
'pageNo' => 1,
'pageSize' => 25,
'startDate' => '03/01/2026',
'endDate' => '03/31/2026',
'viewReportType' => 'LOCATION_LEVEL'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.birdeye.com/resources/v1/listing/searchAi/public/business"
payload := strings.NewReader("{\n \"businessNumbers\": [\n 67348934989,\n 327349434334,\n 278237892323\n ],\n \"aiModel\": \"CHATGPT\",\n \"theme\": \"Dental implants\",\n \"pageNo\": 1,\n \"pageSize\": 25,\n \"startDate\": \"03/01/2026\",\n \"endDate\": \"03/31/2026\",\n \"viewReportType\": \"LOCATION_LEVEL\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.birdeye.com/resources/v1/listing/searchAi/public/business")
.header("Content-Type", "application/json")
.body("{\n \"businessNumbers\": [\n 67348934989,\n 327349434334,\n 278237892323\n ],\n \"aiModel\": \"CHATGPT\",\n \"theme\": \"Dental implants\",\n \"pageNo\": 1,\n \"pageSize\": 25,\n \"startDate\": \"03/01/2026\",\n \"endDate\": \"03/31/2026\",\n \"viewReportType\": \"LOCATION_LEVEL\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.birdeye.com/resources/v1/listing/searchAi/public/business")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"businessNumbers\": [\n 67348934989,\n 327349434334,\n 278237892323\n ],\n \"aiModel\": \"CHATGPT\",\n \"theme\": \"Dental implants\",\n \"pageNo\": 1,\n \"pageSize\": 25,\n \"startDate\": \"03/01/2026\",\n \"endDate\": \"03/31/2026\",\n \"viewReportType\": \"LOCATION_LEVEL\"\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"theme": "Dental implants",
"prompt": "Best dental implant clinics near me",
"aiModel": "CHATGPT",
"businessNumber": 67348934989,
"processedDate": "13-Mar-2026",
"businesses": [
{
"name": "SmileCare Dental Clinic",
"phone": "+91-9876543210",
"postalCode": "700091",
"address": "Salt Lake Sector V, Bidhannagar",
"city": "Kolkata",
"websiteUrl": "https://www.smilecaredental.in"
},
{
"name": "Apollo Dental Clinic",
"phone": "+91-9831123456",
"postalCode": "700020",
"address": "Park Street, Near Metro Station",
"city": "Kolkata",
"websiteUrl": "https://www.apollodentalclinics.com"
}
]
},
{
"theme": "Dental implants",
"prompt": "Affordable dental implants in India",
"aiModel": "GEMINI",
"businessNumber": 327349434334,
"processedDate": "23-Mar-2026",
"businesses": [
{
"name": "Clove Dental",
"phone": "+91-9999030303",
"postalCode": "110001",
"address": "Connaught Place, Block A",
"city": "New Delhi",
"websiteUrl": "https://www.clovedental.in"
},
{
"name": "32 Smile Dental Clinic",
"phone": "+91-9823456789",
"postalCode": "411001",
"address": "MG Road, Camp Area",
"city": "Pune",
"websiteUrl": "https://www.32smile.in"
}
]
},
{
"theme": "Dental implants",
"prompt": "Top rated dental implant specialists",
"aiModel": "CHATGPT",
"businessNumber": 278237892323,
"processedDate": "25-Mar-2026",
"businesses": [
{
"name": "Axiss Dental Clinic",
"phone": "+91-9619944444",
"postalCode": "400050",
"address": "Linking Road, Bandra West",
"city": "Mumbai",
"websiteUrl": "https://www.axissdental.com"
}
]
}
],
"total": 3
}{
"code": 1161,
"message": "Invalid API key"
}{
"code": 89,
"message": "Rate limit exceeded"
}Headers
e.g. application/json
e.g. [Required] Partner specific API key provided by Birdeye for data exchange.
e.g. [Required] User associated businessNumber
Media type of the JSON request body.
Body
Comma-separated list of business numbers to retrieve the report for.
Possible values are [CHATGPT, GEMINI, PERPLEXITY]
Specifies the theme or category used to filter the report data.
Specifies the page number for paginated results. Defaults to 1.
Defines the number of records to be returned per page. Defaults to 25.
Start date for the report range (format: mm/dd/yyyy).
End date for the report range (format: mm/dd/yyyy).
Defines the level at which the report is generated. Allowed values: LOCATION_LEVEL, ACCOUNT_LEVEL
Start date for the report range (format: mm/dd/yyyy).
End date for the report range (format: mm/dd/yyyy).
Defines the level at which the report is generated. Allowed values: LOCATION_LEVEL, ACCOUNT_LEVEL