{
  "openapi": "3.0.1",
  "info": {
    "title": "Zillow Deal Finder: AI Cap Rate, Cash Flow & Price-Cut Scoring",
    "description": "First 25 deals free. No start fee. A Zillow deal finder for real estate investors: pay only for listings that cash-flow at your terms — cap rate, cash flow, reduced prices and FSBO leads, scored with an AI memo. Free demo on any plan; live search runs Zillow Search Scraper on your own Apify account.",
    "version": "0.3",
    "x-build-id": "XpjwOjgkZhjzobZLE"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rich_minds~zillow-deal-finder-ai/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rich_minds-zillow-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~zillow-deal-finder-ai/runs": {
      "post": {
        "operationId": "runs-sync-rich_minds-zillow-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~zillow-deal-finder-ai/run-sync": {
      "post": {
        "operationId": "run-sync-rich_minds-zillow-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",
        "required": [
          "sourceMode"
        ],
        "properties": {
          "locations": {
            "title": "Cities or ZIP codes",
            "type": "array",
            "description": "One place per line, e.g. <code>Memphis, TN</code> or <code>44109</code> — the Actor builds the Zillow search with your price and bedroom filters. The live search runs Zillow Search Scraper on your Apify plan (no Store Actors on your plan? use a Zillow dataset). The free demo does not search it; typing a place starts the live search.",
            "items": {
              "type": "string"
            }
          },
          "sourceMode": {
            "title": "Where do the listings come from?",
            "enum": [
              "actor",
              "dataset",
              "list",
              "watchlist"
            ],
            "type": "string",
            "description": "<b>Search Zillow live</b> for the places above (rows billed by Zillow Search Scraper, capped by <b>Max source spend</b>), score a Zillow <b>dataset</b>, paste a <b>list</b> of rows, or <b>watch</b> listings you follow. With nothing to search (<code>{}</code>) the free demo runs on 6 sample listings — nothing charged.",
            "default": "actor"
          },
          "investorGoal": {
            "title": "Your investor brief (for the AI)",
            "type": "string",
            "description": "Describe the deal you want in plain words — the AI scores every listing against it (0-100, with reasons) and writes the deal memo. Leave empty to rank by the numbers only."
          },
          "minScore": {
            "title": "Minimum deal score (0–100)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "The field that decides what you pay: listings whose deal score is below this are discarded and <b>not charged</b>. 60 keeps solid deals; raise it to 75+ for only the best, lower it to see more.",
            "default": 60
          },
          "maxQualified": {
            "title": "Max qualified deals to output",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Hard cap on results and on what <b>this Actor</b> charges: at most this many × $0.015 with AI on (× $0.004 off), e.g. 100 × $0.015 = $1.50. Best deals first.",
            "default": 100
          },
          "maxDiscoveryChargeUsd": {
            "title": "Max source spend (USD)",
            "minimum": 0.01,
            "maximum": 1000,
            "type": "number",
            "description": "Hard cap on what the Zillow search may charge your account (≈ $0.0023 per listing) — $0.50 in the form and for API calls that leave it out. Raise it for bigger searches.",
            "default": 0.5
          },
          "enableAi": {
            "title": "AI deal memo",
            "type": "boolean",
            "description": "Adds a grounded deal memo, red flags, upsides, condition, verbatim seller phrases and a fit score against your brief. <b>On = $0.015 per qualified deal + AI tokens; off = $0.004</b> (math and rule score only).",
            "default": true
          },
          "notifyEmail": {
            "title": "E-mail me the new deals (optional)",
            "type": "string",
            "description": "After every run with new deals, the digest (top 10 with price, cash flow, cap rate, links) is e-mailed here. Schedule the run (Actions → Schedule) and only new deals and price cuts reach your inbox. Never sent for the free demo."
          },
          "listingGoal": {
            "title": "Strategy",
            "enum": [
              "rental",
              "flip",
              "any"
            ],
            "type": "string",
            "description": "How the deal score is weighted. <b>Rental</b>: cap rate, cash flow, cash-on-cash, 1% rule. <b>Flip</b>: discount to Zestimate, $/sqft below the ZIP median, motivated-seller signals, price-cut size. <b>Any</b>: the better of both.",
            "default": "rental"
          },
          "minCapRatePct": {
            "title": "Min cap rate (%)",
            "minimum": 0,
            "maximum": 50,
            "type": "number",
            "description": "Only deals whose cap rate (NOI ÷ price) reaches this, e.g. 7. Listings without a rent estimate fail it."
          },
          "minMonthlyCashFlow": {
            "title": "Min monthly cash flow (USD)",
            "minimum": -10000,
            "maximum": 100000,
            "type": "number",
            "description": "Only deals that cash-flow at least this much per month after mortgage and expenses at your financing terms, e.g. 150."
          },
          "minCashOnCashPct": {
            "title": "Min cash-on-cash return (%)",
            "minimum": -100,
            "maximum": 200,
            "type": "number",
            "description": "Only deals whose yearly cash flow ÷ cash invested (down payment + closing costs) reaches this, e.g. 8."
          },
          "minDiscountToZestimatePct": {
            "title": "Min discount to Zestimate (%)",
            "minimum": -100,
            "maximum": 100,
            "type": "number",
            "description": "Only listings priced at least this far below Zillow's Zestimate, e.g. 10 for flips and wholesale."
          },
          "minPrice": {
            "title": "Min price (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip listings below this asking price."
          },
          "maxPrice": {
            "title": "Max price (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip listings above this asking price."
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Skip listings with fewer bedrooms."
          },
          "homeTypes": {
            "title": "Home types",
            "type": "array",
            "description": "Keep only these home types. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "SINGLE_FAMILY",
                "MULTI_FAMILY",
                "CONDO",
                "TOWNHOUSE",
                "MANUFACTURED",
                "LOT",
                "APARTMENT"
              ],
              "enumTitles": [
                "Single-family",
                "Multi-family",
                "Condo",
                "Townhouse",
                "Manufactured",
                "Lot / land",
                "Apartment"
              ]
            }
          },
          "requireOnePercentRule": {
            "title": "Require the 1% rule",
            "type": "boolean",
            "description": "Only deals whose monthly rent estimate is at least 1% of the price.",
            "default": false
          },
          "motivatedSellerOnly": {
            "title": "Motivated sellers only",
            "type": "boolean",
            "description": "Only listings with a price cut, 60+ days on Zillow, FSBO, foreclosure, bank-owned or auction.",
            "default": false
          },
          "minPriceCutPct": {
            "title": "Min price cut (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Only listings whose last price cut is at least this share of the price before it, e.g. 5."
          },
          "minDaysOnZillow": {
            "title": "Min days on Zillow",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only listings on Zillow at least this long (stale listings negotiate), e.g. 45."
          },
          "targetFlags": {
            "title": "Target flags (any of)",
            "type": "array",
            "description": "Only deliver deals that have at least one of these flags, and rank those with more of them higher. Use the flag names from the README, e.g. <code>price_cut</code>, <code>fsbo</code>, <code>below_zip_median</code> (<code>priceCut</code> works too); an unknown name stops the run at once with the list of valid ones.",
            "items": {
              "type": "string"
            }
          },
          "suppressionList": {
            "title": "Exclude list",
            "type": "array",
            "description": "Zillow zpids, listing URLs or addresses to never output (e.g. deals you already offered on). Skipped before any processing, never charged.",
            "items": {
              "type": "string"
            }
          },
          "downPaymentPct": {
            "title": "Down payment (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Share of the price you pay in cash; the rest is the loan.",
            "default": 25
          },
          "interestRatePct": {
            "title": "Interest rate (%)",
            "minimum": 0,
            "maximum": 30,
            "type": "number",
            "description": "Yearly mortgage rate.",
            "default": 7
          },
          "loanTermYears": {
            "title": "Loan term (years)",
            "minimum": 1,
            "maximum": 40,
            "type": "integer",
            "description": "Mortgage length.",
            "default": 30
          },
          "closingCostPct": {
            "title": "Closing costs (% of price)",
            "minimum": 0,
            "maximum": 20,
            "type": "number",
            "description": "Added to the down payment as cash invested (for cash-on-cash).",
            "default": 3
          },
          "propertyTaxRatePct": {
            "title": "Property tax rate (% per year)",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Applied to the tax-assessed value (else the price) when the listing has no tax amount.",
            "default": 1.1
          },
          "insuranceUsdYear": {
            "title": "Insurance (USD per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Homeowner's insurance used when the listing states none.",
            "default": 1500
          },
          "vacancyPct": {
            "title": "Vacancy (% of rent)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Rent lost to empty months.",
            "default": 5
          },
          "maintenancePct": {
            "title": "Maintenance / capex (% of rent)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Repairs and replacements set aside from the rent.",
            "default": 8
          },
          "managementPct": {
            "title": "Property management (% of rent)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Set 0 if you self-manage.",
            "default": 8
          },
          "monthlyHoaUsd": {
            "title": "HOA (USD per month)",
            "minimum": 0,
            "type": "integer",
            "description": "Used when the listing states no HOA fee (search cards rarely do — turn on the detail step for the real one).",
            "default": 0
          },
          "rentFallbackPct": {
            "title": "Rent when Zillow has none (% of price per month)",
            "minimum": 0.1,
            "maximum": 5,
            "type": "number",
            "description": "Listings without a Zillow rent Zestimate get the cash-flow math with rent = this share of the price per month, e.g. 0.8 (a $120k house → $960/mo). <code>rentSource</code> on every row says which rent was used. Empty = such listings get no cash-flow math."
          },
          "fetchDetails": {
            "title": "Fetch listing details for the shortlist",
            "type": "boolean",
            "description": "Runs Zillow Detail Scraper (maxcopell/zillow-detail-scraper, ≈ $0.0036 per listing, billed by that Actor on your account) for the deals that already passed your rules only, then recomputes the math with the real tax, HOA and insurance and gives the AI the full description.",
            "default": false
          },
          "maxDetailFetches": {
            "title": "Max detail fetches",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on how many shortlisted deals get the detail step per run (best deal score first).",
            "default": 50
          },
          "rentComps": {
            "title": "Rent comps from Zillow rentals",
            "type": "boolean",
            "description": "Runs one capped for-rent search per ZIP of your deals (Zillow Search Scraper on your account, ≈ $0.05 a ZIP, at most <code>maxCompZips</code> ZIPs). A listing without a rent Zestimate then gets the median rent of that ZIP's rentals with the same bedroom count (<code>rentSource: zip_rent_comps</code>, before <code>rentFallbackPct</code>), so its cash flow is market evidence, not a guess. Live search, dataset and list modes; not in the free demo.",
            "default": false
          },
          "soldComps": {
            "title": "ARV from recently sold comps",
            "type": "boolean",
            "description": "Runs one capped \"sold in the last 6 months\" search per ZIP of your deals (≈ $0.05 a ZIP on your account, at most <code>maxCompZips</code> ZIPs). <code>arv</code> becomes the ZIP's median sold $/sqft × the listing's sqft (<code>arvSource: sold_comps</code>) — the ARV flippers price from, so <code>maxAllowableOffer</code> is an offer sheet. Not in the free demo.",
            "default": false
          },
          "maxCompZips": {
            "title": "Max ZIPs per comp search",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Caps the comp searches: the ZIPs with the most deals first, 20 comps each. 5 ZIPs ≈ $0.23 per comp kind at most, also capped by maxDiscoveryChargeUsd.",
            "default": 5
          },
          "writeOfferNote": {
            "title": "AI offer note + offer letter PDF",
            "type": "boolean",
            "description": "With AI on, adds a short note (≤ 600 characters) to the listing agent or FSBO owner for warm and hot deals, using only numbers from the row — no financing promises. Hot deals also get a one-page letter of intent (PDF, blanks for your price and terms) linked in <code>offerLetterUrl</code>. Included in the AI price.",
            "default": false
          },
          "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 (paid Apify plans include the model access). <b>My own key</b> — use your OpenAI / Anthropic / Gemini / Groq key instead; a free-tier key is slower (2 calls at a time, one after a rate limit) — the AI stops before the run's timeout and the rest keep their rule score.",
            "default": "apify"
          },
          "llmModel": {
            "title": "AI model",
            "type": "string",
            "description": "Leave empty for the default (<code>anthropic/claude-haiku-4.5</code>). 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>."
          },
          "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."
          },
          "aiCandidateMultiplier": {
            "title": "AI candidate pool (× max qualified)",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "The AI assesses the best rule-scored candidates first, up to this multiple of <b>Max qualified</b> (e.g. 2 × 100 = 200 listings). Higher = more thorough, slower, more tokens.",
            "default": 2
          },
          "slackWebhookUrl": {
            "title": "Post the new deals to Slack (optional)",
            "type": "string",
            "description": "A Slack incoming-webhook URL (<code>https://hooks.slack.com/services/…</code>). After every run with at least one new deal, the digest (how many are new, the top 10 with links) is posted to that channel as a readable message — not raw JSON. Never sent for the free demo."
          },
          "webhookUrl": {
            "title": "Webhook URL (optional)",
            "type": "string",
            "description": "Qualified deals are POSTed here as JSON (Zapier, Make, n8n, your CRM). For Google Sheets 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 (optional)",
            "type": "object",
            "description": "Extra HTTP headers for the webhook, e.g. <code>{\"Authorization\": \"Bearer …\"}</code>. Stored encrypted by Apify, never logged."
          },
          "webhookBatchSize": {
            "title": "Webhook batch size",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "1 = one POST per deal the moment it is ready. Higher = one POST per N deals.",
            "default": 1
          },
          "dedupeAcrossRuns": {
            "title": "Never output the same deal twice",
            "type": "boolean",
            "description": "Remembers every deal you received (by Zillow zpid and the price it had, in a named key-value store on your account) and skips it in future runs.",
            "default": true
          },
          "alertOnPriceCut": {
            "title": "Re-alert when a known deal cuts its price",
            "type": "boolean",
            "description": "A deal you already received comes back — and is charged again — only when its price dropped since, flagged <code>isNewPriceCut</code>.",
            "default": true
          },
          "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 (places / search URLs / watchlist / dataset and <code>listingGoal</code>): rewording <code>investorGoal</code> keeps it, a different search starts its own list and the status says so. Give each client their own name here to keep their lists apart.",
            "default": "zillow-deal-finder-ai-seen"
          },
          "searchUrls": {
            "title": "Zillow search URLs (advanced)",
            "type": "array",
            "description": "Instead of <b>Cities or ZIP codes</b>: a search from zillow.com with its map area and every filter, copied from the address bar (one URL per line). The live search runs Zillow Search Scraper on your Apify plan — no Store Actors on your plan? use a Zillow dataset. The free demo does not search it; typing a URL starts the live search.",
            "items": {
              "type": "string"
            }
          },
          "watchlist": {
            "title": "Watchlist — listings you follow",
            "type": "array",
            "description": "Zillow zpids or listing URLs (one per line). Each run re-checks them with Zillow Detail Scraper (≈ $0.0036 per listing on your Apify plan) and delivers — and charges — only a listing whose price or status changed (<code>watchChange</code>: price_cut, back_on_market …); the first run delivers each once. Schedule it daily. The free demo does not search it; typing a listing starts the watchlist.",
            "items": {
              "type": "string"
            }
          },
          "datasetId": {
            "title": "Zillow dataset",
            "type": "string",
            "description": "Only for <b>dataset</b> mode: a dataset from Zillow Search Scraper, Zillow ZIP Code Search Scraper or Zillow Detail Scraper (same field names). Pick it so the Actor is granted read access."
          },
          "itemsList": {
            "title": "Listing rows to score",
            "type": "array",
            "description": "Only for <b>list</b> mode: a JSON array of Zillow listing objects in Zillow Search Scraper's format — needs <code>zpid</code> (or <code>propertyUrl</code>) and <code>listingPrice.amount</code>; <code>rentZestimate</code> switches on the cash-flow math (README → List-mode rows). Prefilled with 6 fictional sample listings — the free demo."
          },
          "resultsLimit": {
            "title": "Listings per search URL",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Most listings Zillow Search Scraper returns per URL (≈ $0.0023 each on your account, also capped by <b>Max source spend</b>).",
            "default": 200
          },
          "extractionMethod": {
            "title": "Search depth",
            "enum": [
              "PAGINATION_WITH_ZOOM_IN",
              "MAP_MARKERS",
              "PAGINATION"
            ],
            "type": "string",
            "description": "How Zillow Search Scraper walks the search. <b>Pagination with zoom-in</b> (default) finds the most listings in big areas; <b>Map markers</b> is faster for small ones.",
            "default": "PAGINATION_WITH_ZOOM_IN"
          },
          "discoveryActorId": {
            "title": "Source Actor (advanced)",
            "type": "string",
            "description": "Actor used in live-search mode. Any Zillow scraper whose output has Zillow Search Scraper's or the raw Zillow API's field names works.",
            "default": "maxcopell/zillow-scraper"
          },
          "discoveryInput": {
            "title": "Source Actor input (advanced)",
            "type": "object",
            "description": "Only for live-search mode: extra input passed to the source Actor as-is; it overrides the fields built from the form. The live search runs that Store Actor on your Apify plan — if your plan cannot run Store Actors, use <b>dataset</b> mode."
          },
          "maxToProcess": {
            "title": "Max candidates to process",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Upper bound on how many listings are scored in one run (controls run time). Default = 3 × max qualified."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}