export default async function handler(req, res) { const apiKey = "8f20ae2ffd1700f38274ea87d2230ea8e0982834f8376bf311e7a4f5092662a8"; 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 }); } }