# Das Örtliche Scraper (`solidcode/dasoertliche-de-scraper`) Actor

\[💰 $1.30 / 1K] Extract German business listings from Das Örtliche — name, category, full address, phone, fax, website, email, opening hours, ratings, and social links. Search by business type and city or paste search URLs, with optional deep contact-detail enrichment.

- **URL**: https://apify.com/solidcode/dasoertliche-de-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.30 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Das Örtliche Scraper

Pull German business listings from Das Örtliche — Germany's established local-business directory and online phone book — complete with names, full postal addresses, phone numbers, GPS coordinates, categories, and the German Bundesland for every result. Flip one switch to deep-enrich each listing with website, email, fax, structured weekday opening hours, and social links. Built for German market researchers, B2B lead-generation teams, and local-SEO agencies who need clean, structured business data without clicking through directory pages one entry at a time.

### Why This Scraper?

- **Nationwide German coverage in one run** — search any business type across any German city, from Berlin to a rural Landkreis, all from a single invocation. Das Örtliche indexes businesses Germany-wide, not just the big metros.
- **GPS coordinates on every listing** — `latitude` and `longitude` come back on each result by default, ready to plot on a map or feed into geospatial analysis. No geocoding step required.
- **German Bundesland on every row** — each listing carries its `region` (the federal state, e.g. Bayern, Berlin), so you can segment results by state without a postal-code lookup table.
- **Structured weekday opening hours** — enrich listings to get `openingHours` as a clean weekday-keyed object (Montag → Sonntag), not a blob of free text you have to re-parse.
- **Verified contact enrichment** — turn on full details to capture `website`, `email`, `fax`, and `additionalPhones` per business, building a ready-to-use B2B contact list for German firms.
- **Review-count signal per listing** — the `ratings` field returns each business's aggregate review-count summary from golocal (e.g. `{ "golocal": "12 Bewertungen" }`), a quick popularity signal you can sort prospects by.
- **Multi-term batch search** — pass a list like `["Zahnarzt", "Apotheke", "Restaurant"]` and one location, and every business type is searched in that city in a single run with per-term result caps.
- **Paste-URL support** — already have a search set up in your browser? Drop the Das Örtliche URL straight into `searchUrls` and the actor reads the business type and city from it.
- **Social profile capture** — detail enrichment surfaces each business's own `socialLinks` (Facebook, Instagram, and more), with Das Örtliche's house profiles filtered out so you only get the listing's real accounts.

### Use Cases

**Market Research**
- Map the density of any business type (Apotheken, Restaurants, Werkstätten) across German cities
- Compare category coverage between Bundesländer using the `region` field
- Plot businesses on a map using built-in GPS coordinates
- Track how many providers serve a given locality

**Lead Generation**
- Build B2B contact lists for German firms with website, email, and phone
- Collect additional phone numbers and fax lines for outbound campaigns
- Target a single trade (e.g. "Klempner") across multiple cities in one run
- Prioritise prospects by review-count signal before outreach

**Local SEO & Competitive Analysis**
- Audit how competitors appear in Germany's leading business directory
- Capture opening hours and contact details for citation consistency checks
- Benchmark a client's listing against every rival in the same Branche and city
- Track social-profile presence (Facebook, Instagram) across a local market

**CRM & Data Enrichment**
- Enrich existing German company records with current phone, address, and website
- Append GPS coordinates and Bundesland to legacy customer lists
- Validate and refresh opening hours for partner directories
- Standardize messy address data into street, postal code, and city fields

### Getting Started

#### Simple Search

Find restaurants in Berlin — just a term and a city:

```json
{
    "searchTerms": ["Restaurant"],
    "location": "Berlin",
    "maxResults": 100
}
````

#### Multi-Term Search with Per-Term Cap

Search several business types in one city and balance the results across them:

```json
{
    "searchTerms": ["Zahnarzt", "Apotheke", "Hausarzt"],
    "location": "München",
    "maxResults": 300,
    "maxResultsPerSearch": 100
}
```

#### Full Contact Enrichment

Collect website, email, fax, opening hours, ratings, and social links for every listing:

```json
{
    "searchTerms": ["Klempner"],
    "location": "Hamburg",
    "maxResults": 200,
    "scrapeContactDetails": true
}
```

#### Using Das Örtliche URLs

Paste search-result URLs directly — the actor reads the business type and location from each one:

```json
{
    "searchUrls": [
        "https://www.dasoertliche.de/?kw=Bäckerei&ci=Köln&form_name=search_nat"
    ],
    "maxResults": 150
}
```

### Input Reference

#### Search

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchTerms` | array | `["Restaurant"]` | Business types or names to look up, such as 'Zahnarzt', 'Restaurant', or 'Klempner'. Each term is searched in the location below. Add as many as you like. |
| `location` | string | `"Berlin"` | City or place to search in, such as 'Berlin', 'München', or 'Hamburg'. Leave empty if your search URLs already include a location. |
| `searchUrls` | array | `[]` | Paste Das Örtliche search-result URLs directly. The actor reads the business type and location from each URL — handy if you already have searches set up in your browser. |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum number of business listings to return in total across all your searches. Set to 0 for unlimited. |
| `maxResultsPerSearch` | integer | `0` | Optional cap on results for each individual search term. Useful for balancing results when you have many terms. Set to 0 for no per-term limit. |
| `scrapeContactDetails` | boolean | `false` | Open each listing's detail page to also collect website, email, fax, opening hours, extra phone numbers, ratings, and social media links. This gives much richer data but is slower and costs more. |

