# Google political ads with spend and impressions

**Use case:** 

Election ads carry what commercial ads never do: the spend range and impressions Google publishes per creative, with the advertiser's verified identity.

## Input

```json
{
  "domains": [
    "monday.com"
  ],
  "searchTerms": [
    "for Senate"
  ],
  "advertiserIds": [],
  "region": "US",
  "resultType": "ads",
  "adFormats": [],
  "onlyAdsWithCopy": false,
  "includeAdCopy": false,
  "maxAds": 150,
  "maxAdsPerTarget": 0,
  "adCopyConcurrency": 4,
  "requestDelaySecs": 0.3,
  "maxAdvertisersPerSearchTerm": 3,
  "startUrls": [],
  "platforms": [],
  "creativeIds": [],
  "onlyNewAds": false,
  "includeRawData": false,
  "politicalAds": true,
  "cacheStoreName": "gads-cache",
  "cacheTtlHours": 24,
  "removedAds": false,
  "ocrImageAds": false,
  "ocrConcurrency": 12
}
```

## Output

```json
{
  "advertiser_name": {
    "label": "Advertiser",
    "format": "string"
  },
  "advertiser_id": {
    "label": "Advertiser ID",
    "format": "string"
  },
  "creative_id": {
    "label": "Creative ID",
    "format": "string"
  },
  "ad_format": {
    "label": "Format",
    "format": "string"
  },
  "ad_surface": {
    "label": "Surface",
    "format": "string"
  },
  "headline": {
    "label": "Headline",
    "format": "string"
  },
  "body_text": {
    "label": "Body text",
    "format": "string"
  },
  "ad_ocr_text": {
    "label": "Image text (OCR)",
    "format": "string"
  },
  "headlines": {
    "label": "All headlines",
    "format": "array"
  },
  "descriptions": {
    "label": "All descriptions",
    "format": "array"
  },
  "display_url": {
    "label": "Display URL",
    "format": "string"
  },
  "destination_url": {
    "label": "Destination URL",
    "format": "string"
  },
  "cta": {
    "label": "Call to action",
    "format": "string"
  },
  "keyword_templates": {
    "label": "Keyword templates",
    "format": "array"
  },
  "extensions": {
    "label": "Extensions",
    "format": "array"
  },
  "first_shown": {
    "label": "First shown",
    "format": "string"
  },
  "last_shown": {
    "label": "Last shown",
    "format": "string"
  },
  "days_shown": {
    "label": "Days shown",
    "format": "integer"
  },
  "impressions_max": {
    "label": "Shown to",
    "format": "integer"
  },
  "impressions_min": {
    "label": "Shown from",
    "format": "integer"
  },
  "spend_currency": {
    "label": "Currency",
    "format": "string"
  },
  "spend_max": {
    "label": "Spend to",
    "format": "number"
  },
  "spend_min": {
    "label": "Spend from",
    "format": "number"
  },
  "image_url": {
    "label": "Image",
    "format": "string"
  },
  "image_width": {
    "label": "Width",
    "format": "integer"
  },
  "image_height": {
    "label": "Height",
    "format": "integer"
  },
  "preview_url": {
    "label": "Preview URL",
    "format": "string"
  },
  "target_domain": {
    "label": "Target domain",
    "format": "string"
  },
  "regions": {
    "label": "Declared regions",
    "format": "array"
  },
  "region": {
    "label": "Region",
    "format": "string"
  },
  "ad_url": {
    "label": "Ad URL",
    "format": "string"
  },
  "advertiser_country": {
    "label": "Advertiser country",
    "format": "string"
  },
  "advertiser_ad_count": {
    "label": "Ads published",
    "format": "integer"
  },
  "advertiser_verified": {
    "label": "Verified",
    "format": "boolean"
  },
  "matched_query": {
    "label": "Matched query",
    "format": "string"
  },
  "advertiser_url": {
    "label": "Advertiser URL",
    "format": "string"
  },
  "raw": {
    "label": "Raw record",
    "format": "object"
  },
  "advertiser_legal_name": {
    "label": "Legal name",
    "format": "string"
  },
  "advertiser_fec_id": {
    "label": "FEC ID",
    "format": "string"
  },
  "advertiser_office": {
    "label": "Office",
    "format": "string"
  },
  "advertiser_district": {
    "label": "District",
    "format": "string"
  },
  "advertiser_ads_min": {
    "label": "Total ads from",
    "format": "integer"
  },
  "advertiser_ads_max": {
    "label": "Total ads to",
    "format": "integer"
  },
  "advertiser_impressions_min": {
    "label": "Total impressions from",
    "format": "integer"
  },
  "advertiser_impressions_max": {
    "label": "Total impressions to",
    "format": "integer"
  },
  "advertiser_spend_total": {
    "label": "Total spend",
    "format": "number"
  },
  "advertiser_spend_currency": {
    "label": "Spend currency",
    "format": "string"
  },
  "advertiser_ads_total": {
    "label": "Ads total",
    "format": "integer"
  },
  "spend_by_day": {
    "label": "Spend by day",
    "format": "array"
  },
  "spend_by_region": {
    "label": "Spend by region",
    "format": "array"
  },
  "spend_by_format": {
    "label": "Spend by format",
    "format": "array"
  },
  "record_type": {
    "label": "Record type",
    "format": "string"
  },
  "policy_decided_at": {
    "label": "Removal decided",
    "format": "string"
  },
  "removal_reason": {
    "label": "Removal reason",
    "format": "string"
  },
  "violations": {
    "label": "Violations",
    "format": "array"
  }
}
```

## About this Actor

This example demonstrates how to use [Google Ads Transparency Scraper — full ad copy + image OCR](https://apify.com/hyperbach/google-ads-transparency-scraper) with a specific input configuration. Visit the [Actor detail page](https://apify.com/hyperbach/google-ads-transparency-scraper) to learn more, explore other use cases, and run it yourself.


## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
This Task's input is already configured above — use it as-is rather than inventing a new one.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For full API examples (JavaScript, Python, CLI, MCP, OpenAPI), see this Task's Actor page: https://apify.com/hyperbach/google-ads-transparency-scraper.md

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).
