{
  "openapi": "3.0.1",
  "info": {
    "title": "Wellfound Jobs Scraper | Salaries & Job Changes",
    "description": "Collect public Wellfound jobs with descriptions, salary and equity fields where available. Filter roles and locations, paginate results and track new or changed jobs. Coverage checks help prevent false expired-job alerts.",
    "version": "0.1",
    "x-build-id": "IDoODdnWNTvanone0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/peerless_columbine~wellfound-jobs-scraper-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-peerless_columbine-wellfound-jobs-scraper-api",
        "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/peerless_columbine~wellfound-jobs-scraper-api/runs": {
      "post": {
        "operationId": "runs-sync-peerless_columbine-wellfound-jobs-scraper-api",
        "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/peerless_columbine~wellfound-jobs-scraper-api/run-sync": {
      "post": {
        "operationId": "run-sync-peerless_columbine-wellfound-jobs-scraper-api",
        "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": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Wellfound /jobs, /role, /role/r, or /role/l URLs. When omitted, role/location/remoteOnly can build a source URL automatically. In blackfalcon compatibility mode these replace query/roles/location/remote search constraints; job and post-fetch filters still apply.",
            "items": {
              "type": "string"
            }
          },
          "role": {
            "title": "Role",
            "type": "string",
            "description": "Role name or slug, for example software engineer. Enables server-rendered role pagination."
          },
          "jobTitle": {
            "title": "Job title filter",
            "type": "string",
            "description": "Compatibility filter: title contains this phrase, case-insensitive."
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Compatibility filter across title, company, locations and description."
          },
          "location": {
            "title": "📍 Locations",
            "uniqueItems": true,
            "type": "array",
            "description": "One or more location slugs (e.g. [\"new-york\", \"san-francisco\", \"berlin\"]). Each location × role combination spawns a separate search thread. For /jobs?q= searches, use a human-readable city name. Ignored for pasted searchUrls (they carry their own location).",
            "items": {
              "type": "string"
            }
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "any",
              "full-time",
              "part-time",
              "contract",
              "internship",
              "fulltime",
              "parttime"
            ],
            "type": "string",
            "description": "Compatibility filter for the jobType field exposed in Wellfound's public search payload.",
            "default": "any"
          },
          "experience": {
            "title": "Experience level",
            "enum": [
              "any",
              "junior",
              "mid",
              "senior",
              "executive"
            ],
            "type": "string",
            "description": "Best-effort experience filter using title and description terms.",
            "default": "any"
          },
          "includeNoSalary": {
            "title": "Include jobs without USD salary",
            "type": "boolean",
            "description": "When false, rows without a parseable USD salary range are excluded.",
            "default": true
          },
          "companyCategories": {
            "title": "Company category filter",
            "uniqueItems": true,
            "type": "array",
            "description": "Migration-compatible filter matching supplied terms against company name/slug, consistent with the head competitor's documented behavior.",
            "items": {
              "type": "string"
            }
          },
          "includeCompanies": {
            "title": "Include companies",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional allow-list of company names or slugs.",
            "items": {
              "type": "string"
            }
          },
          "since": {
            "title": "Only jobs since",
            "type": "string",
            "description": "ISO date/timestamp applied to Wellfound liveStartAt for scheduled incremental runs."
          },
          "requestDelayMillis": {
            "title": "Request spacing",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Optional delay before each HTTP attempt.",
            "default": 0
          },
          "scanMaxItems": {
            "title": "Incremental scan limit",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Maximum candidate jobs scanned before change selection. maxItems remains the delivery cap.",
            "default": 2000
          },
          "roles": {
            "title": "roles",
            "type": "array",
            "description": "Additional source roles or URLs; ignored when startUrls is set.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "searchUrls",
            "type": "array",
            "description": "Additional source roles or URLs; ignored when startUrls is set.",
            "items": {
              "type": "string"
            }
          },
          "remote": {
            "title": "Remote only (alias)",
            "type": "boolean",
            "description": "Alias of remoteOnly; remoteOnly takes precedence."
          },
          "salaryMin": {
            "title": "salaryMin",
            "minimum": 0,
            "type": "integer",
            "description": "Drop jobs whose upper salary bound is below this value; missing upper bound is excluded. minSalary takes precedence and retains its lower-bound semantics."
          },
          "salaryMax": {
            "title": "salaryMax",
            "minimum": 0,
            "type": "integer",
            "description": "Drop jobs whose known lower salary bound exceeds this value. maxSalary takes precedence and retains its upper-bound semantics."
          },
          "visaSponsorship": {
            "title": "Visa sponsorship",
            "type": "boolean",
            "description": "true requires explicit support. false excludes explicit refusal but keeps unknowns. Omit for no filter."
          },
          "descriptionFormat": {
            "title": "Description fields",
            "enum": [
              "all",
              "text",
              "html",
              "markdown"
            ],
            "type": "string",
            "description": "Select fields; source Markdown is retained verbatim. Missing source HTML stays null with a warning."
          },
          "query": {
            "title": "🔍 Search Query (free-text)",
            "type": "string",
            "description": "Free-text job search (e.g. \"rust engineer\", \"ML ops\", \"solidity developer\"). Maps to Wellfound's /jobs?q= endpoint. Combine with roles/searchUrls to union multiple searches."
          },
          "experienceLevel": {
            "title": "🎓 Experience Level",
            "enum": [
              "entry",
              "mid",
              "senior",
              "staff"
            ],
            "type": "string",
            "description": "Filter by minimum required years of experience. Entry: 0-2, Mid: 2-5, Senior: 5-8, Staff+: 8+. Jobs without experience data are kept."
          },
          "equityMin": {
            "title": "📈 Minimum Equity (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Drop jobs whose max equity grant is below this percent. 0 = no minimum. Jobs without equity data are dropped when minimum is set.",
            "default": 0
          },
          "includeKeywords": {
            "title": "📝 Include Keywords",
            "type": "object",
            "description": "Require at least one of these keywords. Example: {\"keywords\":[\"rust\",\"golang\"],\"matchTitle\":true,\"matchDescription\":true,\"matchSkills\":true}. Matches default to all three fields."
          },
          "compact": {
            "title": "📦 Compact Output",
            "type": "boolean",
            "description": "Output only core fields (id, title, companyName, portalUrl, locationNames, remote, compensation, postedAt). For AI-agent/MCP workflows.",
            "default": false
          },
          "descriptionMaxLength": {
            "title": "✂️ Description Max Length",
            "minimum": 0,
            "type": "integer",
            "description": "Truncate job description to this many characters. 0 = no truncation.",
            "default": 0
          },
          "locationText": {
            "title": "Location",
            "type": "string",
            "description": "Location filter. With role, it also builds Wellfound's public role/location route."
          },
          "skipReposts": {
            "title": "Skip reposts",
            "type": "boolean",
            "description": "In incremental mode, suppress newly assigned job IDs whose content matches a previously delivered job confirmed expired by a complete scan. Incomplete scans never expire jobs. Applies to state first recorded with content hashes; older records acquire hashes on their next delivered update.",
            "default": false
          },
          "originLocation": {
            "title": "🎯 Origin Location (for radius filter)",
            "type": "string",
            "description": "Origin city for radius filtering, resolved from offline GeoNames city data. Unknown origins skip the filter with an OUTPUT warning. Unresolved job locations are excluded when the origin is known. Distances use city centres."
          },
          "radiusMiles": {
            "title": "📏 Radius (miles)",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Drop jobs further than N miles from originLocation, using job coordinates where available. US-standard unit.",
            "default": 0
          },
          "radiusKm": {
            "title": "📏 Radius (km, alt)",
            "minimum": 0,
            "maximum": 800,
            "type": "integer",
            "description": "Kilometer alternative to radiusMiles. If both set, radiusMiles wins. Use this for EU-based searches.",
            "default": 0
          },
          "cityName": {
            "title": "🏙️ City Name",
            "type": "string",
            "description": "Origin city alias for radius filtering; takes precedence over originLocation and explicit coordinates."
          },
          "lat": {
            "title": "🌐 Latitude",
            "minimum": -90,
            "maximum": 90,
            "type": "number",
            "description": "GPS latitude. Pair with lon. Ignored when cityName is set."
          },
          "lon": {
            "title": "🌐 Longitude",
            "minimum": -180,
            "maximum": 180,
            "type": "number",
            "description": "GPS longitude. Pair with lat."
          },
          "telegramChatId": {
            "title": "💬 Telegram Chat / Channel ID",
            "type": "string",
            "description": "Chat ID (from @userinfobot) or channel ID (starts with -100 for channels). Required when telegramToken is set."
          },
          "whatsappPhoneNumberId": {
            "title": "📱 WhatsApp Phone Number ID",
            "type": "string",
            "description": "WhatsApp Business phone number ID from Meta Business Manager (the numeric ID next to your number — NOT the phone number itself). Free service-conversation messages within 24 hours of last user-initiated contact."
          },
          "whatsappTo": {
            "title": "📨 WhatsApp Recipient",
            "type": "string",
            "description": "Recipient phone number in E.164 format (e.g. +4512345678). The recipient must have messaged your business number within the last 24 hours."
          },
          "includeRunMetadata": {
            "title": "📣 Include Run Summary in Notifications",
            "type": "boolean",
            "description": "Prepend a one-line summary (search label + total count) to each notification batch.",
            "default": true
          },
          "whatsappApiVersion": {
            "title": "WhatsApp Graph API version",
            "pattern": "^v[0-9]+\\.[0-9]+$",
            "type": "string",
            "description": "Graph API version used for the configured WhatsApp business sender. Set a version supported by your Meta application.",
            "default": "v23.0"
          },
          "enrichDetail": {
            "title": "📄 Enrich from Detail Pages",
            "type": "boolean",
            "description": "Core job fields — title, full description, compensation, location, remote status, experience level, job type, and company name/logo/size — are delivered inline for every listing, no toggle needed. This option additionally attempts deep per-listing fields (structured salary currency/period, company website, industry, benefits, skills). Those deep fields are not currently available and will return null, so leave this off unless you specifically need them and accept they may be empty.",
            "default": false
          },
          "enrichCompany": {
            "title": "🏢 Enrich Company Profiles",
            "type": "boolean",
            "description": "Company basics — name, logo, slug, size — are delivered inline for every listing. This option additionally attempts deep firmographics (funding stage, total raised, investors, founders, social links, founded year, markets). Those deep fields are not currently available and will return null.",
            "default": false
          },
          "includeDetails": {
            "title": "📋 Include Full Listing Details",
            "type": "boolean",
            "description": "Fetch the detail page for each listing to retrieve the full description text and contact information. Increases run time and cost. Leave off for a fast, low-cost run.",
            "default": false
          },
          "appConnector": {
            "title": "Connected app summary",
            "type": "string",
            "description": "Optional Apify MCP connector supporting notion-create-pages or create_issue. Writes one run summary after data delivery; other tools are not called. Configure mcpIssueTeam for issue trackers."
          },
          "mcpIssueTeam": {
            "title": "Issue tracker team",
            "type": "string",
            "description": "Team name or ID required when the selected connector supports create_issue."
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Return only remote jobs. With role and no location, uses the public remote-role route."
          },
          "minSalary": {
            "title": "Minimum salary (USD/year)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Require the parsed lower bound of a USD salary range to be at least this value."
          },
          "excludeCompanies": {
            "title": "Exclude companies",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional block-list of company names or slugs.",
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "newest",
              "oldest",
              "none"
            ],
            "type": "string",
            "description": "Sort accepted rows by Wellfound liveStartAt, or preserve source order.",
            "default": "none"
          },
          "fromDate": {
            "title": "From date (alias)",
            "type": "string",
            "description": "Alias of since; ISO date or timestamp."
          },
          "excludeEmptyFields": {
            "title": "Exclude empty fields",
            "type": "boolean",
            "description": "Drop null, empty strings, arrays and objects; keep zero and false."
          },
          "excludeLocations": {
            "title": "🚫 Exclude Locations",
            "uniqueItems": true,
            "type": "array",
            "description": "Drop jobs whose locationNames match any of these (substring match, e.g. \"India\" drops \"Bangalore, India\"). Applied after fetch.",
            "items": {
              "type": "string"
            }
          },
          "toDate": {
            "title": "📅 To Date",
            "type": "string",
            "description": "Only include jobs posted on or before this date. Accepts YYYY-MM-DD or ISO-8601."
          },
          "excludeKeywords": {
            "title": "🚫 Exclude Keywords",
            "type": "object",
            "description": "Drop jobs containing any of these keywords. Same shape as includeKeywords."
          },
          "companyOnlyMode": {
            "title": "Company-only output",
            "type": "boolean",
            "description": "Aggregate accepted jobs into one record per company. maxResults bounds jobs scanned before aggregation. jobCount is the number of observed jobs in this run, not all openings. Incremental mode is not applied.",
            "default": false
          },
          "notifyOnlyChanges": {
            "title": "🆕 Notify Only on Changes",
            "type": "boolean",
            "description": "When ON (default) AND incrementalMode is ON, send notifications only for NEW and UPDATED jobs. Without incrementalMode, this has no effect (all emitted jobs are notified).",
            "default": true
          },
          "maxSalary": {
            "title": "Maximum salary (USD/year)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Require the parsed upper bound of a USD salary range to be at most this value. 0 means unlimited."
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum job rows saved after filtering."
          },
          "maxPages": {
            "title": "Max pages per source URL",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum public role-search pages to fetch. Wellfound currently exposes pageCount in SSR data.",
            "default": 10
          },
          "maxRequestRetries": {
            "title": "Request retries",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Retries for transient 403/429/5xx and network failures.",
            "default": 2
          },
          "maxResults": {
            "title": "Max results (alias)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Alias of maxItems; 0 means a bounded 5000-row ceiling, not unlimited. maxPages still applies."
          },
          "maxAgeMinutes": {
            "title": "⏰ Max Age (minutes)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include jobs posted within the last N minutes. 0 = no limit. Pairs well with scheduled runs for real-time monitoring.",
            "default": 0
          },
          "incrementalMode": {
            "title": "Incremental mode",
            "type": "boolean",
            "description": "Emit NEW/UPDATED jobs using state committed only after delivery. Run the same stateKey serially.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Required in incremental mode. Changing search filters requires a new key."
          },
          "emitExpired": {
            "title": "Emit expired jobs",
            "type": "boolean",
            "description": "Emit EXPIRED only after a complete, error-free scan; suppress expiration on partial snapshots.",
            "default": false
          },
          "emitUnchanged": {
            "title": "Emit unchanged jobs",
            "type": "boolean",
            "description": "In incremental mode, include unchanged jobs with changeType=UNCHANGED. Delivered rows still commit state only after successful delivery.",
            "default": false
          },
          "slackWebhookUrl": {
            "title": "💼 Slack Incoming Webhook URL",
            "type": "string",
            "description": "Slack incoming webhook URL (Slack App → Incoming Webhooks → Add New Webhook). Formats jobs as Slack blocks with company, salary, funding stage, and location."
          },
          "discordWebhookUrl": {
            "title": "💬 Discord Webhook URL",
            "type": "string",
            "description": "Discord channel webhook URL (Server Settings → Integrations → Webhooks → New Webhook). Sends rich embeds colour-coded by change type (green=NEW, amber=UPDATED)."
          },
          "webhookUrl": {
            "title": "🪝 Generic Webhook URL",
            "type": "string",
            "description": "Universal escape hatch for n8n / Make / Zapier / custom HTTP backends. Receives a JSON POST { metadata, items } per run. Single attempt, 15 s timeout."
          },
          "webhookHeaders": {
            "title": "🪝 Webhook Headers (optional)",
            "type": "object",
            "description": "Additional HTTP headers sent with the generic webhook POST (e.g. {\"Authorization\":\"Bearer ...\"})."
          },
          "notificationLimit": {
            "title": "🔢 Notification Limit",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of jobs to send per notification batch. Prevents spam on large result sets.",
            "default": 5
          },
          "customFilters": {
            "title": "🔧 Custom Filters (advanced)",
            "type": "array",
            "description": "Array of rules applied to any output field. Each rule: {\"field\":\"<name>\",\"op\":\"includes|notIncludes|equals|notEquals|gt|gte|lt|lte\",\"value\":...}. Example: [{\"field\":\"companyFundingStage\",\"op\":\"equals\",\"value\":\"series-b\"}, {\"field\":\"description\",\"op\":\"notIncludes\",\"value\":\"wordpress\"}]."
          },
          "compatibilityMode": {
            "title": "URL compatibility mode",
            "enum": [
              "auto",
              "blackfalcon",
              "crawlerbros"
            ],
            "type": "string",
            "description": "auto detects Blackfalcon-specific input names or array location; ambiguous inputs preserve legacy URL plus client filters. blackfalcon direct URLs ignore search routing constraints; pasted searchUrls ignore location/remote per source. Explicit post-fetch filters remain active.",
            "default": "auto"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional Apify or custom proxy used for listing, detail and company requests. Omit or disable for direct access. Configured proxy failures do not silently fall back to direct."
          },
          "telegramToken": {
            "title": "📱 Telegram Bot Token",
            "type": "string",
            "description": "Telegram bot token from @BotFather. Sends notifications when new jobs are emitted. Pairs well with incrementalMode for real-time alerts."
          },
          "whatsappAccessToken": {
            "title": "🔐 WhatsApp Access Token",
            "type": "string",
            "description": "Meta Cloud API access token with whatsapp_business_messaging scope. Get a permanent token from a system user in Meta Business Manager."
          },
          "crawlerbrosInput": {
            "title": "Import crawlerbros input",
            "type": "object",
            "description": "Paste the complete competitor input JSON here to preserve its field types and defaults. Put all options inside this object. This is optional; normal native inputs remain available."
          },
          "blackfalconInput": {
            "title": "Import blackfalcondata input",
            "type": "object",
            "description": "Paste the complete competitor input JSON here to preserve its field types and defaults. Put all options inside this object. This is optional; normal native inputs remain available."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}