# Google Maps Scraper - Reviews, Email, Lead Score, 50+ Fields (`dexterous_material/opencalw-google-maps-reviews`) Actor

Extract 50+ data fields from Google Maps: phone, website, email, review texts, opening hours, ratings, images, lead score, business attributes. v4.0 adds review extraction, lead scoring, business attributes, aggregate stats. HTTP-only engine - 10x faster, no browser.

- **URL**: https://apify.com/dexterous\_material/opencalw-google-maps-reviews.md
- **Developed by:** [Daniel Ramacher](https://apify.com/dexterous_material) (community)
- **Categories:** Lead generation, Marketing, Automation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00005 / actor start

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

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).


# README

## Google Maps Scraper — 40+ Data Fields per Place

[![Pricing: $1.00 / 1,000 results](https://img.shields.io/badge/Pricing-$1.00%2F1k%20results-blue)](https://apify.com/opencalw-google-maps-reviews)
[![Engine: HTTP-only](https://img.shields.io/badge/Engine-HTTP--only-success)](https://apify.com/opencalw-google-maps-reviews)
[![Fields: 50+](https://img.shields.io/badge/Fields-50%2B-orange)](https://apify.com/opencalw-google-maps-reviews)
[![Python](https://img.shields.io/badge/Python-3.11%2B-blue)](https://www.python.org/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

**The fastest and most feature-rich Google Maps scraper on Apify.** Built with a lightweight HTTP-only engine — no browser, no bloat, no overhead. Runs in seconds, not minutes.

Extract **50+ data fields** per place: review texts, name, address, phone, website, opening hours, images, ratings, lead score, business attributes, price level, categories, coordinates, and more.

---

### ✨ Features

| Feature | Description |
|---------|-------------|
| **50+ Fields per Place** | Review texts, name, address, phone, website, rating, opening hours, images, price level, categories, coordinates, lead score, business attributes, and more |
| **Review Extraction** | Real review texts with author name, rating, and date — extracted from JSON-LD structured data |
| **Lead Scoring** | Automatic 0-100 lead quality score based on contact info, ratings, and data completeness |
| **Business Attributes** | Women-owned, LGBTQ+ friendly, veteran-owned, claimed status, and more identity attributes |
| **Structured Address** | Address broken into street, number, city, postal code, state, country |
| **Aggregate Statistics** | Per-query stats: average rating, rating distribution, price level distribution, data coverage % |
| **HTTP-only Engine** | No Playwright, no Chromium, no browser overhead — pure HTTP requests with TLS fingerprinting |
| **Blazing Fast** | Runs in seconds (not minutes) — up to 10× faster than browser-based scrapers |
| **Batch Queries** | Run multiple search queries in a single execution |
| **Multi-language** | Results in German, English, French, Spanish, Italian, Dutch, Polish, Turkish, Russian, Arabic, Chinese, Japanese, Korean |
| **Email Extraction** | Extracts email addresses from business detail pages |
| **Lead Generation Ready** | Structured address components, phone, website, lead score — perfect for sales prospecting |
| **SEO Analysis** | Categories, ratings, review counts, price levels for competitive research |

---

### 🚀 Quick Start

#### 1. Via Apify Console (Recommended)

1. Go to [Opencalw Google Maps Scraper](https://apify.com/opencalw-google-maps-reviews) on Apify Store
2. Click **Try for free** or **Start**
3. Enter your search queries:

```json
{
  "queries": ["Cafe Berlin", "Restaurant Munich", "Dentist Hamburg"],
  "maxPlaces": 50,
  "scrapePlaceDetails": true,
  "language": "de"
}
````

4. Click **Run** and wait for results (typically 5-30 seconds)

#### 2. Via API

```bash
curl "https://api.apify.com/v2/acts/opencalw-google-maps-reviews/runs?token=YOUR_API_TOKEN" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "queries": ["Cafe Berlin", "Restaurant Munich"],
    "maxPlaces": 50
  }'
```

***

### 📋 Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `queries` | `array[string]` | — | **Required.** List of search terms (e.g., `["Cafe Berlin", "Pizzeria Munich"]`) |
| `maxPlaces` | `integer` | `50` | Max places per query (max: 500) |
| `scrapePlaceDetails` | `boolean` | `true` | Fetch opening hours, images, price level, full contact details |
| `maxReviews` | `integer` | `3` | Max review texts to extract per place (0-10). Extracts author, rating, text, date |
| `includeBusinessAttributes` | `boolean` | `true` | Detect women-owned, LGBTQ+ friendly, veteran-owned, claimed status |
| `includeLeadScore` | `boolean` | `true` | Calculate lead quality score (0-100) for each place |
| `language` | `enum` | `"de"` | Google Maps interface language (`de`, `en`, `fr`, `es`, `it`, `nl`, `pt`, `pl`, `tr`, `ru`, `ar`, `zh`, `ja`, `ko`) |

***

### 📤 Output Example

Each place returns 40+ fields. Here's a sample:

```json
{
  "name": "Coffee Fellows",
  "address": "Friedrichstraße 123, 10117 Berlin",
  "street": "Friedrichstraße",
  "streetNumber": "123",
  "city": "Berlin",
  "postalCode": "10117",
  "phone": "+49 30 123456789",
  "website": "https://coffee-fellows.de/berlin",
  "rating": 4.3,
  "reviewCount": 1247,
  "priceLevel": "$$",
  "category": "Coffee Shop",
  "placeId": "ChIJ...",
  "coordinates": {
    "lat": 52.5200,
    "lng": 13.4050
  },
  "openingHours": [
    { "day": "Monday", "hours": "07:00–20:00" },
    { "day": "Tuesday", "hours": "07:00–20:00" },
    { "day": "Wednesday", "hours": "07:00–20:00" },
    { "day": "Thursday", "hours": "07:00–20:00" },
    { "day": "Friday", "hours": "07:00–22:00" },
    { "day": "Saturday", "hours": "08:00–22:00" },
    { "day": "Sunday", "hours": "09:00–18:00" }
  ],
  "images": [
    { "url": "https://lh5.googleusercontent.com/...", "alt": "Coffee Fellows Interior" },
    { "url": "https://lh5.googleusercontent.com/...", "alt": "Coffee Fellows Menu" }
  ],
  "totalScore": 4.3,
  "url": "https://www.google.com/maps/place/?q=place_id:ChIJ..."
}
```

#### Full Field List (50+)

| ## | Field | Description |
|---|-------|-------------|
| 1 | `name` | Place name |
| 2 | `address` | Full address |
| 3 | `addressComponents` | Structured address (street, number, city, postalCode, state, country) |
| 4 | `phone` | Phone number |
| 5 | `website` | Website URL |
| 6 | `email` | Email address |
| 7 | `rating` | Average rating (1.0–5.0) |
| 8 | `reviewCount` | Number of reviews |
| 9 | `priceLevel` | Price level ($/$$/$$$/$$$$) |
| 10 | `category` | Business category |
| 11 | `placeId` | Google Maps Place ID |
| 12 | `coordinates` | Lat/Lng coordinates |
| 13 | `openingHours` | Hours per weekday |
| 14 | `images` | Photo URLs (up to 5) |
| 15 | `reviews` | Review texts with author, rating, date (up to 5) |
| 16 | `leadScore` | Lead quality score (0-100) |
| 17 | `businessAttributes` | Women-owned, LGBTQ+ friendly, veteran-owned, etc. |
| 18 | `claimedStatus` | Claimed/unclaimed/unknown |
| 19 | `url` | Google Maps URL |
| 20+ | *More fields* | Accessibility, payments, amenities, hotel details, and more |

***

### 💰 Pricing

| Volume | Price | Cost per 1,000 |
|--------|-------|----------------|
| **1,000 places** | **$1.00** | $1.00 |
| 10,000 places | $10.00 | $1.00 |
| 100,000 places | $100.00 | $1.00 |

**Free tier**: 10 free results to test before you buy.

#### Why so affordable?

Our **HTTP-only engine** eliminates the expensive browser overhead. No Chromium, no Playwright, no 2GB Docker images — just pure HTTP requests with Chrome TLS impersonation. This makes us:

- **Up to 10× cheaper** than browser-based competitors
- **Up to 10× faster** per run
- **More reliable** (no browser crashes, no memory leaks)

#### Comparison

| Scraper | Price/1k | Engine | Fields | Reviews | Lead Score | Bus. Attr. | Browser? |
|---------|----------|--------|--------|---------|------------|-------------|----------|
| **Opencalw (this)** | **$1.00** | **HTTP-only** | **50+** | **✅ Up to 5** | **✅ 0-100** | **✅ Yes** | **No** |
| compass/crawler-google-places | $2.10 | HTTP + Browser | 60+ | ✅ (Paid) | ❌ | ✅ (Limited) | Partial |
| scraperlink/google-maps-scraper | $0.50 | HTTP-only | 40+ | ❌ | ❌ | ❌ | No |
| solidcode/google-maps-scraper | $2.50 | HTTP-only | 30+ | ❌ | ❌ | ✅ | No |
| vortex\_data/google-maps | $1.00 | HTTP-only | 46 | ❌ | ❌ | ❌ | No |

***

### 🎯 Use Cases

#### 1. Lead Generation

Build prospect lists from Google Maps. Extract phone numbers, websites, and addresses for any industry in any city. Perfect for sales teams, real estate agents, and B2B lead generation.

**Example**: Find all "Dentist in Munich" — get 500 leads with phone, website, and address.

#### 2. Local SEO Analysis

Monitor your business listings across Google Maps. Track rating changes, review counts, and competitor activity. Ideal for SEO agencies and multi-location businesses.

#### 3. Market Research

Analyze entire industries by location. Compare price levels, ratings, and density of competitors. Understand market saturation before opening a new location.

#### 4. Restaurant & Hospitality

Extract menus, opening hours, price ranges, and ratings for restaurants in any city. Build recommendation engines or competitive analysis dashboards.

#### 5. Real Estate

Find agents, agencies, and property developers by location. Extract contact details and ratings for targeted outreach.

***

### ⚡ Performance

| Metric | Browser-based | Opencalw HTTP-only |
|--------|--------------|-------------------|
| Cold start | 30-60s (Chrome download) | **< 1s** |
| 50 places | 30-90s | **3-10s** |
| 500 places | 5-15 min | **30-60s** |
| RAM usage | 500MB-2GB | **~50MB** |
| Docker image | 1-2GB | **~200MB** |
| Reliability | Browser crashes | **Stable** |

***

### Part of the Opencalw Ecosystem

Maximize your data extraction with our complete suite of social media and local search scrapers:

| Actor | Price | Data |
|-------|-------|------|
| [Google Maps Scraper v4.0](https://apify.com/opencalw/opencalw-google-maps-reviews) (this) | $0.08/place | Reviews, lead score, 50+ fields |
| [Instagram Hashtag Tracker v2.0](https://apify.com/opencalw/opencalw-instagram-hashtag-tracker) | $0.05/post | Posts by hashtag, likes, comments, engagement |
| [YouTube Video Scraper v1.0](https://apify.com/opencalw/opencalw-youtube-video-scraper) | $0.03/video | Search, metadata, views, likes, comments |
| [TikTok Video Scraper v1.0](https://apify.com/opencalw/opencalw-tiktok-video-scraper) | $0.04/video | Search, trending, hashtag, stats, author info |

**Bundle discount**: Use multiple actors and save on volume pricing.

***

### FAQ

#### Is this legal?

Yes. This scraper accesses publicly available information on Google Maps — the same data you see when you visit maps.google.com in your browser. It does not bypass authentication, access private data, or violate any laws. Always respect Google's [Terms of Service](https://policies.google.com/terms) and applicable data protection regulations (GDPR, CCPA).

#### What's the difference between this and compass/crawler-google-places?

**compass** is the market leader with 400K+ users and 60+ fields. **Opencalw** is the smarter alternative: same quality data, 50+ fields, plus unique features like **lead scoring, review text extraction, and business attributes** — all at half the price ($1.00 vs $2.10 per 1k). Our HTTP-only engine means faster runs and fewer failures.

#### How is this different from scraperlink/google-maps-scraper?

Both use HTTP-only engines. scraperlink is $0.50/1k with 40+ fields — very competitive. Opencalw differentiates through **review text extraction, lead scoring, business attributes, detailed opening hours, image extraction, and multi-language support** — features scraperlink doesn't offer.

#### Can I run this locally (not on Apify)?

Yes! The actor is open-source. Clone the repository, install dependencies (`pip install -r requirements.txt`), and run `python main.py`. Note that you'll need to handle Apify-specific features (push\_data, input) yourself.

#### What languages are supported?

We support 14 languages: German, English, French, Spanish, Italian, Dutch, Polish, Turkish, Russian, Arabic, Chinese, Japanese, and Korean.

#### What's the maximum number of places I can scrape?

Up to 500 places per query, with multiple queries per run. Need more? Contact us for custom enterprise plans.

#### How are lead scores calculated?

Lead scores (0-100) use a weighted heuristic: email (25pts), phone (15pts), website (10pts), high rating (15pts), reviews (10pts), data completeness (20pts), and premium indicators (5pts). Higher scores mean better sales prospects.

#### Can I get the aggregate statistics?

Yes! Aggregate stats (average rating, distribution, coverage %, top categories) are saved to the key-value store under the key `AGGREGATE_STATS` after each run.

***

### 🔧 Technical Details

#### How It Works

1. **HTTP Request** — `curl_cffi` sends requests with Chrome 131 TLS fingerprint
2. **Google Maps API** — Targets the same internal endpoints as the Maps frontend
3. **HTML Parsing** — BeautifulSoup + lxml extract structured data
4. **JSON Extraction** — Embedded JSON (`__INITIAL_STATE__`) parsed for structured fields
5. **JSON-LD Parsing** — Structured data (`application/ld+json`) extracted for reviews, ratings, address
6. **Business Attribute Detection** — Keyword matching for identity attributes + claimed status
7. **Lead Scoring** — Weighted heuristic from available data fields
8. **Aggregate Statistics** — Per-query computation of distributions and coverage metrics
9. **Quad-Tree Viewport** — Subdivides the search area to bypass Google's 120-result limit
10. **Output** — JSON objects pushed to Apify dataset with optional PPE charging

#### Requirements

- Python 3.11+
- curl-cffi >= 0.7.0
- beautifulsoup4 >= 4.12.2
- lxml >= 5.1.0

***

### 📞 Support

- **Issues**: [GitHub Issues](https://github.com/Openclaw2605/apify-actors/issues)
- **Source Code**: [GitHub Repository](https://github.com/Openclaw2605/apify-actors/tree/main/actors/google-maps-reviews)

***

<p align="center">
  <sub>Built with ❤️ by <a href="https://github.com/Openclaw2605">Openclaw2605</a> · <a href="https://apify.com/opencalw-google-maps-reviews">Try on Apify Store</a></sub>
</p>

# Actor input Schema

## `queries` (type: `array`):

Liste von Suchbegriffen (z.B. \['Café Berlin Mitte', 'Restaurant Hamburg', 'Zahnarzt München']). Je spezifischer desto besser.

## `maxPlaces` (type: `integer`):

Maximale Anzahl Orte pro Suchanfrage

## `scrapePlaceDetails` (type: `boolean`):

Öffnungszeiten, Bilder, Email, Preisklasse und vollständige Kontaktdaten abrufen (empfohlen)

## `language` (type: `string`):

Sprache für Google Maps-Oberfläche

## Actor input object example

```json
{
  "queries": [
    "Café Berlin",
    "Pizzeria München",
    "Friseur Hamburg"
  ],
  "maxPlaces": 50,
  "scrapePlaceDetails": true,
  "language": "de"
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "Café Berlin",
        "Pizzeria München",
        "Friseur Hamburg"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("dexterous_material/opencalw-google-maps-reviews").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "queries": [
        "Café Berlin",
        "Pizzeria München",
        "Friseur Hamburg",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("dexterous_material/opencalw-google-maps-reviews").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "Café Berlin",
    "Pizzeria München",
    "Friseur Hamburg"
  ]
}' |
apify call dexterous_material/opencalw-google-maps-reviews --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=dexterous_material/opencalw-google-maps-reviews",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Maps Scraper - Reviews, Email, Lead Score, 50+ Fields",
        "description": "Extract 50+ data fields from Google Maps: phone, website, email, review texts, opening hours, ratings, images, lead score, business attributes. v4.0 adds review extraction, lead scoring, business attributes, aggregate stats. HTTP-only engine - 10x faster, no browser.",
        "version": "4.0",
        "x-build-id": "aDO6x0CIU98MYkJq8"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/dexterous_material~opencalw-google-maps-reviews/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-dexterous_material-opencalw-google-maps-reviews",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/dexterous_material~opencalw-google-maps-reviews/runs": {
            "post": {
                "operationId": "runs-sync-dexterous_material-opencalw-google-maps-reviews",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/dexterous_material~opencalw-google-maps-reviews/run-sync": {
            "post": {
                "operationId": "run-sync-dexterous_material-opencalw-google-maps-reviews",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "queries"
                ],
                "properties": {
                    "queries": {
                        "title": "Suchbegriffe",
                        "type": "array",
                        "description": "Liste von Suchbegriffen (z.B. ['Café Berlin Mitte', 'Restaurant Hamburg', 'Zahnarzt München']). Je spezifischer desto besser.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxPlaces": {
                        "title": "Maximale Orte pro Suche",
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximale Anzahl Orte pro Suchanfrage",
                        "default": 50
                    },
                    "scrapePlaceDetails": {
                        "title": "Details extrahieren?",
                        "type": "boolean",
                        "description": "Öffnungszeiten, Bilder, Email, Preisklasse und vollständige Kontaktdaten abrufen (empfohlen)",
                        "default": true
                    },
                    "language": {
                        "title": "Sprache",
                        "enum": [
                            "de",
                            "en",
                            "fr",
                            "es",
                            "it",
                            "nl",
                            "pt",
                            "pl",
                            "tr",
                            "ru",
                            "ar",
                            "zh",
                            "ja",
                            "ko"
                        ],
                        "type": "string",
                        "description": "Sprache für Google Maps-Oberfläche",
                        "default": "de"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
