44 lines
1.5 KiB
JavaScript

import { NextResponse } from 'next/server';
export async function GET() {
const apiKey = "37eb7f83988cfd76ffb5c5af9adc25652efe5607e39997fc7d0e054d690ef25e";
const placeId = "ChIJMzocvRE4K4gRg5HY6eu7Aek";
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}` : ""
}`;
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) {
allReviews = [...allReviews, ...data.reviews];
} else {
break;
}
if (!data.serpapi_pagination || !data.serpapi_pagination.next_page_token) {
break;
}
nextPageToken = data.serpapi_pagination.next_page_token;
await new Promise((resolve) => setTimeout(resolve, 2500));
}
return NextResponse.json({ reviews: allReviews, total: allReviews.length });
} catch (error) {
return NextResponse.json({ error: "Failed to fetch reviews", details: error.message }, { status: 500 });
}
}