Blog

Fixing the Google Maps Scraper: When Microsoft Shuts Down the Playwright CDN

**TL;DR:** Microsoft removed all old Playwright drivers from their Azure CDN in June 2026, breaking the `google-maps-scraper` project. This post documents the problem, failed solutions, and the working fix that patches the dependency chain.

---

## The Problem

After a routine update attempt, the Google Maps Scraper failed with cryptic 404 errors:

```

error: got non 200 status code: 404 (404 Not Found) from https://playwright.azureedge.net/builds/driver/playwright-1.57.0-linux.zip

error: got non 200 status code: 404 (404 Not Found) from https://playwright-akamai.azureedge.net/builds/driver/playwright-1.57.0-linux.zip

error: got non 200 status code: 404 (404 Not Found) from https://playwright-verizon.azureedge.net/builds/driver/playwright-1.57.0-linux.zip

```

### Root Cause Analysis

The dependency chain looked like this:

```

google-maps-scraper

    └── scrapemate v1.2.1

            └── playwright-community/playwright-go v0.5700.1

                    └── Playwright driver 1.57.0 (404 Not Found ❌)

```

**What happened:**

- Microsoft deprecated their Azure CDN for Playwright drivers in June 2026

- All driver versions before 1.61.x were removed

- The `playwright-community/playwright-go` fork (used by `scrapemate`) was abandoned

- Only `mxschmitt/playwright-go` (the official maintained fork) works with new CDN URLs

---

## Failed Solutions

### Attempt 1: Manual Driver Download

**Idea:** Download driver 1.57.0 from alternative sources.

**Result:** ❌ The driver simply doesn't exist anywhere anymore.

---

### Attempt 2: Use Newer Driver with Version Patching

**Idea:** Download driver 1.61.1 and patch its `package.json` to report version 1.57.0.

```bash

# Download working driver

go run github.com/mxschmitt/playwright-go/cmd/playwright@latest install

# Patch version metadata

sed -i 's/"version": "1.61.1"/"version": "1.57.0"/' \

  ~/.cache/ms-playwright-go/1.61.1/package/package.json

```

**Result:** ❌ Protocol incompatibility. The library and driver speak different protocols:

```

panic: Debugger

goroutine 52 [running]:

github.com/playwright-community/playwright-go.createObjectFactory(...)

    /home/maw/go/pkg/mod/github.com/playwright-community/playwright-go@v0.5700.1/objectFactory.go:83

```

---

### Attempt 3: Update scrapemate Dependency

**Idea:** Update to the latest `scrapemate` version.

```bash

go get -u github.com/gosom/scrapemate@latest

go mod tidy

```

**Result:** ❌ `scrapemate v1.2.1` (latest as of July 2026) still uses the broken `playwright-community` fork.

---

### Attempt 4: Force Dependency Replacement

**Idea:** Use Go's `replace` directive to swap the playwright dependency.

```go

replace github.com/playwright-community/playwright-go => github.com/mxschmitt/playwright-go v0.6100.0

```

**Result:** ❌ Go module conflicts due to internal package usage.

---

## The Working Solution

Since upstream wasn't fixed, the only option was **local patching of scrapemate**.

### Step 1: Clone and Patch scrapemate

```bash

cd ~/google-maps-scraper

# Clone scrapemate locally

git clone https://github.com/gosom/scrapemate.git scrapemate-local

cd scrapemate-local

# Replace all playwright-community imports with mxschmitt

find . -name "*.go" -type f -exec sed -i \

  's|github.com/playwright-community/playwright-go|github.com/mxschmitt/playwright-go|g' {} +

# Update go.mod

sed -i 's|github.com/playwright-community/playwright-go.*|github.com/mxschmitt/playwright-go v0.6100.0|' go.mod

# Tidy dependencies

go mod tidy

```

### Step 2: Use Local Patched Version

```bash

cd ~/google-maps-scraper

# Add replace directive to use local scrapemate

echo "" >> go.mod

echo "replace github.com/gosom/scrapemate => ./scrapemate-local" >> go.mod

# Tidy

go mod tidy

```

### Step 3: Run the Scraper

```bash

go run main.go -data-folder /path/to/output

```

**Result:** ✅ Success!

```

2026/07/18 16:17:34 INFO Downloading browsers...

2026/07/18 16:17:35 INFO Downloaded browsers successfully

{"level":"info","component":"scrapemate","message":"starting scrapemate"}

{"level":"info","component":"scrapemate","numOfJobsCompleted":204,"numOfJobsFailed":0,"speed":"22.67 jobs/min"}

```

---

## Why This Works

