Google Search Scraper - SERP, People Also Ask & Real URLs avatar

Google Search Scraper - SERP, People Also Ask & Real URLs

Pricing

from $7.49 / 1,000 search pages

Go to Apify Store
Google Search Scraper - SERP, People Also Ask & Real URLs

Google Search Scraper - SERP, People Also Ask & Real URLs

Pricing

from $7.49 / 1,000 search pages

Rating

0.0

(0)

Developer

Lantern Lab

Lantern Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Security

Limited permissions

Share

Google Search Results Scraper

Give it search terms, a country and a language, and get Google's public search result pages back as structured data: every organic result with its position, title, real destination URL, displayed URL and snippet, the People Also Ask questions, related searches, text ads, Google's result count and the search URL. One row per search page. No Google login, no cookies, no account of your own. $7.49 per 1,000 search pages plus $0.005 per run start, and only pages that returned results are charged. See Pricing.

Input:

{
"queries": ["how to make cold brew coffee", "kaffeemaschine kaufen"],
"countryCode": "us",
"languageCode": "en",
"maxPagesPerQuery": 2
}

Output: one row per search page (recordType: "search_page"), followed by a free run summary. This sample is shortened from real pages (the ad comes from a different search):

{
"recordType": "search_page",
"searchQuery": { "term": "how to make cold brew coffee", "page": 1, "languageCode": "en", "countryCode": "us" },
"searchUrl": "https://www.google.com/search?q=how+to+make+cold+brew+coffee&hl=en&gl=us",
"totalResultsText": "About 145 results",
"totalResults": 145,
"organicResults": [
{
"position": 2,
"title": "A Guide to Cold Brew Coffee",
"url": "https://www.seriouseats.com/guide-to-cold-brew-5196803",
"urlStatus": "resolved",
"displayedUrl": "https://www.seriouseats.com › Ingredients › Drink Guides",
"siteName": "Serious Eats",
"snippet": "Cold brew is made using a tighter ratio—Wolczynski recommends starting with 12 ounces (340g) of coffee to 64 ounces (1814g) of water, which is a much higher ...",
"dateText": null
}
],
"peopleAlsoAsk": [
{ "question": "How do I sweeten cold brew coffee?" },
{ "question": "Can you make cold brew in the fridge?" }
],
"relatedSearches": [
{ "query": "Cold brew ratio", "url": "https://www.google.com/search?q=Cold+brew+ratio&hl=en&gl=us" }
],
"paidResults": [
{
"position": 1,
"title": "14 Insurers Compared In Mins",
"url": "https://www.chill.ie/",
"displayedUrl": "https://www.chill.ie › get-a-quote-now",
"advertiser": "Chill.ie",
"description": "Compare Prices At Chill ie — Get an instant €40 discount when you buy online. Compare 14 trusted insurers in minutes. …",
"placement": "middle"
}
],
"hasNextPage": true,
"duplicatesSkipped": 0,
"charged": true,
"partial": false,
"partialReason": null,
"statusText": "Collected 8 organic result(s) from this page.",
"collectedAt": "2026-10-30T07:41:12.311Z"
}

What it does

  • Returns the real result URL. Google's page no longer links straight to the result; it links through an opaque redirect. The Actor resolves each one to the address it opens, at no extra charge, and urlStatus tells you how each url was obtained.
  • People Also Ask, related searches, ads and the result count on every page, along with the organic results.
  • Stops at maxPagesPerQuery. Page 2 onwards is fetched only while Google shows a next page, and never past your limit, so you never pay for pages you did not ask for.
  • Deduplicates. A search term repeated in your list is searched once. An organic result that Google repeats on a later page of the same term is left out of that page and counted in duplicatesSkipped.
  • Never reports a failure as "no results". A page Google refused, did not render, or that the run never reached is still written, with partial: true, the reason in partialReason, and null (not empty) result lists. Such a page is not charged.

Input

FieldDefaultWhat it does
queries—Search terms, one per line. Google operators such as site: or quotes work as they do on Google.
countryCodeusGoogle's gl parameter: which country's results to show.
languageCodeenGoogle's hl parameter: the interface language.
maxPagesPerQuery1Pages per search term, 1 to 10. About 10 organic results per page.
resolveUrlstrueResolve each organic result to its real URL. The lookups go through the Apify datacenter proxy and are not charged. Turn it off and url is null with urlStatus: "not_requested".
proxyConfigurationApify Google SERP proxyKeep the default. Google answers other IPs with a page that only asks for JavaScript, and the run reports that as page_not_rendered.

Output fields

  • organicResults[].position counts from 1 across all pages of a term. dateText is the date Google prints in front of some snippets, exactly as written. displayedUrl is the breadcrumb Google shows; for forum and video results Google puts text there, such as a comment or view count.
  • organicResults[].urlStatus: resolved (from Google's redirect), from_page (Google gave the address directly), unresolved (Google would not resolve it, so url is null; about one result in ten in our tests), not_requested. Google's srsltid click identifier is removed from resolved URLs.
  • peopleAlsoAsk[].question: the questions shown. Google loads the answers only when a question is expanded, so answers are not included.
  • paidResults: the text ads Google rendered on the page. url is the advertiser's landing page; placement is top, middle or bottom relative to the organic results. Ads follow the location of the IP Google sees, which can differ from countryCode (organic results follow countryCode), and many pages carry none.
  • totalResults: the number in Google's own "About N results" estimate, or null when the page carries none.
  • partialReason on an uncollected page: blocked, page_not_rendered, upstream_error, charge_limit_reached, payment_required, not_collected.

The run summary (last dataset row and RUN_SUMMARY in the key-value store) gives pages written and charged, empty and missing pages by reason, URLs resolved, duplicates skipped, and why the run stopped early, if it did.

Pricing

Pay per event:

  • Search page: $7.49 per 1,000 ($0.00749 each), charged only for a page that returned at least one organic result. Empty pages, refused pages and pages never reached are free.
  • Run start: $0.005 per run.

Example: 100 search terms × 2 pages = 200 pages ≈ $1.50 + $0.005. Set a maximum charge per run in Apify Console; the Actor stops before a page it could not pay for and marks the rest charge_limit_reached.

Limits

  • Public data only. Google's ordinary public search page; no login and no personal data beyond what Google prints in a result.
  • Not included: AI Overviews and AI Mode, image/video/news tabs, and rank tracking over time.
  • Google decides what a page holds. Result counts per page vary (forums, videos and other blocks take slots), and deeper pages can stop early when Google has no next page.