Google Search Scraper - SERP, People Also Ask & Real URLs
Pricing
from $7.49 / 1,000 search pages
Google Search Scraper - SERP, People Also Ask & Real URLs
Pricing
from $7.49 / 1,000 search pages
Rating
0.0
(0)
Developer
Lantern Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
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
urlStatustells you how eachurlwas 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 inpartialReason, andnull(not empty) result lists. Such a page is not charged.
Input
| Field | Default | What it does |
|---|---|---|
queries | — | Search terms, one per line. Google operators such as site: or quotes work as they do on Google. |
countryCode | us | Google's gl parameter: which country's results to show. |
languageCode | en | Google's hl parameter: the interface language. |
maxPagesPerQuery | 1 | Pages per search term, 1 to 10. About 10 organic results per page. |
resolveUrls | true | Resolve 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". |
proxyConfiguration | Apify Google SERP proxy | Keep 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[].positioncounts from 1 across all pages of a term.dateTextis the date Google prints in front of some snippets, exactly as written.displayedUrlis 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, sourlisnull; about one result in ten in our tests),not_requested. Google'ssrsltidclick 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.urlis the advertiser's landing page;placementistop,middleorbottomrelative to the organic results. Ads follow the location of the IP Google sees, which can differ fromcountryCode(organic results followcountryCode), and many pages carry none.totalResults: the number in Google's own "About N results" estimate, ornullwhen the page carries none.partialReasonon 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.