NodeJS Google Ads Scraper App

Job ID: 40317984

Budget: $10 – $30 USD

I need a NodeJS application that scrapes Google Ads (sponsored results) from Google Search results. The app should extract the actual Google ad click URLs (google.com/aclk links), NOT the final destination URLs.

### Core Features

**1. Keyword Search & Ad Scraping**

- Accept multiple keywords (one per line)
- Search each keyword on Google
- Extract ALL sponsored ads from the search results page
- Return the full `google.com/aclk?...` tracking links (not the destination URL)
- Support different Google domains (google.com, google.com.tr, google.de, etc.)


**2. Web Interface**

- Simple HTML/JS frontend (no frameworks needed)
- Input fields for:

- Keywords (textarea, one per line)
- Country/domain selection
- Proxy list (optional)
- CAPTCHA API key (optional, can also be set in config)



- Real-time progress logs
- Results table showing: Keyword, Ad Domain, Full Ad Link
- Export to CSV
- "Copy All Links" button


**3. Proxy Support (Optional)**

- Format: `ip:port:username:password`
- Rotate proxies between requests
- Skip failed proxies automatically


**4. CAPTCHA Solving Integration**
When Google shows a CAPTCHA (/sorry page), solve it using one of these services:

- **cap.guru** - API: `https://api.cap.guru/in.php` and `https://api.cap.guru/res.php`
- **2captcha** - API: `https://2captcha.com/in.php` and `https://2captcha.com/res.php`
- **captcha.fun** - API: `https://api.captcha.fun/v1/request` (Note: only supports reCAPTCHA v3, may not work for Google sorry page which uses v2)


Important CAPTCHA notes:

- Google sorry page uses reCAPTCHA v2
- After getting token, must disable reCAPTCHA widget before injecting (remove iframes/scripts)
- Wait for CAPTCHA service response (can take 30-60 seconds)
### Technical Requirements

- NodeJS with Express
- Playwright for browser automation
- NO TypeScript - pure JavaScript with `const` declarations
- SSE (Server-Sent Events) for real-time progress updates
- Headless mode configurable (for debugging)

### Expected Output Format

Keyword: "cloaker"
Ads Found:
1. Domain: example.com
Link: https://www.google.com/aclk?sa=L&ai=DChc...&adurl=https://example.com/...
2. Domain: another.com
Link: https://www.google.com/aclk?sa=L&ai=DChc...&adurl=https://another.com/...
Related categories: JavaScript CSS Web Scraping HTML Node.js Google Ads