### Output

Every dataset row is one business. Here's a result with full contact details enabled:

```json
{
    "name": "Ristorante Da Vinci",
    "categories": ["Restaurant", "Italienische Küche"],
    "phone": "030 1234567",
    "address": "Hauptstraße 12, 10827 Berlin",
    "street": "Hauptstraße 12",
    "postalCode": "10827",
    "city": "Berlin",
    "region": "Berlin",
    "latitude": 52.4858,
    "longitude": 13.3553,
    "detailUrl": "https://www.dasoertliche.de/?form_name=detail&id=...",
    "website": "https://www.ristorante-davinci.de",
    "email": "info@ristorante-davinci.de",
    "fax": "030 1234568",
    "additionalPhones": ["030 7654321"],
    "openingHours": {
        "Montag": "11:30 - 23:00",
        "Dienstag": "11:30 - 23:00",
        "Sonntag": "Geschlossen"
    },
    "logoUrl": "https://www.dasoertliche.de/.../logo.jpg",
    "ratings": { "golocal": "128 Bewertungen" },
    "socialLinks": { "facebook": "https://www.facebook.com/davinciberlin" },
    "searchTerm": "Restaurant",
    "searchLocation": "Berlin"
}
```

#### Core Fields (always returned)

| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Business or listing name |
| `categories` | array | Branchen / category tags for the listing |
| `phone` | string | Primary phone number |
| `address` | string | Full formatted address as displayed |
| `street` | string | Street and house number |
| `postalCode` | string | German postal code (PLZ) |
| `city` | string | City or locality |
| `region` | string | German Bundesland / region |
| `latitude` | number | Latitude (GPS) |
| `longitude` | number | Longitude (GPS) |
| `detailUrl` | string | URL of the listing's Das Örtliche detail page |
| `searchTerm` | string | The search term that produced this listing |
| `searchLocation` | string | The location that was searched |

#### Contact Detail Fields (when `scrapeContactDetails` is on)

| Field | Type | Description |
|-------|------|-------------|
| `website` | string | Business website |
| `email` | string | Contact email address |
| `fax` | string | Fax number |
| `additionalPhones` | array | Extra phone numbers beyond the primary line |
| `openingHours` | object | Opening hours keyed by weekday (Montag → Sonntag) |
| `logoUrl` | string | Business logo or image URL |
| `ratings` | object | Aggregate review-count summary from golocal, e.g. `{ "golocal": "12 Bewertungen" }` (empty when the business has no reviews) |
| `socialLinks` | object | Social profile URLs (Facebook, Instagram, etc.) |

Contact-detail fields are empty when a business has not published them — many listings simply don't include a fax line, logo, or social profile.

### Tips for Best Results

- **Use German business-type terms** — search "Zahnarzt", not "dentist", and "Apotheke", not "pharmacy". Das Örtliche indexes German Branchen, so native terms return far more results.
- **Leave contact enrichment off unless you need it** — keep `scrapeContactDetails` off for fast, lean runs when name, phone, address, and GPS are enough. Turn it on only when you specifically need email, website, or opening hours.
- **Balance many terms with a per-term cap** — when searching several Branchen at once, set `maxResultsPerSearch` so one popular category doesn't consume your whole `maxResults` budget.
- **Ambiguous cities resolve automatically** — names like "Hamburg" that match several places are auto-resolved to the exact city match, so you don't need to disambiguate by hand.
- **Start small to validate** — set `maxResults` to 25–50 on your first run to confirm the data fits your needs, then scale up.
- **Mix terms and URLs freely** — combine `searchTerms` + `location` with pasted `searchUrls` in the same run; results are merged into one dataset.
- **Segment by Bundesland after the run** — every row carries `region`, so you can group or filter the output by federal state without any extra lookup.

### Pricing

