{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Buying Intent Leads: AI-qualified posts, pay per lead",
    "description": "First 25 leads free. No cookies, no login. LinkedIn buying intent leads: people asking for a product like yours. A LinkedIn post search that returns buyers, not posts: vendors, job ads and duplicates dropped, each buyer scored against your offer with quoted evidence and a draft reply. Pay per lead.",
    "version": "0.5",
    "x-build-id": "SbI755mfqZUfb7PjW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rich_minds~linkedin-intent-leads/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rich_minds-linkedin-intent-leads",
        "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~linkedin-intent-leads/runs": {
      "post": {
        "operationId": "runs-sync-rich_minds-linkedin-intent-leads",
        "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~linkedin-intent-leads/run-sync": {
      "post": {
        "operationId": "run-sync-rich_minds-linkedin-intent-leads",
        "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": {
          "intentKeywords": {
            "title": "Phrases your buyers write",
            "type": "array",
            "description": "One LinkedIn post search per phrase. Write what a buyer would post, not your product name: <code>recommend a CRM</code>, <code>alternative to Salesforce</code>, <code>looking for an SEO agency</code>. Every post found costs $0.002 on your account (the source Actor's price). Only searched when <b>Where do the posts come from?</b> is <i>Search LinkedIn</i>.",
            "items": {
              "type": "string"
            }
          },
          "intentPacks": {
            "title": "Ready phrase packs (optional)",
            "type": "array",
            "description": "Proven buyer phrases per offer type (8 each), merged with your own phrases. <b>Q4 planning season</b> catches the October–December posts about next year's tools and budget; the <b>German / French / Spanish / Dutch</b> packs search the same buyer questions in those markets (the AI replies in the post's language). Each pack adds 8 searches, so 8 × <b>Posts per phrase</b> posts at $0.002 on your account.",
            "items": {
              "type": "string",
              "enum": [
                "crm_sales",
                "saas_tool",
                "agency_freelancer",
                "dev_shop",
                "recruiting",
                "fractional_exec",
                "planning_season",
                "buyers_de",
                "buyers_fr",
                "buyers_es",
                "buyers_nl"
              ],
              "enumTitles": [
                "CRM & sales tools",
                "SaaS / software tool",
                "Agency or freelancer (marketing, SEO, design)",
                "Dev shop / software development",
                "Recruiting & staffing",
                "Fractional exec, finance & accounting",
                "Q4 planning season (next year's stack & budget)",
                "German buyers (DACH): kann jemand empfehlen …",
                "French buyers: quelqu'un peut recommander …",
                "Spanish buyers: alguien puede recomendar …",
                "Dutch buyers: kan iemand … aanraden"
              ]
            },
            "default": []
          },
          "offerDescription": {
            "title": "What you sell, and to whom",
            "type": "string",
            "description": "One or two sentences about <b>your</b> product. The rule score matches its words against each post, and the AI scores fit and writes the comment and DM against it. The pre-filled text is the demo's example (a CRM): a paid search that still carries it stops before anything is charged, so replace it. Example: <i>We run a Shopify development studio for DTC brands with 1–20 staff.</i>"
          },
          "suggestPhrases": {
            "title": "Suggest phrases from what I sell",
            "enum": [
              "auto",
              "always",
              "off"
            ],
            "type": "string",
            "description": "<b>Only when I typed none</b> (default): with no phrases, pack or watched accounts, 8–10 buyer phrases are written from <b>What you sell</b> (by the AI when it is on, else from templates such as <code>recommend a &lt;your category&gt;</code>) and searched. <b>Always add them</b>: merged with your own phrases (more searches, more cost). <b>Off</b>: search only your phrases. Every phrase's posts, leads and search $ per lead are in <code>OUTPUT.yieldByQuery</code>.",
            "default": "auto"
          },
          "sourceMode": {
            "title": "Where do the posts come from?",
            "enum": [
              "actor",
              "dataset",
              "list"
            ],
            "type": "string",
            "description": "<b>Free demo</b> (pre-filled): 12 sample posts, 5 buyers among them, nothing charged and no LinkedIn call — see what a lead looks like. <b>Search LinkedIn</b>: run <code>harvestapi/linkedin-post-search</code> on your account with the phrases above (its usage is billed by that Actor). <b>Existing dataset</b>: a dataset from harvestapi/linkedin-post-search, linkedin-profile-posts or linkedin-company-posts. <b>Paste posts</b> uses the JSON in <b>Post items</b> (the demo sample until you replace it).",
            "default": "actor"
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "24h",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Only posts from this window are searched and kept. Use <b>Last 24 hours</b> for a daily schedule.",
            "default": "week"
          },
          "postsPerKeyword": {
            "title": "Posts per phrase",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many posts the search returns per phrase. 5 phrases × 50 posts ≈ $0.50 of source usage on your account.",
            "default": 50
          },
          "targetIntents": {
            "title": "Intents that count as a lead",
            "type": "array",
            "description": "Posts whose intent is not in this list score 0 for intent and are never charged. Default: everything except plain complaints.",
            "items": {
              "type": "string",
              "enum": [
                "buying",
                "recommendation_request",
                "switching",
                "evaluating",
                "hiring_service",
                "pain_point"
              ],
              "enumTitles": [
                "Buying now",
                "Asking for a recommendation",
                "Switching from a tool / vendor",
                "Comparing options",
                "Hiring an agency / freelancer",
                "Complaining about a problem"
              ]
            },
            "default": [
              "buying",
              "recommendation_request",
              "switching",
              "evaluating",
              "hiring_service"
            ]
          },
          "competitorNames": {
            "title": "Your competitors",
            "type": "array",
            "description": "People who work there are dropped as vendors; posts that name them get the <code>mentions_competitor</code> flag and a higher switching score. With <b>Competitor watch</b> on, each name also adds 5 searches.",
            "items": {
              "type": "string"
            }
          },
          "expandCompetitorPhrases": {
            "title": "Competitor watch: search switching phrases",
            "type": "boolean",
            "description": "On: every competitor above adds the phrases switchers write — <code>alternative to X</code>, <code>moving away from X</code>, <code>X is too expensive</code>, <code>X vs</code>, <code>replacing X</code> — to the search (5 × <b>Posts per phrase</b> posts at $0.002 each on your account per competitor). Off: competitors only filter and flag.",
            "default": true
          },
          "targetSeniority": {
            "title": "Seniority (optional)",
            "type": "array",
            "description": "Keep only authors whose headline shows this seniority. Empty = everyone, decision-makers still score higher.",
            "items": {
              "type": "string",
              "enum": [
                "founder",
                "c_level",
                "vp",
                "director",
                "head",
                "manager",
                "ic"
              ],
              "enumTitles": [
                "Founder / owner",
                "C-level",
                "VP",
                "Director",
                "Head of",
                "Manager / lead",
                "Individual contributor"
              ]
            }
          },
          "targetRoles": {
            "title": "Role keywords (optional)",
            "type": "array",
            "description": "Keep only authors whose headline contains one of these, e.g. <code>sales</code>, <code>revenue</code>, <code>marketing</code>.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Drop posts containing",
            "type": "array",
            "description": "Words or phrases that disqualify a post, e.g. <code>webinar</code>, <code>giveaway</code>.",
            "items": {
              "type": "string"
            }
          },
          "mustMentionKeywords": {
            "title": "Posts must mention one of (optional)",
            "type": "array",
            "description": "Keep only posts containing at least one of these words.",
            "items": {
              "type": "string"
            }
          },
          "excludeAuthorKeywords": {
            "title": "Drop authors whose headline contains",
            "type": "array",
            "description": "E.g. <code>recruiter</code>, <code>consultant</code>, <code>coach</code>.",
            "items": {
              "type": "string"
            }
          },
          "includeCompanyPages": {
            "title": "Include company pages",
            "type": "boolean",
            "description": "Company pages are usually vendors, so they are dropped by default.",
            "default": false
          },
          "language": {
            "title": "Post language (optional)",
            "type": "string",
            "description": "Two-letter code such as <code>en</code> or <code>de</code>. Posts detected in another language are dropped. Empty = any language.",
            "default": ""
          },
          "targetFlags": {
            "title": "Must have one of these signals (optional)",
            "type": "array",
            "description": "Only deliver leads with at least one of these flags. The flags are explained in the README.",
            "items": {
              "type": "string",
              "enum": [
                "decision_maker",
                "founder",
                "asks_question",
                "recommendation_request",
                "mentions_competitor",
                "mentions_budget",
                "mentions_timeline",
                "mentions_team_size",
                "high_engagement",
                "fresh_24h",
                "company_page",
                "multiple_posts",
                "has_website",
                "contact_in_post",
                "profile_fetched"
              ],
              "enumTitles": [
                "Decision-maker",
                "Founder",
                "Asks a question",
                "Asks for a recommendation",
                "Names a competitor",
                "Mentions budget",
                "Mentions a deadline",
                "States team size",
                "50+ likes and comments",
                "Posted in the last 24 h",
                "Company page",
                "Several posts in this run",
                "Has a website",
                "E-mail or link in the post",
                "Profile fetched"
              ]
            }
          },
          "minScore": {
            "title": "Minimum score (0–100)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Leads scoring below this are dropped and <b>not charged</b>. 70+ is hot, 45–69 warm.",
            "default": 55
          },
          "suppressionList": {
            "title": "Never deliver these people",
            "type": "array",
            "description": "Existing customers or people you already contacted: profile URLs, <code>/in/&lt;id&gt;</code> identifiers or full names. They are skipped before anything else and never charged.",
            "items": {
              "type": "string"
            }
          },
          "authorCooldownDays": {
            "title": "Re-deliver the same person after (days)",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "A person delivered in an earlier run is skipped for this many days, even with a new post. 0 = only new posts are de-duplicated.",
            "default": 30
          },
          "enableAi": {
            "title": "AI assessment",
            "type": "boolean",
            "description": "Classifies each lead's intent with verbatim evidence, extracts the need and urgency, scores fit against your offer with reasons, and drafts a helpful public comment and a DM opener. Off = rule-based intent, score and template replies only (cheaper).",
            "default": true
          },
          "replyTone": {
            "title": "Reply tone",
            "enum": [
              "helpful",
              "direct",
              "casual"
            ],
            "type": "string",
            "description": "Tone of the drafted comment and DM.",
            "default": "helpful"
          },
          "replyLanguage": {
            "title": "Reply language",
            "type": "string",
            "description": "<code>auto</code> writes the comment and DM in the post's language; or a two-letter code such as <code>en</code>.",
            "default": "auto"
          },
          "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. It needs an Apify plan that can run public Store Actors — on a plan that cannot, the run says \"AI unavailable\" and delivers at the basic price. <b>My own key</b>: use your OpenAI / Anthropic / Gemini / Groq key instead (works on every plan).",
            "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>.",
            "default": ""
          },
          "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 leads)",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many of the best rule-scored leads get the AI pass, as a multiple of <b>Max qualified leads</b>. Higher = more thorough, more tokens.",
            "default": 2
          },
          "aiTimeBudgetSecs": {
            "title": "AI time budget (seconds)",
            "minimum": 0,
            "maximum": 3600,
            "type": "integer",
            "description": "The AI pass stops starting new assessments after this long; the remaining leads are delivered with their rule score at the <b>basic</b> price. One assessment takes ≈ 10–25 s and 8 run in parallel, so 300 s covers ≈ 100 leads. 0 = no limit.",
            "default": 300
          },
          "aiTeaserLeads": {
            "title": "AI preview when AI is off (leads)",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "With <b>AI assessment</b> off, this many top leads of a real search still get the full AI assessment (fit score, reasons, tailored comment and DM) as a preview — charged at the <b>basic</b> price, marked <code>aiTeaser: true</code>. Costs ≈ $0.003 of model tokens per lead on your account (Apify model access or your own key). Never runs in the free demo. 0 = off.",
            "default": 2
          },
          "maxQualifiedLeads": {
            "title": "Max qualified leads",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on results, and therefore on what you pay. The best-scoring leads are delivered first.",
            "default": 50
          },
          "maxToProcess": {
            "title": "Max posts to score",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Upper bound on posts kept after the free noise rules (controls run time and AI tokens).",
            "default": 300
          },
          "maxDiscoveryChargeUsd": {
            "title": "Max source spend (USD)",
            "minimum": 0.01,
            "maximum": 1000,
            "type": "number",
            "description": "Hard cap on what the LinkedIn post search may charge your account in this run. Pre-filled with $0.30 = a first search of 3 phrases × 50 posts; raise it when you add packs or competitors (competitor watch adds up to 5 phrases per competitor). API and MCP calls that leave it out are capped at the default $2 (≈ 1,000 posts).",
            "default": 2
          },
          "dedupeAcrossRuns": {
            "title": "Never deliver the same post or person twice",
            "type": "boolean",
            "description": "Remembers every delivered post and person in a named key-value store on your account. Scheduled runs deliver, and charge, only new leads.",
            "default": true
          },
          "dedupeStoreName": {
            "title": "Memory store name",
            "type": "string",
            "description": "Key-value store for the cross-run memory. Use different names for different campaigns.",
            "default": "linkedin-intent-leads-seen"
          },
          "webhookUrl": {
            "title": "Webhook URL (optional)",
            "type": "string",
            "description": "Each qualified lead is POSTed here as JSON with a Slack-ready <code>text</code> line: a Slack incoming webhook, Zapier, Make, n8n or your CRM."
          },
          "webhookHeaders": {
            "title": "Webhook headers (optional)",
            "type": "object",
            "description": "Extra HTTP headers for the webhook, e.g. <code>{\"Authorization\": \"Bearer …\"}</code>."
          },
          "webhookBatchSize": {
            "title": "Webhook batch size",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "1 = one POST per lead the moment it is ready. Higher = one POST per N leads.",
            "default": 1
          },
          "webhookDigest": {
            "title": "Send a run digest",
            "type": "boolean",
            "description": "With a webhook URL: one extra message at the end of every run — \"7 new buyers, 2 hot, top 3 with links\" and the change versus the previous run. Ideal for a Slack channel on a schedule.",
            "default": true
          },
          "notifyEmail": {
            "title": "E-mail me the digest (optional)",
            "type": "string",
            "description": "One e-mail per run with the new leads, the hot count and the top 3 with post links — sent only when the run found at least one new lead, through the Store's <code>apify/send-mail</code> Actor on your account. For founders without Slack or Zapier.",
            "default": ""
          },
          "pausePhrasesAfterEmptyRuns": {
            "title": "Pause phrases after N empty runs",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "For scheduled monitors: a phrase that found no lead in this many runs in a row is left out of the next searches, so it stops costing search money (every run's <code>OUTPUT.yieldByQuery</code> shows posts, leads and search $ per lead for each phrase). 0 = never pause; set it back to 0 to search paused phrases again.",
            "default": 0
          },
          "outcomes": {
            "title": "What happened to earlier leads (optional)",
            "type": "array",
            "description": "One line per lead you worked: <code>&lt;dedupeKey, itemId or profile URL&gt; = replied | meeting | won | lost</code>, e.g. <code>linkedin:maya-lindqvist = meeting</code>. Stored in the memory store; every run then reports the pipeline per phrase in <code>OUTPUT.outcomes</code> and the digest (\"3 meetings, 1 deal won from 41 leads; best phrase: recommend a CRM\"). Free.",
            "items": {
              "type": "string"
            }
          },
          "watchAuthors": {
            "title": "Watch these people (account intent / ABM)",
            "type": "array",
            "description": "LinkedIn profile URLs. Restricts the search to these authors — \"watch my 200 target accounts for buying signals\". Leave the phrases empty to get every buying-intent post they write.",
            "items": {
              "type": "string"
            }
          },
          "watchCompanies": {
            "title": "Watch people at these companies (account intent / ABM)",
            "type": "array",
            "description": "LinkedIn company URLs or names, passed to the search as author companies: paste your target-account list and get the buying-intent posts of their employees.",
            "items": {
              "type": "string"
            }
          },
          "authorKeywords": {
            "title": "Author keywords (optional)",
            "type": "string",
            "description": "A free, source-side filter on the author, e.g. <code>founder OR CEO</code>.",
            "default": ""
          },
          "sortBy": {
            "title": "Sort search results by",
            "enum": [
              "date",
              "relevance"
            ],
            "type": "string",
            "description": "<b>Date</b> finds the newest posts first (best for monitoring); <b>Relevance</b> uses LinkedIn's ranking.",
            "default": "date"
          },
          "fetchAuthorProfiles": {
            "title": "Fetch author profiles (+$0.002 per author)",
            "type": "boolean",
            "description": "Off: leads are qualified from the author card inside each post, at no extra cost. On: the source also fetches each author's profile (location, current company, followers), billed by the source at $0.002 per author on your account.",
            "default": false
          },
          "discoveryActorId": {
            "title": "Source Actor",
            "type": "string",
            "description": "<code>harvestapi/linkedin-post-search</code> by default. <code>harvestapi/linkedin-profile-posts</code> or <code>harvestapi/linkedin-company-posts</code> also work, with their input in <b>Source Actor input</b>.",
            "default": "harvestapi/linkedin-post-search"
          },
          "discoveryInput": {
            "title": "Source Actor input (override)",
            "type": "object",
            "description": "Merged last into the source Actor's input, for power users (e.g. <code>{\"contentType\": \"videos\"}</code>)."
          },
          "discoveryTimeoutSecs": {
            "title": "Source run timeout (seconds)",
            "minimum": 60,
            "maximum": 86400,
            "type": "integer",
            "description": "The source run is stopped after this long; the leads it already found are still processed.",
            "default": 1800
          },
          "datasetId": {
            "title": "Dataset",
            "type": "string",
            "description": "Only for <b>Existing dataset</b>. Pick the dataset so the Actor is granted read access to it."
          },
          "itemsList": {
            "title": "Post items",
            "type": "array",
            "description": "For <b>Free demo / paste post items</b>. Pre-filled with the 12 demo posts (never charged); replace them with your own JSON array of post items in the HarvestAPI shape (<code>id</code>, <code>linkedinUrl</code>, <code>content</code>, <code>author</code>, <code>postedAt</code>, <code>engagement</code>) to qualify those. Left empty in this mode, the run is the free demo on the sample posts (API / MCP: send <code>{\"sourceMode\": \"list\"}</code>)."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}