Google Search Scraper (SERP Results)
Pricing
from $0.80 / 1,000 search results
Google Search Scraper (SERP Results)
Scrape Google organic results: title, URL (exact page or site homepage, flagged by urlType), breadcrumb and snippet. Build the query from market, industry and location. Pay per result.
Pricing
from $0.80 / 1,000 search results
Rating
1.0
(2)
Developer
AI_Builder
Maintained by CommunityActor stats
5
Bookmarked
200
Total users
1
Monthly active users
23 minutes ago
Last modified
Categories
Share
Google Search Scraper (SERP Results) extracts organic search results from Google Search: the result title, the result URL (the exact page, or the site's homepage when Google hides the link), Google's breadcrumb and the snippet text. It is a simple Google Search API alternative for lead generation: describe a market, an industry, a location and an exact phrase, and the Actor builds the query and returns the matching websites as rows you can export.
It does not visit the result websites and does not extract ads, maps, images, AI overviews or "People also ask" boxes.
What does Google Search Scraper do?
- Builds the query
<search query base> <domain> <location> "<information to retrieve>". Blank optional fields are left out. - Reads Google result pages one by one over plain HTTP through the Apify
GOOGLE_SERPproxy, with no browser. Google shows about 10 results per page, and the Actor reads at most 30 pages, until it has Maximum Results. - Returns real websites only. Google
/urland/gotoredirect wrappers and google.com addresses never reach your dataset. - Tells you how precise each link is with the
urlTypefield:exactfor the result page itself,originfor the site's homepage when Google encrypts the link (see Exact links and site origins). - Skips URLs containing
blogand results matching a few French keywords (utilisation,classement,séminaire), and drops duplicate URLs across pages. - Fails a run that finds nothing, so an empty or blocked search never looks like a success and never creates result charges.
Why use Google Search Scraper?
- Find companies fast: build lists of agencies or businesses in a city or industry from one query.
- Clean, honest output: every
urlis a real website, andurlTypetells you whether it is a deep link or a homepage. - Light and fast: plain HTTP requests through Apify's Google SERP proxy, no headless browser.
- Apify platform features: run it on a schedule, call it through the API, connect it to Make, Zapier or Google Sheets, and monitor every run.
Who is Google Search Scraper for?
- Sales and growth teams building lists of companies in a city or niche.
- Agencies and freelancers researching competitors for a client.
- SEO and marketing teams checking which sites rank for a query.
- Developers and AI agents that need Google organic results as structured rows.
Use cases for Google search results data
- Find marketing agencies, consultancies or shops in a given city.
- Collect company websites to pass to a contact finder.
- Track which domains appear for your target keywords.
What data can Google Search Scraper extract?
| Field | Type | Description |
|---|---|---|
title | string | Result title as shown on Google |
url | string | Exact result URL, or the site's homepage when Google encrypts the link (see urlType) |
urlType | string | exact (the result page itself) or origin (only the site's homepage was available) |
displayedUrl | string | The breadcrumb Google shows under the title, for example https://mapscraper.io › scrape › marketing-agencies-in-p.... It is not a bare hostname: it can contain › and be truncated by Google. When Google shows no breadcrumb, it is the hostname of url |
description | string | Snippet text under the result |
emphasizedKeywords | array | Tracked keywords (agence, marketing) found in the title or snippet |
type | string | Always organic |
Exact links and site origins
Google now encrypts many result links, so the real address of the page can't be read from the result page. When that happens, the Actor takes the site from the breadcrumb Google shows under the title and returns its homepage (for example https://mapscraper.io/) with urlType: "origin". The visible part of the path stays in displayedUrl. When Google shows the plain link, you get the exact page with urlType: "exact". A result is dropped only when Google shows neither a link nor a site name.
This is a real limitation, so plan for a mix of both types:
- The share of exact rows varies by query and by page. In our test runs it ranged from 0% to 63% (63% on a 30-result run, about 40% across all test runs).
- Small runs can be 100%
origin. Google's first page often encrypts every link, so a 10-result run may return only homepages. Larger runs read more pages and usually get more exact links. - Origin results are one row per site. Duplicates are removed on
url, so several encrypted results from the same site collapse into one homepage row. - The run log reports the split, for example
URL types: 19 exact, 11 origin (63% exact).
If you need deep links only, filter the dataset on urlType = exact. For company lists, origin rows are often all you need: they give you the company's website.
How to scrape Google search results
- Open the Actor and go to the Input tab.
- Enter a Search Query Base, for example
marketing agency. - Optionally add a Domain (industry), a Location and an exact phrase in Information to Retrieve.
- Set Maximum Results (up to 300).
- Click Start and download the results from the Output tab as JSON, CSV or Excel.
How much will it cost to scrape Google search results?
You pay per result, with no subscription and no rental. One result is one organic search result saved to the dataset. Failed pages, retries and empty runs never create result charges. A small standard Actor start event applies to every run. See the Pricing tab for current prices, including discounts on higher Apify plans.
Set a maximum cost per run and the Actor stops at that limit and keeps the results already saved. If the limit is too low for even one result, the run fails without charging any result.
Input
See the Input tab for all options. Example input:
{"search_query_base": "marketing agency","domain": "IA","location": "Paris","info_to_retrieve": "email, website","max_results": 30,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["GOOGLE_SERP"] }}
- Information to Retrieve is added in quotes, so Google only returns pages containing that exact phrase.
- Maximum Results goes up to 300.
- Proxy configuration defaults to the Apify
GOOGLE_SERPproxy group, which is built for Google result pages and is the recommended setting. Other proxy groups are often rate-limited by Google with HTTP 429, and the Actor logs a warning when you pick one.
Output
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. The rows below come from a real run of the input above (build 0.8.1). They show one origin row and two exact rows.
[{"title": "Extract marketing agencies in Paris — business list with emails ...","url": "https://mapscraper.io/","displayedUrl": "https://mapscraper.io › scrape › marketing-agencies-in-p...","description": "Build a list of marketing agencies in Paris from Google Maps: phone, email, website, rating and 41 fields per row. No 120-result ceiling.","emphasizedKeywords": ["marketing", "marketing"],"type": "organic","urlType": "origin"},{"title": "IM ĀYLN: International Influencer Marketing Agency","url": "https://www.imayln.com/","displayedUrl": "www.imayln.com","description": "We connect influencer marketing with paid ads (Spark/whitelisting), email, website funnels, and retail moments. Our focus is to make creator content work ...","emphasizedKeywords": ["marketing", "marketing"],"type": "organic","urlType": "exact"},{"title": "The 100 Best Marketing Automation Agencies - 2026 Reviews - Sortlist","url": "https://www.sortlist.com/marketing-automation?page=13","displayedUrl": "www.sortlist.com › Marketing › Marketing Automation","description": "... email, website conversion, CRM visibility, HubSpot support, and sales and ... TopMedia is a performance marketing agency, providing full scale marketing support ...","emphasizedKeywords": ["marketing", "marketing"],"type": "organic","urlType": "exact"}]
Where to find the output
The run's Output tab lists these outputs, by the title it shows:
- Results: the default dataset, one row per organic result (Overview view).
- Run state: the
STATEkey-value store record with result and page counters. - Debug page: the
DEBUG_PAGE1_HTMLkey-value store record, saved only when no result could be parsed from Google page 1.
Key-value store records are not billed.
Tips for scraping Google
- Results come from Google in English for the US; put the city in Location to narrow them.
- Lower Maximum Results for quick checks, and raise it when you want more exact links: later pages often carry more plaintext links than page 1.
- Make the query specific. Narrow queries return more company websites and fewer directory pages.
- If a run fails with "No search results were scraped", Google blocked the requests or the query has no organic results. Keep the proxy on the default
GOOGLE_SERPgroup and run it again.
Integrations: API, AI agents (MCP), Make, Zapier and n8n
- Apify API: run searches and read results from Python, JavaScript or cURL. See the API tab.
- AI agents (MCP): add
quaking_pail/google-serp-scraperthrough the Apify MCP server so your agent can search Google and get structured rows. - No-code: push results to Google Sheets, Airtable or a CRM with Make, Zapier, n8n or webhooks.
FAQ, disclaimers and support
Is it legal to scrape Google search results?
Our Actors are ethical and do not extract any private user data. Google Search Scraper only reads what Google shows in public search results: titles, links, breadcrumbs and snippets. A snippet can contain whatever the page shows publicly, such as a business email address or phone number. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
Why did my run fail with no results?
The Actor fails a run that saves nothing, so you can tell a blocked or empty search from a successful one, and no result is charged. Check the log for 429 or CAPTCHA messages and make sure the proxy is the default GOOGLE_SERP group.
Why do some results only contain the homepage?
Google encrypts the link behind many results. The Actor cannot decode it, so it saves the site's homepage from the breadcrumb and marks the row urlType: "origin". Rows with urlType: "exact" hold the result page itself. See Exact links and site origins.
Why is displayedUrl not a plain domain?
displayedUrl is the breadcrumb Google shows under the title, such as www.sortlist.com › Marketing › Marketing Automation. Use url when you need a clean address.
How do I report a problem?
Open an issue in the Issues tab with the run ID. If the Actor saved you time, a rating on the Reviews tab helps other users find it.
Related actors by quaking_pail
- LinkedIn Profile Finder via Google: find public LinkedIn profiles that match a role, industry and city.
- Google Search Results to LLM Text: the same kind of query, returned as one LLM-ready text.
- Website Contact Scraper: Emails & Phones: get emails, phones and team names from the websites you found.
- Website to Markdown Scraper for AI & LLMs: turn those websites into clean Markdown.
- SEO Audit & Markdown Content Scraper: on-page SEO audit plus Markdown content for every page.
- LinkedIn Jobs Scraper: LinkedIn job listings with full descriptions.
Changelog
0.8 quality update (2026-10-25)
- Output tab now lists the dataset and run records; README name matches the Store title. No change to input or output fields.
0.8
- No browser: Google result pages are fetched over plain HTTP with Crawlee CheerioCrawler. Puppeteer and Chrome are gone, so runs are faster and use less memory.
- The default proxy is now the Apify
GOOGLE_SERPgroup (before, residential). This fixes the HTTP 429 blocks that made 0.7 runs fail. urlis always a real website, never a Google/urlor/gotowrapper. Earlier versions often returned Google redirect links, anddisplayedUrlthen showedwww.google.com.- New field
urlType(exactororigin). Google encrypts many result links, and those can't be decoded. For those rows,urlis the site's homepage from the breadcrumb (origin). Only rows with a plain link get the exact page (exact). This is a real limitation: expect a mix of both. About 40% of rows were exact across our test runs, and small runs can be allorigin. displayedUrlnow holds the breadcrumb Google shows (site and visible path) instead of only the hostname. It falls back to the hostname when Google shows no breadcrumb.- For
originrows, the blog filter also checks the breadcrumb path, because the real path is hidden. - All 6 earlier output fields keep the same names and types, and none were dropped.
urlTypeis the only addition. - A run that saves no result now ends as FAILED instead of SUCCEEDED with an empty dataset. You are never charged for error rows.
- Google ignores the
numparameter, so each page holds about 10 results. The Actor reads pages one by one withstart.