{
  "openapi": "3.0.1",
  "info": {
    "title": "Bluesky Scraper — Posts, Profiles, Followers & Trends",
    "description": "Scrape Bluesky posts by keyword with no 100-post cap, plus account posts, profiles, followers, likes, reply threads, quotes, feeds, lists, starter packs and trending topics. No login. Export JSON, CSV, Excel.",
    "version": "0.0",
    "x-build-id": "2ButqptjAK0iaMl4S"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nice_dev~bluesky-posts-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nice_dev-bluesky-posts-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/nice_dev~bluesky-posts-scraper/runs": {
      "post": {
        "operationId": "runs-sync-nice_dev-bluesky-posts-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/nice_dev~bluesky-posts-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-nice_dev-bluesky-posts-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "title": "Search keyword",
            "maxLength": 200,
            "type": "string",
            "description": "Keyword, hashtag or phrase, exactly as typed in the Bluesky search box (e.g. `climate`, `#ai`, `\"open source\"`)."
          },
          "searchQueries": {
            "title": "More search keywords",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Several searches in one run, added to **Search keyword**. Posts found by several searches are saved once.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "latest",
              "top"
            ],
            "type": "string",
            "description": "**Latest** goes back in time with no 100-post cap (as deep as Max results). **Top** = Bluesky's most engaged posts, 100 per search at most (Bluesky does not page top results).",
            "default": "latest"
          },
          "searchEngine": {
            "title": "Search source",
            "enum": [
              "auto",
              "search",
              "stream"
            ],
            "type": "string",
            "description": "**Auto** = Bluesky search; if Bluesky refuses the search for good, falls back to the network stream. **Network stream** = read EVERY post published on Bluesky in the last **Stream hours** (1-36) and keep those whose text contains the keyword: full coverage of recent posts, no ranking, text match only (no hashtag-only or image-text match).",
            "default": "auto"
          },
          "streamHours": {
            "title": "Stream hours",
            "minimum": 1,
            "maximum": 36,
            "type": "integer",
            "description": "With **Network stream**: how many hours back to read (1-36). 24 hours ≈ 3 million posts read, charged per hour read.",
            "default": 6
          },
          "handles": {
            "title": "Accounts",
            "maxItems": 1000,
            "uniqueItems": true,
            "type": "array",
            "description": "Accounts to scrape. What is collected for each one is set in **Account data**.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "accountData": {
            "title": "Account data",
            "type": "array",
            "description": "For each account: its profile, its posts, its followers, the accounts it follows, the posts it liked, the posts it reposted, the posts of the feeds it created, the members of the starter packs it created (each pack with its own card row), the lists it made (one card row each: name, purpose, members, last update). Followers / follows / likes can be long: they share **Max per source**; each feed and each starter pack is a source of its own with its own cap.",
            "items": {
              "type": "string",
              "enum": [
                "profile",
                "posts",
                "followers",
                "follows",
                "likes",
                "reposts",
                "feeds",
                "starter-packs",
                "lists"
              ],
              "enumTitles": [
                "Profile",
                "Posts",
                "Followers",
                "Follows (accounts it follows)",
                "Liked posts",
                "Reposted posts",
                "Posts of the feeds it created",
                "Members of the starter packs it created",
                "Lists it made (cards)"
              ]
            },
            "default": [
              "profile",
              "posts"
            ]
          },
          "authorFeedFilter": {
            "title": "Account posts",
            "enum": [
              "posts_with_replies",
              "posts_no_replies",
              "posts_with_media",
              "posts_with_video",
              "posts_and_author_threads"
            ],
            "type": "string",
            "description": "Which posts of the account: all (with its replies), without replies, only posts with media, only with video, or posts plus the account's own threads.",
            "default": "posts_with_replies"
          },
          "includeReposts": {
            "title": "Include reposts",
            "type": "boolean",
            "description": "Keep the posts the account reposted in its timeline (marked `isRepost`, original author kept).",
            "default": true
          },
          "profileSearchQueries": {
            "title": "Search accounts",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Find accounts by name or bio keyword (one profile per result).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeLatestPost": {
            "title": "Latest post of each account",
            "type": "boolean",
            "description": "Add the date, text and URL of the account's latest own post (not a repost, not a reply) to its profile row, in `latestPostAt`, `latestPostText` and `latestPostUrl`. One extra request per account, included in the price of the row. Only the profile rows of **Accounts** (Profile) and **Search accounts** get it, not the followers or follows of an account. Unticked (default): those fields stay empty.",
            "default": false
          },
          "includeAccountStats": {
            "title": "Statistics of each account",
            "type": "boolean",
            "description": "Add posting rate and engagement to the profile row of each account, computed on its last 100 own posts (not reposts, not replies): `postsSampled`, `postsPerWeek`, `avgLikes`, `avgReplies`, `avgReposts`, `medianEngagement`, `medianLikes`, `medianReplies`, `medianReposts`, `topPostLikes` and `topPostUrl`. One extra request per account, included in the price of the row. Only the profile rows of **Accounts** (Profile) and **Search accounts** get it. Unticked (default): those fields stay empty.",
            "default": false
          },
          "startUrls": {
            "title": "Bluesky URLs",
            "maxItems": 1000,
            "type": "array",
            "description": "Any bsky.app URL (or at:// URI): a post (plus **Post data**), a profile (like **Accounts**), a followers or follows page, a search or hashtag page, a custom feed, a list (its posts and members), a starter pack (its members). Example: `https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l`. Max 1 000 URLs.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "postData": {
            "title": "Post data",
            "type": "array",
            "description": "For each post URL: its reply thread, the posts that quote it, the accounts that liked it, the accounts that reposted it.",
            "items": {
              "type": "string",
              "enum": [
                "replies",
                "quotes",
                "likers",
                "reposters"
              ],
              "enumTitles": [
                "Replies (thread)",
                "Quotes",
                "Likers",
                "Reposters"
              ]
            },
            "default": [
              "replies",
              "quotes"
            ]
          },
          "threadDepth": {
            "title": "Reply depth",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Levels of replies read under each post (1 = direct replies only). Parent posts above a reply are always included.",
            "default": 10
          },
          "repliesPerPost": {
            "title": "Replies per post found",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Also read the replies under each post found by a search, an account's timeline, a feed or a list: up to this many per post, each reply is a result of its own (`source` = `post-replies`, `relatedTo` = the post), counted in **Max results** and charged like any result: a post that has replies keeps room for them in **Max results** (up to this number), and the room its replies do not use goes back to the next posts. Reposts and posts nobody answered open nothing. 0 (default) = off. The depth of the replies follows **Reply depth**.",
            "default": 0
          },
          "feedPresets": {
            "title": "Popular feeds",
            "type": "array",
            "description": "Public Bluesky feeds to scrape (their current posts).",
            "items": {
              "type": "string",
              "enum": [
                "discover",
                "hot-classic",
                "news",
                "science",
                "bsky-team"
              ],
              "enumTitles": [
                "Discover (Bluesky)",
                "What's Hot Classic",
                "Verified News",
                "Science",
                "Bluesky Team"
              ]
            },
            "default": []
          },
          "includeTrends": {
            "title": "Trending topics",
            "type": "boolean",
            "description": "Save the current Bluesky trending topics (up to 25: title, category, post count, start time, top accounts).",
            "default": false
          },
          "maxPostsPerTrend": {
            "title": "Posts per trending topic",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "With **Trending topics**: also save up to N posts of each topic (read from the topic's own feed). 0 = topics only.",
            "default": 50
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum number of results (posts, profiles, topics) saved for the whole run, after deduplication and filters. 0 = no limit.",
            "default": 100
          },
          "maxItemsPerQuery": {
            "title": "Max per source",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Cap for EACH source (a search, an account's posts, an account's followers, a post's replies, a feed…), so the first source cannot use up **Max results**. 0 = no per-source cap.",
            "default": 0
          },
          "includeAuthorProfiles": {
            "title": "Author follower counts",
            "type": "boolean",
            "description": "Add the author's followers, follows, posts count, bio (with the e-mail addresses written in it), website, banner and profile indexing date to each post, and the counts and website to each follower, follow, liker or list member (1 extra request per 25 new accounts). Charged per row it completes as **Author profile**, on top of the row (see the pricing). Off by default = the rows alone.",
            "default": false
          },
          "postedAfter": {
            "title": "Posted after",
            "type": "string",
            "description": "Only posts created on or after this date: `2026-09-01`, or a period before now such as `7 days`, `24 hours`, `2 weeks`. Reads the post's creation date. Profiles and topics are not filtered."
          },
          "postedBefore": {
            "title": "Posted before",
            "type": "string",
            "description": "Only posts created on or before this date (the whole day is included), or older than a period such as `30 days`."
          },
          "language": {
            "title": "Language",
            "pattern": "^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})?$",
            "maxLength": 12,
            "type": "string",
            "description": "Two-letter language code (`en`, `fr`, `ja`…) as declared by the author. Posts without a declared language are dropped."
          },
          "author": {
            "title": "From account (search)",
            "maxLength": 253,
            "type": "string",
            "description": "Search only the posts of this account (handle or DID)."
          },
          "mentions": {
            "title": "Mentioning account (search)",
            "maxLength": 253,
            "type": "string",
            "description": "Search only posts that mention this account (handle or DID)."
          },
          "domain": {
            "title": "Linking to domain (search)",
            "maxLength": 253,
            "type": "string",
            "description": "Search only posts that link to this website (e.g. `nytimes.com`)."
          },
          "exactUrl": {
            "title": "Linking to URL (search)",
            "maxLength": 2000,
            "type": "string",
            "description": "Search only posts that link to this exact page URL."
          },
          "hashtags": {
            "title": "Hashtags (search)",
            "maxItems": 20,
            "uniqueItems": true,
            "type": "array",
            "description": "Search only posts carrying these hashtags (written with or without #; several = all of them).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeReplies": {
            "title": "Include replies",
            "type": "boolean",
            "description": "Keep posts that are replies to another post (search, feeds, account posts). Untick for top-level posts only.",
            "default": true
          },
          "minLikes": {
            "title": "Min likes",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Only posts with at least this many likes.",
            "default": 0
          },
          "minReposts": {
            "title": "Min reposts",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Only posts with at least this many reposts.",
            "default": 0
          },
          "minReplies": {
            "title": "Min replies",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Only posts with at least this many replies.",
            "default": 0
          },
          "minEngagement": {
            "title": "Min total engagement",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Only posts whose likes + reposts + replies + quotes reach this number.",
            "default": 0
          },
          "minFollowers": {
            "title": "Min author followers",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Only posts whose author has at least this many followers, and only profiles with at least this many followers (for posts, it reads the author counts by itself even when Author follower counts is off; those counts are not charged as **Author profile**).",
            "default": 0
          },
          "mediaOnly": {
            "title": "Only posts with media",
            "type": "boolean",
            "description": "Only posts with images or a video.",
            "default": false
          },
          "withLinksOnly": {
            "title": "Only posts with links",
            "type": "boolean",
            "description": "Only posts that contain a link or a link card.",
            "default": false
          },
          "includeKeywords": {
            "title": "Only posts containing",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only the posts whose text, image descriptions or link card contains at least one of these words (case and accents ignored); the others are dropped. Like the other filters, each post checked is charged a small filter fee, kept or not (see Pricing). Empty (default): no such filter.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Drop the posts whose text, image descriptions or link card contains one of these words (case and accents ignored).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeSentiment": {
            "title": "AI sentiment label",
            "type": "boolean",
            "description": "Add an AI sentiment label to the text of each post and reply: positive, neutral or negative, with a score from 0 to 1, in two extra fields. Charged once per post or reply that gets a label (an extra event, see Pricing); a post without text costs nothing. Requires 2 GB of memory (Run options → Memory): with less, the option is skipped, the log says so and nothing is charged. Unticked (default): those fields stay empty.",
            "default": false
          },
          "aiLabels": {
            "title": "AI labels",
            "maxItems": 20,
            "type": "array",
            "description": "Your own labels, judged on the text of each post and reply: a name such as `pricing`, or a name and a sentence that is true when the label applies, after a colon, such as `competitor: The author compares tools`. Up to 20. Each post and reply gets the labels that apply, with a score from 0 to 1, in `aiLabelMatches`. Charged per post and per label judged, whether it applies or not (an extra event, see Pricing); a post without text costs nothing. Requires 2 GB of memory (Run options → Memory): with less, the option is skipped, the log says so and nothing is charged. Empty (default): off.",
            "items": {
              "type": "string"
            }
          },
          "includeKeywordStats": {
            "title": "Keyword statistics",
            "type": "boolean",
            "description": "Add a summary of each searched keyword to the run's key-value store, in the `KEYWORD_STATS` record (never in the dataset): number of posts and replies, first and last date, posts per day, average and median likes, replies, reposts and quotes, median engagement rate, share of posts with media, share of verified authors, languages, top 10 hashtags, top 10 authors, top 5 posts by likes, and the share of positive, neutral and negative posts when **AI sentiment label** is on. Only the keywords of **Search keyword** / **More search keywords** (and search or hashtag URLs, or the network stream) count: a run with no keyword gives nothing and charges nothing. A post found by several keywords counts under the first one only. Charged once per keyword given (an extra event, see Pricing); a keyword needs at least 5 posts in the run and at most 50 keywords are given, the biggest first. With **Only new results**, only the posts delivered in this run are counted. Unticked (default): nothing is added.",
            "default": false
          },
          "includeWebsiteContacts": {
            "title": "Contacts from the author's website",
            "type": "boolean",
            "description": "Open the website of each author (the website of its profile, the links of its bio, or its handle when that is a domain of its own; its home page and up to two of its contact, about or legal pages; one page for a link-in-bio page such as Linktree) and add the e-mail addresses, phone numbers and social links found there, in `authorWebsiteRead`, `authorWebsiteEmails`, `authorWebsitePhones` and `authorSocialLinks`. Needs **Author follower counts** (the links come from the profile): without it the option does nothing. Charged once per author for whom at least one e-mail address or phone number is found (an extra event, see Pricing); a website that cannot be opened or gives nothing costs nothing. Links to Instagram, Facebook, YouTube, TikTok, X, LinkedIn, WhatsApp and Telegram are never opened, they are listed as they are. Unticked (default): those fields stay empty.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new results",
            "type": "boolean",
            "description": "Skip the posts and profiles that a previous run (same **Memory key**) already delivered: they are not saved and not charged. First run = everything is new.",
            "default": false
          },
          "stateKey": {
            "title": "Memory key",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$",
            "maxLength": 64,
            "type": "string",
            "description": "Name of the memory used by **Only new results**. Give each schedule / task its own key (e.g. `brand-watch`). Letters, digits, `-` and `_`.",
            "default": "default"
          },
          "resetState": {
            "title": "Reset the memory",
            "type": "boolean",
            "description": "Forget everything remembered under this **Memory key** before the run: this run returns (and charges) every result again. Untick it afterwards.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Keep the default Apify proxy: it is included in the price. The residential Apify proxy is not available in this Actor.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of requests processed in parallel.",
            "default": 5
          },
          "maxRequestsPerMinute": {
            "title": "Max requests per minute",
            "minimum": 10,
            "maximum": 1200,
            "type": "integer",
            "description": "Global request rate. Bluesky allows a handful of parallel requests; lower it if the log shows HTTP 429.",
            "default": 300
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Retries per request before it is marked as failed (search pages get extra retries, whatever this setting).",
            "default": 5
          },
          "debugLog": {
            "title": "Debug log",
            "type": "boolean",
            "description": "Include debug messages in the run log.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}