**From $1.30 per 1,000 results** — a flat per-result rate that undercuts manual directory research and event-priced alternatives. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows the total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.155 | $0.145 | $0.140 | $0.130 |
| 1,000 | $1.55 | $1.45 | $1.40 | $1.30 |
| 10,000 | $15.50 | $14.50 | $14.00 | $13.00 |
| 100,000 | $155.00 | $145.00 | $140.00 | $130.00 |

A "result" is any business row in the output dataset. **No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.**

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate market research, business analysis, and lead generation using publicly available directory information. Users are responsible for complying with applicable laws — including the GDPR — and with Das Örtliche's Terms of Service. Do not use extracted data for spam, harassment, or any unlawful purpose, and handle any personal data lawfully and respectfully.

# Actor input Schema

## `searchTerms` (type: `array`):

Business types or names to look up, such as 'Zahnarzt', 'Restaurant', or 'Klempner'. Each term is searched in the location below. Add as many as you like.

## `location` (type: `string`):

City or place to search in, such as 'Berlin', 'München', or 'Hamburg'. Leave empty if your search URLs already include a location.

## `searchUrls` (type: `array`):

Paste Das Örtliche search-result URLs directly. The actor reads the business type and location from each URL — handy if you already have searches set up in your browser.

## `maxResults` (type: `integer`):

Maximum number of business listings to return in total across all your searches. Set to 0 for unlimited.

## `maxResultsPerSearch` (type: `integer`):

Optional cap on results for each individual search term. Useful for balancing results when you have many terms. Set to 0 for no per-term limit.

## `scrapeContactDetails` (type: `boolean`):

Open each listing's detail page to also collect website, email, fax, opening hours, extra phone numbers, ratings, and social media links. This gives much richer data but is slower and costs more.

## Actor input object example

```json
{
  "searchTerms": [
    "Restaurant"
  ],
  "location": "Berlin",
  "searchUrls": [],
  "maxResults": 100,
  "maxResultsPerSearch": 0,
  "scrapeContactDetails": false
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of business listings with key fields like name, category, address, and phone.

## `contact` (type: `string`):

Full per-listing contact info including website, email, fax, phone, and social links.

# 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 = {
    "searchTerms": [
        "Restaurant"
    ],
    "location": "Berlin",
    "searchUrls": [],
    "maxResults": 100,
    "maxResultsPerSearch": 0,
    "scrapeContactDetails": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/dasoertliche-de-scraper").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 = {
    "searchTerms": ["Restaurant"],
    "location": "Berlin",
    "searchUrls": [],
    "maxResults": 100,
    "maxResultsPerSearch": 0,
    "scrapeContactDetails": False,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/dasoertliche-de-scraper").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 '{
  "searchTerms": [
    "Restaurant"
  ],
  "location": "Berlin",
  "searchUrls": [],
  "maxResults": 100,
  "maxResultsPerSearch": 0,
  "scrapeContactDetails": false
}' |
apify call solidcode/dasoertliche-de-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/dasoertliche-de-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Das Örtliche Scraper",
        "description": "[💰 $1.30 / 1K] Extract German business listings from Das Örtliche — name, category, full address, phone, fax, website, email, opening hours, ratings, and social links. Search by business type and city or paste search URLs, with optional deep contact-detail enrichment.",
        "version": "1.0",
        "x-build-id": "v8zYhM6xVylNdKlAR"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~dasoertliche-de-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-dasoertliche-de-scraper",
                "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/solidcode~dasoertliche-de-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-dasoertliche-de-scraper",
                "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/solidcode~dasoertliche-de-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-dasoertliche-de-scraper",
                "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",
                "properties": {
                    "searchTerms": {
                        "title": "Search Terms",
                        "type": "array",
                        "description": "Business types or names to look up, such as 'Zahnarzt', 'Restaurant', or 'Klempner'. Each term is searched in the location below. Add as many as you like.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City or place to search in, such as 'Berlin', 'München', or 'Hamburg'. Leave empty if your search URLs already include a location."
                    },
                    "searchUrls": {
                        "title": "Das Örtliche Search URLs",
                        "type": "array",
                        "description": "Paste Das Örtliche search-result URLs directly. The actor reads the business type and location from each URL — handy if you already have searches set up in your browser.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Maximum Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of business listings to return in total across all your searches. Set to 0 for unlimited.",
                        "default": 100
                    },
                    "maxResultsPerSearch": {
                        "title": "Maximum Results Per Search Term",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional cap on results for each individual search term. Useful for balancing results when you have many terms. Set to 0 for no per-term limit.",
                        "default": 0
                    },
                    "scrapeContactDetails": {
                        "title": "Collect Full Contact Details",
                        "type": "boolean",
                        "description": "Open each listing's detail page to also collect website, email, fax, opening hours, extra phone numbers, ratings, and social media links. This gives much richer data but is slower and costs more.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
