# DGT Driving Test Questions Scraper (`solidcode/dgt-es-scraper`) Actor

\[💰 $2.50 / 1K] Extract official Spanish DGT driving-theory exam questions (test DGT / examen teórico): question text, all answer options with the correct one flagged, images, license category, and language across car, motorcycle, truck and bus classes (B, A1, A2, A, C, D and more) in 8 languages.

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

## Pricing

from $2.50 / 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

## DGT Driving Test Questions Scraper

Pull the official Spanish DGT driving-theory exam ("test DGT / examen teórico") as clean, structured data — question text, every answer option with the correct one flagged, the official road-sign photo, license category, and language for each question. Built for driving-school and e-learning developers, test-prep and quiz-app builders, and ed-tech researchers who need the complete official DGT question bank without hand-copying thousands of questions.

### Why This Scraper?

- **Nine official DGT license categories** — car (B), moped (AM), motorcycle (A1 y A2), car-with-trailer (BE), medium truck (C1 / C1E), truck (C), truck-and-bus-with-trailer (CE y DE), and bus (D). Every question is tagged with the exact DGT category label it came from.
- **All eight official exam languages** — the same eight the DGT publishes: Spanish, Catalan, Valencian, Galician, Basque, German, English, and French. Pull an English or German bank as easily as the Spanish one.
- **The correct answer flagged on every single question** — each of the ~3 options arrives as `{text, isCorrect}`, alongside a ready-to-use `correctAnswer` string. No answer keys to reconcile by hand.
- **The official road-sign or scenario photo per illustrated question** — `imageUrl` points at the real DGT question image (traffic signs, junction diagrams, dashboard warning lights), not a stock placeholder.
- **The complete official question pool for each category and language, de-duplicated** — collect a single 30-question exam or exhaust the full available pool for a category-language pair (on the order of dozens to ~100 unique questions); results are merged and de-duplicated so you never store the same question twice.
- **A stable per-question code** — every illustrated question carries a `questionCode` (e.g. `MT45390`) derived from its official image, giving you a durable key to join, deduplicate, or track questions across runs and languages.
- **Multi-category runs in one pass** — request several license classes at once and get a single merged dataset, with every row self-describing its `permitType` and `language`.
- **Sourced straight from the official DGT theory exam** — the same questions used in the real Dirección General de Tráfico examen teórico, not a third-party rewrite or paraphrase.

### Use Cases

**Driving-School & Autoescuela Apps**
- Seed a practice-test engine with the full official B-permit question bank
- Build category-specific exams for moped, motorcycle, truck, and bus students
- Auto-grade student attempts using the flagged correct answer on every question
- Keep app content in sync with the current official DGT exam pool

**Test-Prep & Quiz Platforms**
- Generate randomized 30-question mock exams that mirror the real test format
- Build flashcard decks pairing each question image with its correct answer
- Power adaptive-learning tools that track which question codes a user struggles with
- Offer premium "full bank" practice modes beyond the standard 30-question exam

**Multilingual Learning**
- Publish the exam in all eight official languages for Spain's diverse learner base
- Serve English- and German-language practice tests to international residents
- Build a parallel multilingual bank keyed on `questionCode` for side-by-side study

**Content & Research**
- Analyze topic coverage and answer distributions across license categories
- Compare how the same question is phrased across Catalan, Basque, and Galician
- Assemble datasets for road-safety education studies and ed-tech research

### Getting Started

#### Simplest Run (Defaults)

An empty input collects one standard 30-question exam for permit B in Spanish:

```json
{}
````

#### Single Category in English

Pull a larger English-language bank for car-license learners:

```json
{
    "permitTypes": ["B"],
    "language": "en",
    "maxQuestions": 60
}
```

#### Multi-Category Full Bank

Collect the entire available pool for several license classes in one run:

```json
{
    "permitTypes": ["B", "AM", "C", "D"],
    "language": "es",
    "maxQuestions": 0
}
```

### Input Reference

#### What to Collect

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `permitTypes` | array | `["B"]` | One or more license categories to collect. Options: **B** (Car / passenger vehicle), **AM** (Moped), **A1 y A2** (Motorcycle, light & medium), **BE** (Car with trailer), **C1 97** (Medium truck), **C1E 97** (Medium truck with trailer), **C** (Truck / lorry), **CE y DE** (Truck & bus with trailer), **D** (Bus / coach). Each category is collected separately and merged, with every question tagged by its category. |
| `language` | select | `"es"` | Language the questions and answers are returned in. Options: Spanish (Español), Catalan (Català), Valencian (Valencià), Galician (Galego), Basque (Euskara), German (Deutsch), English, French (Français). |

#### Results

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxQuestions` | integer | `30` | How many unique questions to collect per license category. 30 equals one standard exam; higher values pull additional exams and merge them into a larger de-duplicated bank. Set to `0` to keep going until the category's available pool is exhausted — in practice typically around a hundred unique questions per language, well under the 1,000 safety ceiling (which is rarely reached). Very high values mainly make the run take longer for little extra data. |

