Skip to main content
google_serp runs a batch of Google searches and returns the organic results of the first page for each one. One result is one query.

Run it

Inputs

hl sets the search language for the 10 codes in the table; any other value searches in English. country takes one of these 51 codes: AR AT AU BE BG BR BY CA CH CL CN CO CZ DE DK EE EG ES FI FR GB GR HK HU ID IE IN IT JP KR MX MY NL NO NZ PE PH PL PT RO RU SE SG TR TW UA US UY VE VN ZA. The United Kingdom is GB, not UK. Any other value is searched as US, reported as US in completeness.country, and named in a warning in the job’s log: “country XX is not supported yet; results are for the US.” Where a country is searched in more than one language, such as CH or BE, the language of hl picks it: country: "CH" with hl: "fr" gets the French-language Swiss results. A query repeated in one job runs, and is billed, each time. A query made only of quoted terms joined by OR (such as "@nasa" OR "nasa") is sent without its quotes, because the quoted form returns nothing; search_term still shows what you sent.

Output

One row per query that got an answer. Rows come back in the order queries finish: match them on search_term. A real row from a test job, shortened here to its first 3 of 10 results:
A query that failed, or whose page could not be read, returns no row and is not billed.

What logged-out means here

You get: the organic results of page 1 for each query, as a signed-out searcher sees them. Not available: ads, knowledge panels, People Also Ask, related searches, AI overviews, image, news and video results, local results, result counts, later pages and date-range filters.

Completeness

scraper_metadata.completeness: