Google Ads Scraper — Live Search Sponsored Ads avatar

Google Ads Scraper — Live Search Sponsored Ads

Pricing

from $5.00 / 1,000 sponsored ads

Go to Apify Store
Google Ads Scraper — Live Search Sponsored Ads

Google Ads Scraper — Live Search Sponsored Ads

Scrape LIVE Google Search sponsored ads by keyword, location, and device. One row per paid ad. Not Transparency Center. MCP/API-ready.

Pricing

from $5.00 / 1,000 sponsored ads

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

26

Total users

12

Monthly active users

6 days ago

Last modified

Share

Google Ads Scraper is an Apify Actor for people who need live Google Search sponsored-ad data by keyword, country, language, location, and device. It accepts one or more search keywords and returns one record per paid ad, with fields such as advertiser, title, description, display URL, landing URL, position, rank within the ad block, sitelinks, extensions, phone, rating, and scrape context. The outcome is a structured dataset of the sponsored ads currently shown for each query, ready for analysis, reporting, or downstream automation. It is also usable through Apify MCP.

Best fit and connected workflows

This Actor fits workflows where the question is, "Which paid ads are visible right now for this search term in this market?"

It is a strong match for:

  • PPC competitive monitoring across keywords, countries, and devices
  • ad copy research based on live search results
  • share-of-voice checks across a tracked keyword set
  • geo-specific monitoring with country and optional city targeting
  • desktop-versus-mobile comparisons for the same query
  • AI agent workflows that need sponsored-ad records from Apify MCP

For adjacent Google workflows, pair it with:

Practical scenario

Maya, a PPC analyst, starts with the keyword list ["car insurance", "crm software"]. She sets the country to us, language to en, and device to desktop so the search surface matches her reporting view.

The dataset returns fields such as:

  • advertiser
  • title
  • description
  • displayUrl
  • finalUrl
  • position
  • rankInBlock
  • sitelinks
  • extensions

From that output, Maya compares which advertisers appear in the top ad slots and reviews the landing pages and sitelinks. Her next action is to group the records by advertiser and keyword, then compare the same keywords on mobile for a second view.

Input fields

FieldTypeDescription
queriesarraySearch keywords to run on Google. One ad becomes one record. Required.
countryCodestringTwo-letter ISO country code used for geo-targeting, such as us, gb, or de.
languageCodestringTwo-letter ISO language code for the Google interface and results, such as en or fr.
locationNamestringOptional canonical city location in City,Region,Country form for city-level targeting.
devicestringdesktop or mobile.
maxAdsPerQueryintegerCost cap per keyword. Range 1-100.
maxPagesPerQueryintegerNumber of Google result pages to fetch per keyword. Range 1-5.
includeBottomAdsbooleanCapture sponsored ads shown at the bottom of the page as well as the top block.
enginestringFetching mode: auto, serpapi, or browser.
serpApiKeystringOptional SerpApi key for your own quota and rate limits.

Focused input example

{
"queries": ["car insurance", "plumber near me"],
"countryCode": "us",
"languageCode": "en",
"locationName": "New York,New York,United States",
"device": "desktop",
"maxAdsPerQuery": 10,
"maxPagesPerQuery": 1,
"includeBottomAds": true,
"engine": "auto"
}

Output fields

Each dataset item represents one sponsored ad.

FieldTypeDescription
querystringKeyword that produced the ad.
advertiserstringAdvertiser domain or name captured from the ad.
titlestringAd headline.
descriptionstringAd body copy.
displayUrlstringVanity URL shown in the ad.
finalUrlstringLanding page URL.
positionstringAd block position, such as top or bottom.
rankInBlockintegerRank within the ad block.
sitelinksarraySitelink objects attached to the ad.
extensionsarrayAdditional ad extensions captured when present.
phonestring or nullCall extension phone number when shown.
ratingstring or nullRating value when shown.
countryCodestringCountry used for the search.
languageCodestringLanguage used for the search.
devicestringDevice surface used for the search.
locationNamestring or nullCity location used for targeting, when provided.
pageintegerGoogle result page number.
searchUrlstringSearch URL used for the scrape.
scrapedAtstringISO timestamp for the record.

Illustrative output record

{
"query": "car insurance",
"advertiser": "progressive.com",
"title": "Progressive Car Insurance",
"description": "Compare coverage options and get a quote online.",
"displayUrl": "progressive.com/car-insurance",
"finalUrl": "https://www.progressive.com/auto/",
"position": "top",
"rankInBlock": 1,
"sitelinks": [
{
"title": "Get a Quote",
"url": "https://www.progressive.com/auto/quote/"
}
],
"extensions": [],
"phone": null,
"rating": null,
"countryCode": "us",
"languageCode": "en",
"device": "desktop",
"locationName": "New York,New York,United States",
"page": 1,
"searchUrl": "https://www.google.com/search?q=car+insurance&gl=us&hl=en",
"scrapedAt": "2026-05-30T12:00:00.000Z"
}

How it works

This Actor follows the live Google Search results page for the keywords you provide and extracts sponsored ads from the visible ad blocks. The contract shows support for:

  • top and bottom sponsored-ad detection
  • sitelink parsing
  • extension parsing
  • geo targeting through country and optional city location
  • desktop and mobile targeting
  • multi-strategy fallback selectors
  • residential proxy usage
  • per-ad pay-per-event billing

The output dataset stores one record per paid ad, and the key-value store includes a run summary record.

Pricing

This Actor uses Pay per event plus standard Apify platform usage.

The primary charged event is Sponsored ad, billed for each sponsored Google Search ad extracted. There is also an Actor Start event that applies when a run begins, with the amount tied to Actor memory usage. The input includes a per-keyword cost cap through maxAdsPerQuery, and your total event volume is bounded by the number of keywords multiplied by that cap.

For example, if you run ten keywords with a cap of twenty ads per keyword, the maximum sponsored-ad event count is described by that ten-times-twenty pattern, and the exact pricing details stay visible in the live Pricing tab on Apify.

Use with AI agents (MCP)

This Actor is available through Apify MCP as a tool for retrieving live Google Search sponsored-ad records.

Actor identity: khadinakbar/google-ads-scraper

Tool description: accept a keyword list and targeting options, then return one dataset record per sponsored ad with advertiser, headline, copy, landing URL, rank, and search context.

Find the live sponsored ads for these keywords in the United States on desktop. Return one record per ad, keep the query and rank fields, and include the search URL so I can trace each result back to the source search.

When an agent reads the output, the dataset items are the ad records. The ads output link points to the dataset items endpoint, and runSummary points to the key-value store record for the run summary. For large keyword sets, pagination and cost scale with the number of keywords and the maxAdsPerQuery cap, so agent prompts fits the workflow when they specify a focused query list and target surface.

API example

import { ApifyClient } from "apify-client";
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const input = {
queries: ["car insurance", "crm software"],
countryCode: "us",
languageCode: "en",
device: "desktop",
maxAdsPerQuery: 10,
includeBottomAds: true,
engine: "auto",
};
const run = await client.actor("khadinakbar/google-ads-scraper").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Best results and outcome guidance

Use the smallest input that answers the immediate question. A focused keyword list keeps the dataset easier to review and keeps the event count aligned with the ads you want to analyze. For city-level comparisons, provide locationName in the exact City,Region,Country form. For market-by-market research, keep countryCode and languageCode aligned with the audience and the Google interface language used in that market. If you want to compare search surfaces, run the same keywords on both desktop and mobile.

Design note

I found that the dataset contract includes both position and rankInBlock, which makes the ad block placement and the within-block order available as separate fields.

FAQ

Is this Actor for live Google Search ads or Transparency Center data?

This Actor returns live sponsored ads from Google Search results pages. For advertiser creative history and run dates, use the Google Ads Transparency Scraper instead.

What is one record in the dataset?

One record is one paid ad returned for one keyword on one search surface, with its advertiser, creative text, landing page, and targeting context.

Can I compare desktop and mobile ads?

Yes. The device field supports both desktop and mobile, so you can run the same keywords on each surface and compare the resulting ad sets.

Can I target a specific city?

Yes. Provide locationName in the exact City,Region,Country format to add city-level targeting on top of countryCode.

How should AI agents use the output?

Agents can read the dataset items endpoint for the ad records and use the run summary record for run-level context. The most useful fields for downstream routing are query, advertiser, title, finalUrl, position, rankInBlock, and searchUrl.

Responsible use

Use this Actor to collect publicly visible sponsored-ad data from Google Search and handle the results in line with applicable laws, Google's terms, and your own data governance practices. Keep keyword sets and targeting choices aligned with the research question, and treat the output as search-surface data for analysis, monitoring, and workflow automation.