{
  "openapi": "3.0.1",
  "info": {
    "title": "Used Car Deal Finder AI: mobile.de Qualified Car Deals, 10 Free",
    "description": "First 10 qualified car deals free. Used car deal finder: ranks mobile.de cars (or any site's rows) vs similar cars, flags risks, drafts the seller message. MCP & AI agent ready. Pay per qualified deal. Free demo on any plan; live search runs on your Apify account, any plan that runs Store Actors.",
    "version": "0.1",
    "x-build-id": "weeh3Rxy2H6uaTXMW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rich_minds~used-car-deal-finder-ai/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rich_minds-used-car-deal-finder-ai",
        "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/rich_minds~used-car-deal-finder-ai/runs": {
      "post": {
        "operationId": "runs-sync-rich_minds-used-car-deal-finder-ai",
        "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/rich_minds~used-car-deal-finder-ai/run-sync": {
      "post": {
        "operationId": "run-sync-rich_minds-used-car-deal-finder-ai",
        "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": {
          "make": {
            "title": "Car make",
            "type": "string",
            "description": "Type a make, e.g. <code>BMW</code>, and press Start: the Actor builds the mobile.de search (BMW, Audi, Mercedes-Benz, Volkswagen, Opel, Ford, Porsche, Škoda, SEAT) and keeps only that make. Runs <code>memo23/mobile-de-scraper</code> on your Apify plan, capped by Max source spend — no Store Actors on your plan? Use list mode. Empty = the free demo.",
            "default": ""
          },
          "goalDescription": {
            "title": "What are you looking for?",
            "type": "string",
            "description": "Describe the cars you want to buy in plain words (make, body, mileage, what you resell for). The AI scores every car against this and says why. Leave empty to rank by price gap and condition alone."
          },
          "preset": {
            "title": "Start from a ready niche search (one click)",
            "enum": [
              "custom",
              "bmw-diesel-estates",
              "private-seller-bargains",
              "electric-dealer-stock"
            ],
            "type": "string",
            "description": "Pick a niche and press Start: it fills the search fields you left empty and runs the live search (spend-capped by <code>maxDiscoveryChargeUsd</code>). Your own values always win. <b>Custom</b> = fill the fields yourself.",
            "default": "custom"
          },
          "minScore": {
            "title": "Minimum score (0–100)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "The field that decides what you pay: cars scoring below this are discarded and <b>not charged</b>. 50 keeps decent deals, 70 only the strong ones (hot).",
            "default": 50
          },
          "maxQualified": {
            "title": "Max qualified car deals to output",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Hard cap on results — and the ceiling of what <b>this Actor</b> charges: at most this many × $0.03 with AI on (× $0.006 with AI off), e.g. 100 × $0.03; the source's own spend has its cap right below. The best-scoring qualified car deals are output first.",
            "default": 100
          },
          "maxDiscoveryChargeUsd": {
            "title": "Max source spend (USD)",
            "minimum": 0.01,
            "maximum": 1000,
            "type": "number",
            "description": "Hard cap on what the source Actor run may charge your account in <b>actor</b> mode — $0.50 in the form and for an API or agent call that leaves it out, so a first real search can never cost more. Raise it for bigger searches.",
            "default": 0.5
          },
          "enableAi": {
            "title": "AI assessment",
            "type": "boolean",
            "description": "Score each qualified car deal against your goal, explain why, summarise it and generate text. <b>On = $0.03 per qualified car deal + AI tokens; off = $0.006</b> (rule-based flags and scores only). Your first 5 qualified car deals get live AI verdicts on any plan; every one with Apify model access or a paid own key.",
            "default": true
          },
          "notifyEmail": {
            "title": "E-mail me the new qualified car deals (optional)",
            "type": "string",
            "description": "After every run with at least one new qualified car deal, the run's digest (how many are new, the top 10 with links) is e-mailed here through Apify's send-mail Actor. Schedule the run weekly (Actions → Schedule) and only the new qualified car deals come to your inbox — no Slack or Zapier needed. Never sent for the free demo."
          },
          "searchUrls": {
            "title": "Your mobile.de search link (optional)",
            "type": "array",
            "description": "Optional, for an exact search: a mobile.de results link built with your filters (one per line), or a dealer page (<code>home.mobile.de/&lt;dealer&gt;</code>). Runs <code>memo23/mobile-de-scraper</code> on your Apify plan — no Store Actors on your plan? Use list mode. Empty = the make above, or the free demo.",
            "items": {
              "type": "string"
            }
          },
          "model": {
            "title": "Model (optional)",
            "type": "string",
            "description": "Keep only this model, e.g. <code>320d</code> (matches model and variant). Empty = all.",
            "default": ""
          },
          "maxPrice": {
            "title": "Max price (EUR)",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Gross price limit in euros. 0 = no limit. Also sent to mobile.de with a search link.",
            "default": 0
          },
          "minYear": {
            "title": "Min first registration year",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Oldest first-registration year to keep, e.g. <code>2018</code>. 0 = any year.",
            "default": 0
          },
          "maxMileageKm": {
            "title": "Max mileage (km)",
            "minimum": 0,
            "maximum": 5000000,
            "type": "integer",
            "description": "Odometer limit in km. 0 = no limit.",
            "default": 0
          },
          "fuel": {
            "title": "Fuel",
            "type": "array",
            "description": "Keep only these fuels. Empty = all fuels.",
            "items": {
              "type": "string",
              "enum": [
                "petrol",
                "diesel",
                "electric",
                "hybrid",
                "plugin_hybrid",
                "lpg",
                "cng",
                "hydrogen",
                "other"
              ],
              "enumTitles": [
                "Petrol",
                "Diesel",
                "Electric",
                "Hybrid",
                "Plug-in hybrid",
                "LPG",
                "CNG",
                "Hydrogen",
                "Other"
              ]
            },
            "default": []
          },
          "sellerType": {
            "title": "Seller",
            "enum": [
              "both",
              "private",
              "dealer"
            ],
            "type": "string",
            "description": "Private sellers, dealers or both. Rows that do not say who sells are kept only for <b>both</b>.",
            "default": "both"
          },
          "excludeAccident": {
            "title": "Skip accident, damaged and non-roadworthy cars",
            "type": "boolean",
            "description": "On: a car mobile.de marks as having had an accident, currently damaged, a damage case or not roadworthy is dropped before any charge. Off: they are scored with a risk flag instead.",
            "default": true
          },
          "minUnderMarketPct": {
            "title": "Min. gap under market (%)",
            "minimum": 0,
            "maximum": 90,
            "type": "number",
            "description": "A car must be at least this many % cheaper than the median of comparable cars in your results to qualify. <b>Affects what you pay</b> — fewer, stronger deals at a higher value.",
            "default": 8
          },
          "requireBaseline": {
            "title": "Only cars with a market baseline",
            "type": "boolean",
            "description": "On: a car without enough comparables qualifies only when mobile.de's own price rating says 'good price'; the rest is not charged. Off: cars without a baseline are scored on condition alone.",
            "default": true
          },
          "targetFlags": {
            "title": "Target flags (any of)",
            "type": "array",
            "description": "Only deliver cars that have at least one of these flags, and rank those with more of them higher. Leave empty to keep everything. An API call passes the flag names from the README's flag table, e.g. <code>well_below_market</code> (<code>wellBelowMarket</code> works too); an unknown name stops the run at once with the list of valid ones.",
            "items": {
              "type": "string",
              "enum": [
                "well_below_market",
                "below_market",
                "price_rating_agrees",
                "price_rating_disagrees",
                "no_baseline",
                "low_mileage",
                "single_owner",
                "clean_history",
                "private_seller",
                "price_dropped",
                "accident_reported",
                "currently_damaged",
                "not_roadworthy",
                "accident_hint",
                "export_only",
                "commercial_use",
                "repair_needed",
                "no_hu",
                "engine_or_gearbox_damage",
                "vague_history",
                "missing_url",
                "short_description"
              ],
              "enumTitles": [
                "Priced 15 % or more under the median of comparable cars in the run",
                "Priced 8–15 % under the median of comparable cars in the run",
                "mobile.de's own price rating also says a good price",
                "Priced under market here, but mobile.de rates the price fair, increased or high",
                "Too few comparable cars in the run for a market median",
                "Under 10,000 km per year of age",
                "One previous owner",
                "Accident-free, not damaged, roadworthy — as stated in the listing",
                "Sold by a private seller (no dealer warranty)",
                "The price fell 5 % or more since you last received this car",
                "The listing says the car had an accident",
                "The listing says the car is currently damaged or a damage case",
                "The listing says the car is not roadworthy",
                "The seller text hints at accident or body damage (Unfallschaden, Vorschaden …)",
                "The seller text says export or dealer sale only",
                "The seller text says rental, taxi, driving-school or commercial use",
                "The seller text says defect, repair needed, tinkerer's car or not drivable",
                "No valid HU / TÜV inspection (field or seller text)",
                "The seller text names engine, gearbox or clutch damage",
                "The listing is silent on accidents and shows no service history",
                "No link to the original listing",
                "Seller text shorter than 40 characters"
              ]
            }
          },
          "suppressionList": {
            "title": "Exclude list",
            "type": "array",
            "description": "Titles, listing links or listing ids to never output. Excluded cars are skipped before any processing and never charged.",
            "items": {
              "type": "string"
            }
          },
          "outreachLanguage": {
            "title": "Seller message language",
            "enum": [
              "auto",
              "de",
              "en"
            ],
            "type": "string",
            "description": "Language of the first message to the seller. <b>auto</b> follows the listing text (German by default).",
            "default": "auto"
          },
          "offerPct": {
            "title": "Offer in the message (% below asking)",
            "minimum": 0,
            "maximum": 40,
            "type": "integer",
            "description": "0 = the message names no price offer. A number adds that % under the asking price as an offer.",
            "default": 0
          },
          "includeSellerContact": {
            "title": "Keep private sellers' contact details",
            "type": "boolean",
            "description": "Off (default, GDPR): a private seller's name, phone and e-mail are dropped — the listing link is the contact route. Dealers' business contacts are always kept when the listing shows them.",
            "default": false
          },
          "maxListings": {
            "title": "Max listings to scan",
            "minimum": 10,
            "maximum": 5000,
            "type": "integer",
            "description": "How many listings the source scrapes per run. <b>Affects what you pay</b>: ≈ $0.0008 per listing plus a $0.005 start on your Apify account, e.g. 200 listings ≈ $0.17. More listings = a better market baseline. A scheduled run scans twice this.",
            "default": 200
          },
          "llmProvider": {
            "title": "AI model access",
            "enum": [
              "apify",
              "byok"
            ],
            "type": "string",
            "description": "<b>Apify (no keys)</b> — the AI runs through Apify's built-in OpenRouter proxy; tokens are billed to your Apify account at OpenRouter's rates. <b>My own key</b> — use your OpenAI / Anthropic / Gemini / Groq key instead; a free-tier key assesses only a few qualified car deals per run — expect 1–3 AI checks (2 calls at a time, one after a rate limit, then the 3 borderline qualified car deals retried one by one) — and the rest keep their rule score; a paid Groq / Gemini key (billing on) assesses every qualified car deal.",
            "default": "apify"
          },
          "llmModel": {
            "title": "AI model",
            "type": "string",
            "description": "Leave empty for the default: <code>anthropic/claude-haiku-4.5</code> with Apify, <code>google:gemini-3.5-flash-lite</code> with your own key (a free Gemini key works as is). Apify mode takes an OpenRouter slug such as <code>openai/gpt-4.1-mini</code>; own-key mode takes <code>provider:model</code>, e.g. <code>anthropic:claude-haiku-4-5-20251001</code> for an Anthropic key."
          },
          "llmApiKey": {
            "title": "Your API key (own-key mode only)",
            "type": "string",
            "description": "Required when <b>AI model access</b> is <i>My own API key</i>. Stored encrypted by Apify, never logged."
          },
          "sendAlertsTo": {
            "title": "Send alerts to (Slack, Discord, Teams, Google Chat, Telegram or webhook)",
            "type": "string",
            "description": "Paste one or more URLs, one per line — the service is detected from the address: a Slack or Discord channel webhook, a Teams Workflows or Google Chat space webhook, your Telegram bot's send link (<code>https://api.telegram.org/bot&lt;token&gt;/sendMessage?chat_id=@yourchannel</code>) or any other https URL (Zapier, Make, n8n, your CRM), which gets the qualified car deals as JSON. After every run with at least one new qualified car deal, the digest (how many are new, the top 10 with links) is posted there. Never sent for the free demo. Webhook headers, batching and signing: the API-only fields <code>webhookHeaders</code>, <code>webhookBatchSize</code>, <code>webhookSecret</code>."
          },
          "dedupeAcrossRuns": {
            "title": "Never output the same qualified car deal twice",
            "type": "boolean",
            "description": "Remembers every qualified car deal you were charged for (in a named key-value store on your account) and skips it in future runs.",
            "default": true
          },
          "dedupeTtlDays": {
            "title": "Deliver a qualified car deal again after (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "How long a delivered car stays remembered. 0 = never deliver or charge it again — a car that comes back is delivered again only when its price dropped ≥ 5 % since you last got it. A number of days also lets a relisted car reach you again after that many days.",
            "default": 0
          },
          "historyDatasetName": {
            "title": "Keep a running log (dataset name)",
            "type": "string",
            "description": "Optional. Type a name (e.g. <code>used-car-deal-finder-ai-seen-log</code>) and every run appends its new qualified car deals with the date to that named dataset on your account — one list across months to connect to Google Sheets or your BI tool once. Empty = off. Costs nothing extra.",
            "default": ""
          },
          "sourceMode": {
            "title": "Where do the qualified car deals come from?",
            "enum": [
              "actor",
              "dataset",
              "list"
            ],
            "type": "string",
            "description": "<b>Plan note:</b> the live search needs an Apify plan that can run Store Actors; on any other plan use <b>list</b> (your own rows, ready template in the README) — nothing is charged. <b>actor</b> — paste your mobile.de link in <b>Your mobile.de search link</b> and run <code>memo23/mobile-de-scraper</code> on your account, billed separately. <b>dataset</b> — an existing Apify dataset. <b>list</b> — records you paste in. <b>Bring your own data:</b> rows or a dataset ID, and you pay only for the analysis — the source Actor is never run. The mode you choose always runs as chosen; only the untouched sample records next to a search you typed switch to the live search (spend-capped). <code>{}</code> over the API runs the free demo — nothing charged.",
            "default": "actor"
          },
          "datasetId": {
            "title": "Dataset",
            "type": "string",
            "description": "Only for <b>dataset</b> mode. Pick the dataset so the Actor is granted read access to it."
          },
          "itemsList": {
            "title": "Listings to process",
            "type": "array",
            "description": "Only for <b>list</b> mode. JSON array of mobile.de listings — the source Actor's rows, or objects with <code>title</code>, <code>priceEur</code>, <code>mileageKm</code>, <code>year</code>, <code>make</code>, <code>model</code>, <code>fuel</code> and optionally <code>url</code>, <code>descriptionText</code>, <code>accidentFree</code> (see the README's List-mode rows)."
          },
          "dedupeStoreName": {
            "title": "Dedupe store name",
            "type": "string",
            "description": "Key-value store used for cross-run memory. Left at the default, the memory is kept per search (source and search terms): rewording <code>goalDescription</code> keeps it, so a scheduled run never re-delivers what you already have, and another search starts its own list. Running it for several clients on one account, type one name per client.",
            "default": "used-car-deal-finder-ai-seen"
          },
          "minComparables": {
            "title": "Min. comparable cars (API only)",
            "minimum": 2,
            "maximum": 50,
            "type": "integer",
            "description": "API only — hidden on the form. Comparable = same make and model, ±2 years, similar mileage, same fuel, inside this run. With fewer than this the median is not reported as a market price.",
            "default": 5
          },
          "autoSwitchToLive": {
            "title": "Typed search next to the sample starts the live search (API only)",
            "type": "boolean",
            "description": "API only — hidden on the form. On (default): search terms typed next to the untouched sample records start the live search (spend-capped; <code>OUTPUT.switchedToLive</code> names them). Off: the mode you send is the mode that runs — the sample stays the free demo and the status names the terms it did not search. API pipelines that must never start a paid read on their own: send <code>false</code>.",
            "default": true
          },
          "discoveryActorId": {
            "title": "Source Actor (API only)",
            "type": "string",
            "description": "API only — hidden on the form. Actor used in <b>actor</b> mode. Any Actor whose output has the fields listed in the README works.",
            "default": "memo23/mobile-de-scraper"
          },
          "discoveryInput": {
            "title": "Source Actor input (API only)",
            "type": "object",
            "description": "API only — hidden on the form. Only for <b>actor</b> mode, advanced. Extra input passed to the source Actor as-is (e.g. <code>moreResults</code>); anything here wins over the fields above. The live search runs that Store Actor on your Apify plan — if your plan cannot run Store Actors, paste your own listings in <b>list</b> mode (any plan); <b>dataset</b> only for a dataset you already have."
          },
          "webhookUrl": {
            "title": "Webhook URL (API only)",
            "type": "string",
            "description": "API only — hidden on the form. Qualified car deals are POSTed here as JSON (Zapier, Make, n8n, your CRM). For Google Sheets / Slack you can also use Apify's built-in Integrations tab. Stored encrypted — Zapier / Make hook URLs carry their secret in the path."
          },
          "webhookHeaders": {
            "title": "Webhook headers (API only)",
            "type": "object",
            "description": "API only — hidden on the form. Extra HTTP headers for the webhook, e.g. <code>{\"Authorization\": \"Bearer …\"}</code>. Stored encrypted by Apify, never logged."
          },
          "webhookBatchSize": {
            "title": "Webhook batch size (API only)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "API only — hidden on the form. 1 = one POST per qualified car deal the moment it is ready. Higher = one POST per N qualified car deals.",
            "default": 1
          },
          "webhookSecret": {
            "title": "Webhook signing secret (API only)",
            "type": "string",
            "description": "API only — hidden on the form. Any random string. Every webhook POST then carries <code>X-Signature: sha256=&lt;HMAC-SHA256 of the raw body with this secret&gt;</code>, so your endpoint can verify it came from this Actor. Stored encrypted by Apify, never logged."
          },
          "discoveryTimeoutSecs": {
            "title": "Source run timeout, seconds (API only)",
            "minimum": 60,
            "maximum": 86400,
            "type": "integer",
            "description": "API only — hidden on the form. How long the source Store Actor may run before its partial results are used. Raise it when the status says the source stopped early.",
            "default": 3600
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL (API only)",
            "type": "string",
            "description": "API only — hidden on the form, where <code>sendAlertsTo</code> takes it. Slack incoming-webhook URL for the digest."
          },
          "discordWebhookUrl": {
            "title": "Discord webhook URL (API only)",
            "type": "string",
            "description": "API only — hidden on the form, where <code>sendAlertsTo</code> takes it. Discord channel webhook URL for the digest."
          },
          "teamsWebhookUrl": {
            "title": "Microsoft Teams webhook URL (API only)",
            "type": "string",
            "description": "API only — hidden on the form, where <code>sendAlertsTo</code> takes it. Teams Workflows webhook URL for the digest."
          },
          "googleChatWebhookUrl": {
            "title": "Google Chat webhook URL (API only)",
            "type": "string",
            "description": "API only — hidden on the form, where <code>sendAlertsTo</code> takes it. Google Chat space webhook URL for the digest."
          },
          "telegramUrl": {
            "title": "Telegram sendMessage link (API only)",
            "type": "string",
            "description": "API only — hidden on the form, where <code>sendAlertsTo</code> takes it. The bot's sendMessage link with its chat_id."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}