List available mobile-proxy listings

This endpoint requires authentication. Include your API key in the X-API-KEY header with every request.

GET/client/v1/mobile-proxies/listings

Cursor-paginated catalog of the listings that can be bought right now. Each listing is the offer for one device: its prices and display specs plus what a client can do with the device (capabilities). GET /client/v1/mobile-proxies/locations lists the countryIsos, locodes and carrierIds that currently have listings, and GET /client/v1/mobile-proxies/capabilities the codes and values the capabilities filter takes. An empty limits list means unlimited data. A given plan always filters (listings without a price for it are left out) and is required by maxPriceMinor and by the price sorts. To fetch the next page pass the previous response's nextCursor with every other query parameter (sortBy, sortDirection and all filters) unchanged; a cursor replayed with different parameters is rejected. nextCursor is null once the catalog is exhausted. Each request scans a bounded part of the catalog, so with selective filters a page can hold fewer than limit items, even none, while nextCursor is set; keep following it.

Query Parameters

NameTypeRequiredDescription
cursor
string
OptionalOpaque cursor taken verbatim from a previous response's nextCursor.
limit
number
OptionalPage size, 1 to 100; defaults to 20.(default: 20)
countryIsos
string
OptionalISO 3166-1 alpha-2 country codes, comma-separated.
locodes
string
OptionalCity UN/LOCODEs (country code followed by the location part), comma-separated; they may span countries.
carriers
string
OptionalExact carrier names, comma-separated.
carrierIds
string
OptionalAOSP carrier ids of the device's SIM, comma-separated, as GET /client/v1/mobile-proxies/locations lists them.
networkGeneration
"4G" | "5G"
OptionalOnly listings whose device is on this mobile network generation.
deviceKind
"phone" | "modem"
OptionalOnly listings whose device is of this kind.
capabilities
string
OptionalCapabilities the device must offer, comma-separated: a code (reboot) or a code with a value the device must list (os_fingerprint:windows); every one must match. GET /client/v1/mobile-proxies/capabilities lists the codes and values, and one outside that catalog matches nothing.
plan
"hourly" | "daily" | "weekly" | "monthly"
OptionalOnly listings priced for this plan. Required by maxPriceMinor and by the price sorts.
maxPriceMinor
number
OptionalUpper bound on the plan's price, in the currency's minor unit (cents for USD).
sortBy
"listedAt" | "price"
OptionalField to sort by: listedAt (when the device was first listed) or price (the chosen plan's lowest price).(default: listedAt)
sortDirection
"asc" | "desc"
OptionalSort direction: asc = ascending, desc = descending (default).(default: desc)
Example Request
curl -G "https://api.proxied.com/client/v1/mobile-proxies/listings" \
  -H "X-API-KEY: <api-key>" \
  --data-urlencode "limit=20" \
  --data-urlencode "sortBy=listedAt" \
  --data-urlencode "sortDirection=desc"

Response Body

  • success
    boolean

    Always true on a successful response.

  • data
    object

    One page of the list; pass nextCursor as cursor to fetch the next.

    • items
      object[]

      This page's items, in the requested order. A listing as seen by a client: the offer for one device.

      • listingId
        string

        The listing's id, as the get and purchase routes take it.

      • listedAt
        string

        When the device was first listed; it keeps this date when it returns to sale.

      • device
        object

        The device behind a listing or subscription: where it is, the line it is on, what it typically delivers, what the client can do with it and the caps on its use. The same shape on both, so one card renders either.

        • kind
          "phone" | "modem"

          What the device is, as the listings deviceKind filter takes it.

        • location
          object

          Where the device is: its country and city.

          • countryIso
            string

            ISO 3166-1 alpha-2 code, as the listings countryIsos filter takes it; dictionaries.countries names it.

          • locode
            string

            The city's UN/LOCODE (country code followed by the location part), as the listings locodes filter takes it; dictionaries.cities names it.

        • carrier
          object

          The mobile carrier whose line the device is on.

          • name
            string

            The carrier the device is sold under, as the listings carriers filter matches it.

          • carrierId
            string | null

            The AOSP carrier id the device's SIM reports, as the listings carrierIds filter matches it; GET /client/v1/mobile-proxies/locations names it. Null when the device has not reported one.

        • network
          object

          The mobile network behind the device.

          • generation
            "4G" | "5G"

            The mobile network generation the device is on, as the listings networkGeneration filter takes it.

          • ipVersions
            ("ipv4" | "ipv6")[]

            The IP versions the device's mobile network provides: ipv4 always, ipv6 once the device has reached us over it. A fact about the network, distinct from the ip_mode capability, which only offers modes the network can serve.

        • speed
          object

          The speed the device typically delivers, as declared by its hoster; a range is null when none was declared. A cap on speed, where one applies, is a limits entry instead.

          • unit
            string

            The unit of both ranges.

          • download
            object | null

            A declared speed range, in speed.unit.

            • min
              number

              The low end of the range, in speed.unit.

            • max
              number

              The high end of the range, in speed.unit.

          • upload
            object | null

            A declared speed range, in speed.unit.

            • min
              number

              The low end of the range, in speed.unit.

            • max
              number

              The high end of the range, in speed.unit.

        • capabilities
          object[]

          What the client can do with the device, in a fixed order. GET /client/v1/mobile-proxies/capabilities lists every code and value that can appear. Empty while the device is being set up, and on a subscription whenever endpoint is null. One thing the client can do with the device. A bare code is a feature that is simply available, such as rotation or reboot; a code with a schema is a value the client can set. Codes, values, schema types and setter types are stable and open: new ones may appear at any time and fields are only ever added, so render the ones you do not know from the dictionaries rather than rejecting them.

          • code
            string

            Stable code; dictionaries.capabilities names and describes it.

          • schema
            object
            Optional

            A JSON Schema fragment for the value a client can set: its type, the values it may take (enum) and the one in effect when the client sets none (default). Only type string with an enum exists today; other types and keywords may be added, so treat a schema you cannot render as display only.

            • type
              string

              The JSON Schema type of the value; only string exists today.

            • enum
              string[]
              Optional

              The values this device offers, in a fixed order; dictionaries.capabilities[code].values names them.

            • default
              string | number

              The value in effect when the client sets none.

          • setters
            object[]
            Optional

            Present with schema: the ways to set the value; empty when the value is shown but cannot be changed. One way to set the value.

            • type
              string

              How the value is set. username: append template to the proxy username with {value} filled in; one suffix per capability, in any order, and the default value's suffix is accepted too. Other kinds may be added; ignore the ones you do not know.

            • template
              string
              Optional

              On a username setter: the suffix to append to the proxy username, with {value} replaced by the chosen value.

        • limits
          object[]

          The caps on the device's use, in a fixed order; a code that is absent is unlimited, so an empty list means unlimited data. One cap on the device's use. Codes are stable and open: new ones may appear at any time and fields are only ever added, so render the ones you do not know from the dictionaries rather than rejecting them.

          • code
            string

            Stable code; dictionaries.limits names and describes it.

          • value
            number

            The cap, in unit.

          • unit
            string

            The unit of value, such as MB.

      • offer
        object

        What the client pays and accepts when buying the listing.

        • prices
          object[]

          The prices the listing can be bought at, ordered by plan from hourly to monthly, then cheapest first; a plan can have several. One way to buy the listing: a plan and its price.

          • priceId
            string

            The price's id; pass it as priceId to buy the listing at this price.

          • plan
            "hourly" | "daily" | "weekly" | "monthly"

            The period one payment buys; monthly buys a recurring subscription that renews from the balance, the others a one-time one.

          • amountMinor
            number

            Price in the currency's minor unit (cents for USD).

          • currency
            string

            ISO 4217 code of the currency the amounts beside it are in.

        • isLoggingEnabled
          boolean

          Whether the hoster logs traffic through the device.

        • notice
          string | null

          A note from the hoster to buyers; null when there is none.

    • limit
      number

      The page size applied: the limit passed, or 20 when none was.

    • hasMore
      boolean

      True when more results may follow, which is exactly when nextCursor is set; a page can hold fewer than limit items while it is.

    • nextCursor
      string | null

      Opaque cursor for the next page; null when there are no more results.

  • dictionaries
    object

    One entry per code in this response, however many items share it. A country or city code missing from the reference lists has no entry, so fall back to the code itself.

    • countries
      map

      Countries keyed by ISO 3166-1 alpha-2 code (device.location.countryIso), named in every language. What one code in the response stands for: its name, per language.

      • name
        object

        A text per language, keyed by language code; en is always present, another language only when the text exists in it.

        • en
          string

          English; always present.

        • de
          string
          Optional

          German.

        • es
          string
          Optional

          Spanish.

        • hi
          string
          Optional

          Hindi.

        • jp
          string
          Optional

          Japanese.

        • nl
          string
          Optional

          Dutch.

        • pl
          string
          Optional

          Polish.

        • ru
          string
          Optional

          Russian.

        • zh
          string
          Optional

          Simplified Chinese.

    • cities
      map

      Cities keyed by UN/LOCODE (device.location.locode). A city's name always has en, de, es, nl and pl (keeping its English name where a language has none of its own), and hi, jp, ru and zh only when it has a name in that script. What one code in the response stands for: its name, per language.

      • name
        object

        A text per language, keyed by language code; en is always present, another language only when the text exists in it.

        • en
          string

          English; always present.

        • de
          string
          Optional

          German.

        • es
          string
          Optional

          Spanish.

        • hi
          string
          Optional

          Hindi.

        • jp
          string
          Optional

          Japanese.

        • nl
          string
          Optional

          Dutch.

        • pl
          string
          Optional

          Polish.

        • ru
          string
          Optional

          Russian.

        • zh
          string
          Optional

          Simplified Chinese.

    • capabilities
      map

      Capabilities keyed by code (device.capabilities[].code on listings and subscriptions), each named and described in every language, with the names of the values some item lists for it. Codes and values are stable and new ones may appear at any time, so render any of them from here; empty when no item in the response carries capabilities. What one capability code stands for: a short name and a one-sentence explanation, each in every language, and the names of its values when the client can set one.

      • name
        object

        A text per language, keyed by language code; en is always present, another language only when the text exists in it.

        • en
          string

          English; always present.

        • de
          string
          Optional

          German.

        • es
          string
          Optional

          Spanish.

        • hi
          string
          Optional

          Hindi.

        • jp
          string
          Optional

          Japanese.

        • nl
          string
          Optional

          Dutch.

        • pl
          string
          Optional

          Polish.

        • ru
          string
          Optional

          Russian.

        • zh
          string
          Optional

          Simplified Chinese.

      • description
        object

        A text per language, keyed by language code; en is always present, another language only when the text exists in it.

        • en
          string

          English; always present.

        • de
          string
          Optional

          German.

        • es
          string
          Optional

          Spanish.

        • hi
          string
          Optional

          Hindi.

        • jp
          string
          Optional

          Japanese.

        • nl
          string
          Optional

          Dutch.

        • pl
          string
          Optional

          Polish.

        • ru
          string
          Optional

          Russian.

        • zh
          string
          Optional

          Simplified Chinese.

      • values
        map
        Optional

        For a value the client can set: the name of each value the response lists for it (device.capabilities[].schema.enum), keyed by value; a brand such as an operating system keeps its name in every language. What one code in the response stands for: its name, per language.

        • name
          object

          A text per language, keyed by language code; en is always present, another language only when the text exists in it.

          • en
            string

            English; always present.

          • de
            string
            Optional

            German.

          • es
            string
            Optional

            Spanish.

          • hi
            string
            Optional

            Hindi.

          • jp
            string
            Optional

            Japanese.

          • nl
            string
            Optional

            Dutch.

          • pl
            string
            Optional

            Polish.

          • ru
            string
            Optional

            Russian.

          • zh
            string
            Optional

            Simplified Chinese.

    • limits
      map

      Limits keyed by code (device.limits[].code on listings and subscriptions), each named and described in every language. Codes are stable and new ones may appear at any time, so render any code from here; empty when no item in the response carries limits. What one limit code stands for: a short name and a one-sentence explanation, each in every language.

      • name
        object

        A text per language, keyed by language code; en is always present, another language only when the text exists in it.

        • en
          string

          English; always present.

        • de
          string
          Optional

          German.

        • es
          string
          Optional

          Spanish.

        • hi
          string
          Optional

          Hindi.

        • jp
          string
          Optional

          Japanese.

        • nl
          string
          Optional

          Dutch.

        • pl
          string
          Optional

          Polish.

        • ru
          string
          Optional

          Russian.

        • zh
          string
          Optional

          Simplified Chinese.

      • description
        object

        A text per language, keyed by language code; en is always present, another language only when the text exists in it.

        • en
          string

          English; always present.

        • de
          string
          Optional

          German.

        • es
          string
          Optional

          Spanish.

        • hi
          string
          Optional

          Hindi.

        • jp
          string
          Optional

          Japanese.

        • nl
          string
          Optional

          Dutch.

        • pl
          string
          Optional

          Polish.

        • ru
          string
          Optional

          Russian.

        • zh
          string
          Optional

          Simplified Chinese.

200 Response
{
  "success": true,
  "data": {
    "items": [
      {
        "listingId": "665f1c2e8b3f4a5d6e7f8091",
        "listedAt": "2026-10-01T09:12:00.000Z",
        "device": {
          "kind": "phone",
          "location": {
            "countryIso": "DE",
            "locode": "DEBER"
          },
          "carrier": {
            "name": "Telekom",
            "carrierId": "3"
          },
          "network": {
            "generation": "5G",
            "ipVersions": [
              "ipv4",
              "ipv6"
            ]
          },
          "speed": {
            "unit": "Mbps",
            "download": {
              "min": 55,
              "max": 110
            },
            "upload": {
              "min": 55,
              "max": 110
            }
          },
          "capabilities": [
            {
              "code": "os_fingerprint",
              "schema": {
                "type": "string",
                "enum": [
                  "android",
                  "ios",
                  "macos",
                  "ubuntu",
                  "windows"
                ],
                "default": "android"
              },
              "setters": [
                {
                  "type": "username",
                  "template": "_os_{value}"
                }
              ]
            }
          ],
          "limits": [
            {
              "code": "data_per_day",
              "value": 5000,
              "unit": "MB"
            }
          ]
        },
        "offer": {
          "prices": [
            {
              "priceId": "665f1c2e8b3f4a5d6e7f8091",
              "plan": "monthly",
              "amountMinor": 50,
              "currency": "USD"
            }
          ],
          "isLoggingEnabled": false,
          "notice": "Please keep rotations to one a minute"
        }
      }
    ],
    "limit": 20,
    "hasMore": true,
    "nextCursor": "eyJzIjoibGlzdGVkQXQiLCJkIjoiZGVzYyIsImsiOjE3NjAzNTIwMDAwMDAsImkiOiI2NjVmMWMyZThiM2Y0YTVkNmU3ZjgwOTEifQ"
  },
  "dictionaries": {
    "countries": {
      "DE": {
        "name": {
          "en": "Germany",
          "de": "Deutschland",
          "es": "Alemania",
          "hi": "जर्मनी",
          "jp": "ドイツ",
          "nl": "Duitsland",
          "pl": "Niemcy",
          "ru": "Германия",
          "zh": "德国"
        }
      }
    },
    "cities": {
      "DEBER": {
        "name": {
          "en": "Berlin",
          "de": "Berlin",
          "es": "Berlín",
          "hi": "बर्लिन",
          "jp": "ベルリン",
          "nl": "Berlijn",
          "pl": "Berlin",
          "ru": "Берлин",
          "zh": "柏林"
        }
      }
    },
    "capabilities": {
      "os_fingerprint": {
        "name": {
          "en": "OS fingerprint",
          "de": "OS-Fingerabdruck",
          "es": "Huella de SO",
          "hi": "ओएस फ़िंगरप्रिंट",
          "jp": "OSフィンガープリント",
          "nl": "OS-vingerafdruk",
          "pl": "Odcisk systemu operacyjnego",
          "ru": "Отпечаток ОС",
          "zh": "操作系统指纹"
        },
        "description": {
          "en": "Make the proxy's outgoing traffic look like it comes from the chosen operating system, as passive OS fingerprinting (p0f) reads it",
          "de": "Den ausgehenden Datenverkehr des Proxys wie den des gewählten Betriebssystems aussehen lassen, wie ihn passives OS-Fingerprinting (p0f) liest",
          "es": "Hacer que el tráfico saliente del proxy parezca provenir del sistema operativo elegido, tal como lo lee la identificación pasiva de SO (p0f)",
          "hi": "प्रॉक्सी के आउटगोइंग ट्रैफ़िक को चुने हुए ऑपरेटिंग सिस्टम से आता हुआ दिखाएँ, जैसा पैसिव ओएस फ़िंगरप्रिंटिंग (p0f) उसे पढ़ता है",
          "jp": "プロキシの送信トラフィックを、パッシブOSフィンガープリント(p0f)が選択したOSからのものと判定する形に見せます",
          "nl": "Het uitgaande verkeer van de proxy laten lijken op dat van het gekozen besturingssysteem, zoals passieve OS-fingerprinting (p0f) het leest",
          "pl": "Ruch wychodzący z proxy wygląda jak ruch z wybranego systemu operacyjnego w ocenie pasywnego rozpoznawania systemu (p0f)",
          "ru": "Исходящий трафик прокси выглядит как трафик выбранной операционной системы для пассивного определения ОС (p0f)",
          "zh": "让代理的出站流量在被动操作系统指纹识别(p0f)看来来自所选操作系统"
        },
        "values": {
          "android": {
            "name": {
              "en": "Android",
              "de": "Android",
              "es": "Android",
              "hi": "Android",
              "jp": "Android",
              "nl": "Android",
              "pl": "Android",
              "ru": "Android",
              "zh": "Android"
            }
          },
          "ios": {
            "name": {
              "en": "iOS",
              "de": "iOS",
              "es": "iOS",
              "hi": "iOS",
              "jp": "iOS",
              "nl": "iOS",
              "pl": "iOS",
              "ru": "iOS",
              "zh": "iOS"
            }
          },
          "macos": {
            "name": {
              "en": "macOS",
              "de": "macOS",
              "es": "macOS",
              "hi": "macOS",
              "jp": "macOS",
              "nl": "macOS",
              "pl": "macOS",
              "ru": "macOS",
              "zh": "macOS"
            }
          },
          "ubuntu": {
            "name": {
              "en": "Ubuntu",
              "de": "Ubuntu",
              "es": "Ubuntu",
              "hi": "Ubuntu",
              "jp": "Ubuntu",
              "nl": "Ubuntu",
              "pl": "Ubuntu",
              "ru": "Ubuntu",
              "zh": "Ubuntu"
            }
          },
          "windows": {
            "name": {
              "en": "Windows",
              "de": "Windows",
              "es": "Windows",
              "hi": "Windows",
              "jp": "Windows",
              "nl": "Windows",
              "pl": "Windows",
              "ru": "Windows",
              "zh": "Windows"
            }
          }
        }
      }
    },
    "limits": {
      "data_per_day": {
        "name": {
          "en": "Data per day",
          "de": "Datenvolumen pro Tag",
          "es": "Datos por día",
          "hi": "प्रति दिन डेटा",
          "jp": "1日あたりのデータ量",
          "nl": "Data per dag",
          "pl": "Dane na dzień",
          "ru": "Трафик в день",
          "zh": "每日流量"
        },
        "description": {
          "en": "The fair-use data allowance for one day",
          "de": "Das Fair-Use-Datenvolumen für einen Tag",
          "es": "El volumen de datos de uso justo para un día",
          "hi": "एक दिन के लिए उचित-उपयोग डेटा सीमा",
          "jp": "1日あたりのフェアユース・データ量",
          "nl": "De fair-use datalimiet voor één dag",
          "pl": "Limit danych fair use na jeden dzień",
          "ru": "Лимит трафика (fair use) на один день",
          "zh": "一天内的合理使用流量额度"
        }
      }
    }
  }
}

Error Responses

Error shape
{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "readable message"
  }
}
StatusCodeDescription
400
VALIDATION_ERRORInvalid request input.
401
MISSING_API_KEYMissing X-API-KEY.
403
INVALID_API_KEYInvalid X-API-KEY.
500
INTERNAL_ERRORInternal error.