{
  "openapi": "3.0.1",
  "info": {
    "title": "Threads Scraper: Posts, Profiles, Replies & Search",
    "description": "Scrape Threads without login: full post history of any public profile, profile data with follower count, replies under any post, keyword and topic search. Date filters, monitoring of new posts. Export to JSON, CSV or Excel.",
    "version": "0.0",
    "x-build-id": "wLezT6lGW4hDrpjQx"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nice_dev~threads-posts-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nice_dev-threads-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~threads-posts-scraper/runs": {
      "post": {
        "operationId": "runs-sync-nice_dev-threads-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~threads-posts-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-nice_dev-threads-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": {
          "usernames": {
            "title": "Usernames",
            "maxItems": 1000,
            "uniqueItems": true,
            "type": "array",
            "description": "Threads usernames (`nasa`, `@nasa`) or profile URLs (`https://www.threads.com/@nasa`). One result per post of each account, newest first, down to the account's first post unless a cap or **Posted after** stops it earlier. Max 1 000 accounts.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeProfile": {
            "title": "Profile of each account",
            "type": "boolean",
            "description": "Also save one profile row per account: name, bio, bio links, follower count, verified badge, and the e-mails and phone numbers written in the bio (with **E-mails from bios** and **Phone numbers from bios**). Read from the same page as the first posts (no extra request).",
            "default": true
          },
          "includeReplies": {
            "title": "Replies written by each account",
            "type": "boolean",
            "description": "Also save the replies the account wrote under other posts (the profile's Replies tab). Threads shows about 20-30 of them to visitors without an account.",
            "default": false
          },
          "includeReposts": {
            "title": "Reposts by each account",
            "type": "boolean",
            "description": "Also save the posts the account reposted (the profile's Reposts tab). Threads shows only the last 1-4 reposts to visitors without an account.",
            "default": false
          },
          "postUrls": {
            "title": "Post URLs",
            "maxItems": 1000,
            "uniqueItems": true,
            "type": "array",
            "description": "Threads post URLs (`https://www.threads.com/@nasa/post/DdXJKzbkqPg`; threads.net links work too). One result for the post (with its view count, which Threads shows only on the post's own page), then its replies (see **Max replies per post**). Max 1 000 posts.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxReplies": {
            "title": "Max replies per post",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Replies to save under each post of **Post URLs** (and under every post found when **Replies of every post found** is on). 0 = the post only. Threads shows visitors about 80 % of the replies it counts: hidden, deleted and some nested replies are missing.",
            "default": 100
          },
          "repliesSort": {
            "title": "Replies order",
            "enum": [
              "top",
              "recent"
            ],
            "type": "string",
            "description": "Top = Threads' own ranking (most relevant first), Recent = newest first.",
            "default": "top"
          },
          "repliesForAllPosts": {
            "title": "Replies of every post found",
            "type": "boolean",
            "description": "Also collect the replies under every post found through **Usernames** and the searches, not only under **Post URLs**. One or more extra requests per post that has replies.",
            "default": false
          },
          "query": {
            "title": "Search keyword",
            "maxLength": 200,
            "type": "string",
            "description": "Free-text search, as typed in the Threads search box (e.g. `artificial intelligence`). With **Deep search**: up to several hundred posts for a common word, a few dozen for a rare one; without it, about 20-35."
          },
          "searchQueries": {
            "title": "More search keywords",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Several keywords in one run: one search per keyword. Added to **Search keyword**; posts found by several searches are saved once.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "hashtags": {
            "title": "Hashtags / topics",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Topic searches (`ai`, `#nfl`): the posts filed under that topic — about 20-30 per topic, more with **Deep search** (the topic page and the `#tag` searched as a keyword).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "deepSearch": {
            "title": "Deep search",
            "type": "boolean",
            "description": "Find more posts per keyword and topic: after the first search page, also Threads' Recent and topic views, a one-word keyword as a hashtag (`#nike`), the longer phrases found around your keyword in the results (`nike dunk`, `nike stock`) and the site in other languages — keeping only the posts that contain your keyword (text, quoted post, shared link, image description or topic; case and accents ignored), as Threads pads its results with loosely related posts. Off = the one search page Threads shows, every post of it (about 20-35).",
            "default": true
          },
          "maxSearchPagesPerQuery": {
            "title": "Max search pages per keyword",
            "minimum": 3,
            "maximum": 2000,
            "type": "integer",
            "description": "Upper bound on the Threads search pages read for one keyword or topic by **Deep search** (about 1 MB each). The search also stops by itself after several pages in a row without a new matching post, or once **Max posts per source** is reached.",
            "default": 300
          },
          "startUrls": {
            "title": "Threads URLs",
            "maxItems": 1000,
            "type": "array",
            "description": "Any mix of Threads profile URLs, post URLs and search URLs (`https://www.threads.com/search?q=apify`): each is handled like the matching field above. A text file of URLs (one per line, uploaded or linked) works too. Max 1 000 URLs.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum number of results (posts, replies and profiles) to save for the whole run, after deduplication and filters. 0 = no limit.",
            "default": 100
          },
          "maxItemsPerQuery": {
            "title": "Max posts per source",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Cap for EACH source, so that the first one cannot use up the whole **Max results** budget: an account's posts, its replies and its reposts are three sources (each with this cap); a post with its replies, a keyword and a topic are one each. The profile row is not counted. 0 = no per-source cap.",
            "default": 0
          },
          "includeAuthorProfiles": {
            "title": "Author follower counts",
            "type": "boolean",
            "description": "Fill the author follower count and bio of every post, by opening the profile page of each distinct author once (1 extra page per author; charged as an extra event, see Pricing).",
            "default": false
          },
          "includeBioEmails": {
            "title": "E-mails from bios",
            "type": "boolean",
            "description": "Pull the e-mail addresses written in each bio into their own fields: on profile rows (`emails`) and, with Author follower counts, on every post of the author (`authorEmails`). Charged once per account whose bio has at least one e-mail address (an extra event, see Pricing); a bio without any costs nothing. Unticked (default): those fields stay empty.",
            "default": false
          },
          "includeBioPhones": {
            "title": "Phone numbers from bios",
            "type": "boolean",
            "description": "Pull the phone numbers written in each bio into their own fields: on profile rows (`phones`) and, with Author follower counts, on every post of the author (`authorPhones`). Charged once per account whose bio has at least one phone number (an extra event, see Pricing); a bio without any costs nothing. Unticked (default): those fields stay empty.",
            "default": false
          },
          "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"
            }
          },
          "downloadMedia": {
            "title": "Download photos and videos",
            "type": "boolean",
            "description": "Keep a copy of the photos and videos of each post, and the audio track of its video, in the run's key-value store (`media-<post id>-<n>.<extension>`) and put the links in `storedMediaUrls` (same order as `mediaUrls`) and `storedAudioUrl`. The links Threads gives in `mediaUrls` are signed and expire: your copy does not. Charged once per file kept (an extra event, see Pricing); a file that could not be kept (too big, gone, out of time) costs nothing and shows as `null`. The files are kept for the posts the run delivers. For many videos, give the run 1 GB or more of memory (Run options → Memory). Unticked (default): nothing is downloaded and those fields stay empty.",
            "default": false
          },
          "maxMediaFileMb": {
            "title": "Largest file to keep",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "With **Download photos and videos**: a file larger than this is not kept and not charged (`null` in `storedMediaUrls`). A photo is a fraction of a MB, a video a few MB to a few tens. Above 50, give the run 1 GB or more of memory (Run options → Memory): with less, no file over 50 MB is kept.",
            "default": 50
          },
          "includeWebsiteContacts": {
            "title": "Contacts from the author's website",
            "type": "boolean",
            "description": "Open the website each author cites in its bio (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 `authorWebsite`, `authorWebsiteEmails`, `authorWebsitePhones` and `authorSocialLinks`. Needs **Author follower counts** (the links come from the bio): 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; separate from **E-mails from bios** and **Phone numbers from bios**, which read the bio itself); 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
          },
          "includeKeywordStats": {
            "title": "Keyword statistics",
            "type": "boolean",
            "description": "Add a summary of each keyword and topic you search 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, quotes and views, median engagement rate, share of posts with media, share of verified authors, languages when Threads gives them, 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 posts found by a keyword or topic search are summarised, one summary per search: the posts of an account, of a post URL and the replies under a post are not (a post that two searches both show counts under the first). Charged once per search given (an extra event, see Pricing); a search needs at least 5 posts in the run and at most 50 are given, the biggest first. With **Only new posts**, only the posts delivered in this run are counted. Unticked (default): nothing is added.",
            "default": false
          },
          "postedAfter": {
            "title": "Posted after",
            "type": "string",
            "description": "Only posts published on or after this date: `2026-09-01` (a day in UTC, while Threads shows your own time zone), or a period before now such as `7 days`, `2 weeks`, `1 month` (API: `24 hours` and full ISO date-times work too). On an account, the history stops as soon as it reaches older posts (pinned posts excepted)."
          },
          "postedBefore": {
            "title": "Posted before",
            "type": "string",
            "description": "Only posts published on or before this date (the whole UTC day is included), or older than a period such as `30 days`."
          },
          "minLikes": {
            "title": "Min likes",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Only posts with at least this many likes. 0 = no minimum. A post whose like count is unknown (some accounts hide it) is dropped.",
            "default": 0
          },
          "minReplies": {
            "title": "Min replies",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Only posts with at least this many replies. 0 = no minimum. A post whose reply count is unknown is dropped.",
            "default": 0
          },
          "minReposts": {
            "title": "Min reposts",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Only posts reposted at least this many times (quotes not counted: the number under Threads' repost button adds them). 0 = no minimum. A post whose repost count is unknown is dropped.",
            "default": 0
          },
          "mediaOnly": {
            "title": "Only posts with media",
            "type": "boolean",
            "description": "Only posts with at least one image or video.",
            "default": false
          },
          "verifiedOnly": {
            "title": "Only verified authors",
            "type": "boolean",
            "description": "Only posts whose author has the verified badge. A post whose author's badge is unknown is dropped.",
            "default": false
          },
          "languages": {
            "title": "Languages",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Only posts written in one of these languages, as two-letter ISO 639-1 codes: `en`, `fr`, `ja`, `pt`… (case ignored; `pt-BR` reads as `pt`). It reads the language column of the output, given by Threads or detected from the text. A post whose language is unknown (a text too short to tell, nothing from Threads) is dropped while this filter is on. Profiles are never filtered.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minAuthorFollowers": {
            "title": "Min author followers",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Only posts whose author has at least this many followers. 0 = no minimum. Needs **Author follower counts**: the followers are only known once the author's profile page is read. Unticked, this filter is ignored (a warning in the log says so): no post is dropped and no check is charged for it. Ticked, the profile page of each author is read, and charged as an author profile, once per author, for every post the other filters keep — even when the post is then dropped for its author's followers. A post whose author's page cannot be read is dropped.",
            "default": 0
          },
          "includeAuthors": {
            "title": "Only these authors",
            "maxItems": 1000,
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only the posts written by these accounts: usernames such as `nasa` or `@nasa` (case ignored; a profile URL works too). Useful with keyword and topic searches, to keep the posts of a list of accounts.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeAuthors": {
            "title": "Exclude authors",
            "maxItems": 1000,
            "uniqueItems": true,
            "type": "array",
            "description": "Drop the posts written by these accounts: usernames such as `spambot` or `@spambot` (case ignored; a profile URL works too).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeKeywords": {
            "title": "Must contain one of these words",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only the posts whose text, image descriptions, link card, hashtags or topic contain one of these words (case and accents ignored; a word is also found inside a longer word: \"art\" finds \"party\"). With a keyword search, type the same words to drop the results Threads returns without them.",
            "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 contain one of these words (case and accents ignored; a word is also found inside a longer word: \"art\" finds \"party\").",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyNew": {
            "title": "Only new posts",
            "type": "boolean",
            "description": "Skip the posts and replies that a previous run (same **Memory key**) already delivered: they are not saved and not charged. On an account, the history stops after 20 posts in a row already delivered (pinned posts excepted; fewer under a small **Max results** or **Max posts per source**): older posts that a cap left out of a previous run are not fetched later. 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 posts**. Give each schedule / task its own key (e.g. `brand-watch`) so that they do not share their memory. 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 post again. Untick it afterwards.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy or your own proxies. Keep the default (Apify Proxy): it is included in the price, and the Actor switches to another IP by itself when Threads refuses one. 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": 4
          },
          "maxRequestsPerMinute": {
            "title": "Max requests per minute",
            "minimum": 10,
            "maximum": 2000,
            "type": "integer",
            "description": "Global request rate. Threads limits the number of requests per IP, not their speed: lowering this does not help.",
            "default": 120
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Retries per page before it is marked as failed. Requests for posts, replies and search results are always retried at least 10 times, each time on another IP, whatever this says; above 10, this setting decides.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}