harew1 adlı üyeden alıntı: mesajı görüntüle
20 sonuç veriyor place api maksimum 60 sonuç veriyor 60 sonucu elde etmek için page_token kullanabilirsiniz.
function get_places($query, $country, $language, $limit, $page) {
    global $config;
    
    $results = [];
    $total_results = 0;
    $page_token = null; // İlk sayfa için başlangıçta page_token yok

    // Limit, her istekten 20 sonuç döneceğini varsayarak API çağrı sayısını belirler
    $api_calls = ceil($limit / 20);

    for ($i = 0; $i < $api_calls; $i++) {
        $curl = curl_init();
        $post_fields = [
            'q' => $query,
            'gl' => $country,
            'hl' => $language,
            'num' => 20,
            'page' => $page + $i,
        ];

        // Eğer bir page_token varsa, isteğe dahil et
        if ($page_token) {
            $post_fields['page_token'] = $page_token;
        }

        curl_setopt_array($curl, [
            CURLOPT_URL => 'https://google.serper.dev/places',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 30,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => json_encode($post_fields),
            CURLOPT_HTTPHEADER => [
                "X-API-KEY: {$config['api_key']}",
                'Content-Type: application/json'
            ],
        ]);

        $response = curl_exec($curl);
        $err = curl_error($curl);
        curl_close($curl);

        if ($err) {
            throw new Exception("cURL Error #:" . $err);
        }

        $result = json_decode($response, true);
        if (json_last_error() !== JSON_ERROR_NONE) {
            throw new Exception("JSON decode error: " . json_last_error_msg());
        }

        $results = array_merge($results, $result['places'] ?? []);
        $total_results = $result['searchMetadata']['totalResults'] ?? 0;

        // page_token bir sonraki sayfa için güncelleniyor
        $page_token = $result['nextPageToken'] ?? null;

        // Sonuç sayısı limiti aştığında döngüyü sonlandır
        if (count($results) >= $limit || !$page_token) {
            break;
        }
    }

    return [
        'places' => array_slice($results, 0, $limit),
        'total_results' => intval($total_results)
    ];
}
fonksiyonu bu şekilde değiştirip sonraki sayfa geçişlerde diğer sonuçları da alabilirsiniz.

Api sağlayacısı Serper tek seferde max 10 sorgu çekilebileceğini yazmıştı, önerinizi inceleyeceğim, teşekkür ederim.