The patched solution fixes the entire dependency chain:

```

google-maps-scraper

    └── scrapemate (local patched version)

            └── mxschmitt/playwright-go v0.6100.0 ✅

                    └── Playwright driver 1.61.1 (downloads successfully ✅)

```

**Key differences:**

- `mxschmitt/playwright-go v0.6100.0` uses updated CDN URLs

- Driver 1.61.1 is available and downloads successfully

- Protocol compatibility between library and driver

- No external CDN dependencies on deprecated URLs

---

## Making It Portable: Docker Image

To preserve the working setup, I created a Docker image:

```dockerfile

FROM golang:1.26-bookworm

# Install Playwright dependencies

RUN apt-get update && apt-get install -y \

    ca-certificates fonts-liberation libasound2 \

    libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 \

    libcups2 libdbus-1-3 libdrm2 libgbm1 \

    libgtk-3-0 libnspr4 libnss3 libwayland-client0 \

    libxcomposite1 libxdamage1 libxfixes3 \

    libxkbcommon0 libxrandr2 xdg-utils \

    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Copy working system (includes patched scrapemate-local)

COPY . .

# Copy working Playwright driver

RUN mkdir -p /root/.cache/ms-playwright-go && \

    cp -r .playwright-cache/* /root/.cache/ms-playwright-go/

RUN mkdir -p /data

EXPOSE 8080

CMD ["go", "run", "main.go", "-data-folder", "/data"]

```

**Build and save:**

```bash

# Build image

sudo docker build -f Dockerfile.fixed -t google-maps-scraper:fixed .

# Save for backup/portability

sudo docker save google-maps-scraper:fixed | gzip > google-maps-scraper-fixed.tar.gz

# Use on any system

docker load < google-maps-scraper-fixed.tar.gz

docker run -d -p 8080:8080 -v ./output:/data google-maps-scraper:fixed

```

---

## Lessons Learned

### 1. **CDN Deprecation is a Real Risk**

Cloud providers can and will remove old files. Always have fallback strategies.

### 2. **Abandoned Forks Are Dangerous**

`playwright-community/playwright-go` was abandoned. Always check if dependencies are actively maintained.

### 3. **Protocol Compatibility Matters**

You can't just swap driver versions. The library and driver must speak the same protocol version.

### 4. **Local Patching Works**

When upstream is broken and unresponsive, local patches can save the day.

### 5. **Docker Preserves Working States**

Containerizing a working system ensures reproducibility across environments.

---

## Impact

This issue affects **all users** of `google-maps-scraper` since the CDN shutdown in June 2026. The fix has been:

- Tested with 200+ successful scraping jobs

- Packaged as a Docker image for portability

- Documented for the community

### GitHub Issue

I've opened an issue on the upstream repository to help others facing this problem:

- **Repository:** https://github.com/gosom/google-maps-scraper

- **Issue:** Playwright driver download fails - Azure CDN shutdown

---

## Conclusion

What started as a simple "driver not found" error turned into a deep dive through:

- Dependency chains

- Protocol compatibility

- CDN infrastructure changes

- Go module system intricacies

The solution required patching a dependency two levels deep in the chain, but the result is a stable, working scraper that will continue functioning regardless of upstream changes.

**Final Stats:**

- Time to debug: ~90 minutes

- Failed attempts: 4

- Working solution: Local dependency patching

- Success rate: 204/204 jobs (100%)

- Speed: 22.67 jobs/min

---

## Resources

- **Google Maps Scraper:** https://github.com/gosom/google-maps-scraper

- **Scrapemate:** https://github.com/gosom/scrapemate

- **Playwright-Go (Official):** https://github.com/mxschmitt/playwright-go

- **Playwright-Go (Abandoned):** https://github.com/playwright-community/playwright-go

---

*Published: July 18, 2026*  

*Tags: #golang #playwright #webscraping #debugging #docker*

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Dieses Feld ist ein Pflichtfeld

Dieses Feld ist ein Pflichtfeld

Dieses Feld ist ein Pflichtfeld

Bei der Übermittlung Ihrer Nachricht ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.

Sicherheitsüberprüfung

Ungültiger Captcha-Code. Versuchen Sie es erneut.

Information icon

Wir benötigen Ihre Zustimmung zum Laden der Übersetzungen

Wir nutzen einen Drittanbieter-Service, um den Inhalt der Website zu übersetzen, der möglicherweise Daten über Ihre Aktivitäten sammelt. Bitte überprüfen Sie die Details in der Datenschutzerklärung und akzeptieren Sie den Dienst, um die Übersetzungen zu sehen.