### Output

Each row is one exam question. Here's a representative Spanish result:

```json
{
    "questionText": "¿A qué distancia debe colocar los dispositivos de preseñalización de peligro?",
    "answers": [
        { "text": "A 50 metros como mínimo, y de forma que sean visibles a 100 metros.", "isCorrect": true },
        { "text": "A 20 metros, y de forma que sean visibles a 50 metros.", "isCorrect": false },
        { "text": "No es obligatorio colocarlos en vías urbanas.", "isCorrect": false }
    ],
    "correctAnswer": "A 50 metros como mínimo, y de forma que sean visibles a 100 metros.",
    "correctAnswerIndex": 0,
    "optionCount": 3,
    "imageUrl": "https://sedeweb.dgt.gob.es/EXAM/WEB_AUTO9/IMAGENES/MT45390.jpg",
    "permitType": "B",
    "permitTypeName": "Car / passenger vehicle",
    "language": "es",
    "questionCode": "MT45390"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `questionText` | string | The full text of the exam question. |
| `answers` | object\[] | Every answer option as `{text, isCorrect}` — typically three options, with the correct one flagged `true`. |
| `correctAnswer` | string | The text of the correct option, for quick lookup. |
| `correctAnswerIndex` | integer | null | Zero-based position of the correct option within `answers`; `null` if the correct option couldn't be determined. |
| `optionCount` | integer | Number of answer options for the question (typically 3). |
| `imageUrl` | string | null | The official DGT question image (road sign or scenario photo); `null` when the question has no image. |
| `permitType` | string | The license category the question belongs to (e.g. `B`, `AM`, `CE y DE`). |
| `permitTypeName` | string | Human-readable name of the license category (e.g. `Car / passenger vehicle`, `Moped (ciclomotor)`). |
| `language` | string | The language code the question was collected in (`es`, `en`, `ca`, …). |
| `questionCode` | string | null | Stable identifier derived from the question's image, used for de-duplication; `null` for text-only questions. |

### Tips for Best Results

- **`maxQuestions: 0` exhausts the available pool.** It keeps pulling fresh exams until no new questions appear — usually on the order of a hundred unique questions per category-language pair. The default of 30 (one full exam) is plenty for most previews; pushing the value very high mainly makes the run take longer for little extra data.
- **Run several languages to build a parallel multilingual bank.** `questionCode` stays constant across languages, so you can join the English and Spanish versions of the same question side by side.
- **Start small to preview the format.** Set `maxQuestions` to 5–10 on your first run to confirm the structure, then scale up.
- **Combine categories in one run.** Pass multiple `permitTypes` at once — each is collected separately and merged, with every row tagged by `permitType`.
- **Expect smaller pools for niche categories.** Moped (AM) and specialist truck/bus classes have fewer unique questions than car (B), so a high `maxQuestions` on those simply returns the full available pool.
- **Use `questionCode` as your primary key.** It deduplicates illustrated questions reliably; text-only questions fall back to their question text.
- **Auto-grade in one step.** Pair `correctAnswer` with the `answers` array to score quiz attempts or generate flashcards without a separate answer key.

### Pricing

**From $2.50 per 1,000 results** — a flat, predictable rate for the complete official DGT question bank with correct answers and images included. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.30 | $0.28 | $0.27 | $0.25 |
| 1,000 | $3.00 | $2.80 | $2.65 | $2.50 |
| 10,000 | $30.00 | $28.00 | $26.50 | $25.00 |
| 100,000 | $300.00 | $280.00 | $265.00 | $250.00 |

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

### 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 collects publicly available official DGT driving-theory exam content for legitimate educational, test-preparation, and research purposes. Users are responsible for complying with applicable laws and the Dirección General de Tráfico's terms of use, and for making reasonable-rate requests. Do not use the extracted data for any illegal purpose. The DGT is the sole owner of the official exam content; this tool does not claim any rights over it.

# Actor input Schema

## `permitTypes` (type: `array`):

Which driving license categories to collect questions for. Pick one or more. 'B' (car) is the most common. Each category is collected separately and the results are merged, with every question tagged by its category.

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

Language the questions and answers are returned in. The DGT publishes its official theory exam in these eight languages.

## `maxQuestions` (type: `integer`):

How many unique questions to collect for each license category. A standard DGT exam has 30 questions; higher values pull additional exams and merge them into a larger, de-duplicated question bank. Set to 0 (or any high value) to keep going until the category's available pool is exhausted — in practice this is typically around a hundred unique questions per language, well under the 1000 safety ceiling, which is rarely reached. Because the DGT pool per category is finite, collection stops automatically once several exams in a row bring no new questions, so setting a very high value mostly makes the run take longer without adding much data. For very large pools, collection may also stop at a fixed per-category safety limit; when that happens the run is reported as 'partial' and you can simply re-run to gather more.

## Actor input object example

```json
{
  "permitTypes": [
    "B"
  ],
  "language": "es",
  "maxQuestions": 30
}
```

# Actor output Schema

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

Compact table of collected questions — question text, correct answer, license category, language, and image.

## `details` (type: `string`):

Full question data including every answer option, the correct answer and its index, option count, and image URL.

# 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 = {
    "permitTypes": [
        "B"
    ],
    "language": "es",
    "maxQuestions": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/dgt-es-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 = {
    "permitTypes": ["B"],
    "language": "es",
    "maxQuestions": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/dgt-es-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 '{
  "permitTypes": [
    "B"
  ],
  "language": "es",
  "maxQuestions": 30
}' |
apify call solidcode/dgt-es-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "DGT Driving Test Questions Scraper",
        "description": "[💰 $2.50 / 1K] Extract official Spanish DGT driving-theory exam questions (test DGT / examen teórico): question text, all answer options with the correct one flagged, images, license category, and language across car, motorcycle, truck and bus classes (B, A1, A2, A, C, D and more) in 8 languages.",
        "version": "1.0",
        "x-build-id": "dtiVgbcq0Q9zAByhN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~dgt-es-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-dgt-es-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~dgt-es-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-dgt-es-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~dgt-es-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-dgt-es-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": {
                    "permitTypes": {
                        "title": "License categories",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Which driving license categories to collect questions for. Pick one or more. 'B' (car) is the most common. Each category is collected separately and the results are merged, with every question tagged by its category.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "B",
                                "AM",
                                "A1 y A2",
                                "BE",
                                "C1 97",
                                "C1E 97",
                                "C",
                                "CE y DE",
                                "D"
                            ],
                            "enumTitles": [
                                "B — Car / passenger vehicle",
                                "AM — Moped (ciclomotor)",
                                "A1 y A2 — Motorcycle (light & medium)",
                                "BE — Car with trailer",
                                "C1 97 — Medium truck",
                                "C1E 97 — Medium truck with trailer",
                                "C — Truck / lorry",
                                "CE y DE — Truck & bus with trailer",
                                "D — Bus / coach"
                            ]
                        }
                    },
                    "language": {
                        "title": "Exam language",
                        "enum": [
                            "es",
                            "ca",
                            "va",
                            "gl",
                            "eu",
                            "de",
                            "en",
                            "fr"
                        ],
                        "type": "string",
                        "description": "Language the questions and answers are returned in. The DGT publishes its official theory exam in these eight languages.",
                        "default": "es"
                    },
                    "maxQuestions": {
                        "title": "Max questions per category",
                        "minimum": 0,
                        "type": "integer",
                        "description": "How many unique questions to collect for each license category. A standard DGT exam has 30 questions; higher values pull additional exams and merge them into a larger, de-duplicated question bank. Set to 0 (or any high value) to keep going until the category's available pool is exhausted — in practice this is typically around a hundred unique questions per language, well under the 1000 safety ceiling, which is rarely reached. Because the DGT pool per category is finite, collection stops automatically once several exams in a row bring no new questions, so setting a very high value mostly makes the run take longer without adding much data. For very large pools, collection may also stop at a fixed per-category safety limit; when that happens the run is reported as 'partial' and you can simply re-run to gather more.",
                        "default": 30
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
