54 lines
2.2 KiB
JavaScript
54 lines
2.2 KiB
JavaScript
export default async function handler(req, res) {
|
|
const apiKey = "37eb7f83988cfd76ffb5c5af9adc25652efe5607e39997fc7d0e054d690ef25e";
|
|
const placeId = "ChIJW9-CDf_X1IkRnBCKKZdqyvA";
|
|
|
|
// console.log("Pages API: Starting fetch for placeId:", placeId);
|
|
|
|
let allReviews = [];
|
|
let nextPageToken = null;
|
|
|
|
try {
|
|
let pageCount = 0;
|
|
while (pageCount < 3) {
|
|
pageCount++;
|
|
const url = `https://serpapi.com/search.json?engine=google_maps_reviews&hl=en&api_key=${apiKey}&place_id=${placeId}${nextPageToken ? `&next_page_token=${nextPageToken}` : ""
|
|
}`;
|
|
|
|
// console.log(`Pages API: Fetching page ${pageCount}...`);
|
|
const response = await fetch(url);
|
|
const data = await response.json();
|
|
|
|
if (data.error) {
|
|
console.error("Pages API: SerpAPI Error:", data.error);
|
|
break;
|
|
}
|
|
|
|
if (data.reviews && data.reviews.length > 0) {
|
|
// console.log(`Pages API: Found ${data.reviews.length} reviews on page ${pageCount}`);
|
|
allReviews = [...allReviews, ...data.reviews];
|
|
} else {
|
|
// console.log(`Pages API: No reviews found on page ${pageCount}`);
|
|
if (pageCount === 1) {
|
|
// console.log("Pages API: Data received but no reviews:", JSON.stringify(data).substring(0, 500));
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (!data.serpapi_pagination || !data.serpapi_pagination.next_page_token) {
|
|
// console.log("Pages API: No more pages.");
|
|
break;
|
|
}
|
|
|
|
nextPageToken = data.serpapi_pagination.next_page_token;
|
|
// console.log("Pages API: Waiting for next page token delay...");
|
|
await new Promise((resolve) => setTimeout(resolve, 2500));
|
|
}
|
|
|
|
// console.log("Pages API: Total reviews fetched:", allReviews.length);
|
|
res.status(200).json({ reviews: allReviews, total: allReviews.length });
|
|
} catch (error) {
|
|
// console.error("Pages API: Unexpected Error:", error);
|
|
res.status(500).json({ error: "Failed to fetch reviews", details: error.message });
|
|
}
|
|
}
|