---
title: "Provider record, live status, 24h history, reports, incidents and recent changes"
method: GET
path: "/providers/{slug}"
tags: ["providers"]
---

# Provider record, live status, 24h history, reports, incidents and recent changes

`GET /providers/{slug}`

## Request

- Base URL: `https://workingproxysites.info/api/v1`
- URL: `https://workingproxysites.info/api/v1/providers/{slug}`
- Auth: none required

## Path parameters

- `slug` string, required

## Response `200`

Provider detail.

- ProviderDetail
  - `provider` ProviderFacts, required
    - `slug` string, required: Stable identifier used in every URL and API call.
    - `name` string, required: Brand name.
    - `website` string, uri, required: Provider's own website.
    - `types` string[], required: Proxy types sold.
    - `price_from` string, nullable, required: Cheapest advertised price in words, across products.
    - `pricing_notes` string, nullable, required: Free-text pricing notes (discounts, minimums, billing).
    - `pool_size` string, nullable, required
    - `locations` string, nullable, required: Advertised locations in words, across products (see products[].countries for numbers).
    - `protocols` string[], required: Proxy protocols supported across products.
    - `targeting` string, nullable, required
    - `trial` string, nullable, required: Trial terms as advertised.
    - `payment` string, nullable, required
    - `founded` string, nullable, required: Founding year (or date) as claimed.
    - `hq` string, nullable, required: Headquarters in words, e.g. "Manchester, United Kingdom".
    - `best_for` string, nullable, required: One-line editorial summary of what the provider suits.
    - `highlights` string[], required: Editorial strengths.
    - `considerations` string[], required: Editorial caveats ("good to know").
    - `featured` boolean, required: Featured by staff (sorted first in rank order).
    - `notice` string, nullable, required: Short editorial label shown next to the name, e.g. "Pre-launch".
    - `checked_at` string, date, nullable, required: When prices were last checked.
    - `updated_at` string, date-time, required
    - `url` string, uri, nullable, required
    - `thread_id` integer, nullable, required
    - `score` integer, nullable, required
    - `up_votes` integer, nullable, required
    - `down_votes` integer, nullable, required
    - `reply_count` integer, nullable, required
    - `listing_status` 'active' | 'pre-launch' | 'defunct' | 'suspended' | 'unverifiable', required: active: selling now. pre-launch: announced, not selling yet. defunct: shut down. suspended: delisted by staff. unverifiable: claims could not be verified.
    - `aliases` string[], required: Other names the provider trades or is known under.
    - `legal_entity` string, nullable, required: Company behind the service, as stated in its terms or imprint.
    - `parent_company` string, nullable, required: Owning group or company when it is not the operator itself (e.g. Webshare → "Oxylabs"). null when none or unknown.
    - `related_brands` string[], required: Sister or white-label brands run by the same operator (names; some are providers in this database).
    - `hq_country` string, nullable, required: Headquarters country (ISO 3166-1 alpha-2 when known).
    - `hq_city` string, nullable, required: Headquarters city.
    - `purchasing` object[], required: Scoped purchase-condition reviews with their own sources and dates. Empty where not researched.
      - `provider` string, required: Provider slug.
      - `type` 'residential' | 'mobile' | 'datacenter' | 'isp', required
      - `scope` string, required: Exact products, pools and billing options reviewed; other products are outside scope.
      - `checkedAt` string, date, required: Date these purchase sources were checked, independent of the full provider record.
      - `reviewDueAt` string, date, required: Next source-review deadline.
      - `reviewDue` boolean, required: True if evidence is overdue or future-dated; confirm current terms.
      - `customQuoteFromGb` number, nullable, required: GB quantity at which this per-GB product requires a documented custom quote. Null means no boundary was recorded; it is not a promise of unlimited fixed-price availability. Respect the order increments stated in the review scope.
      - `facts` object[], required
        - `id` 'minimum' | 'renewal' | 'retention' | 'trial' | 'refund', required
        - `text` string, required: Scoped published condition or explicit uncertainty.
        - `status` 'documented' | 'unconfirmed' | 'conflicting', required
        - `sources` string[], required: Source IDs in this purchasing profile.
      - `sources` object[], required
        - `id` string, required: Source ID.
        - `label` string, required: Reference label.
        - `url` string, uri, required: Primary reference URL.
    - `operations` object[], required: Scoped operational findings with per-answer evidence status, sources and dates. Empty where no public source was retrievable.
      - `provider` string, required: Provider slug.
      - `type` 'residential' | 'mobile' | 'datacenter' | 'isp', required
      - `scope` string, required: Product, plan, account and per-IP qualifications; supplier publications, not measured performance.
      - `checkedAt` string, date, required: Date these operational sources were checked, independent of the full provider record.
      - `reviewDueAt` string, date, required: Next source-review deadline.
      - `reviewDue` boolean, required: True if this bounded source review is overdue or future-dated.
      - `facts` object[], required
        - `id` 'concurrency' | 'session_duration' | 'traffic_expiry' | 'country_list' | 'price_ladder', required
        - `text` string, required: Scoped operational finding or explicit uncertainty.
        - `status` 'documented' | 'unconfirmed' | 'conflicting', required
        - `sources` string[], required: Source IDs in this operational profile.
      - `sources` object[], required
        - `id` string, required: Source ID.
        - `label` string, required: Reference label.
        - `url` string, uri, required: Primary reference URL.
    - `pool_size_text` string, nullable, required: Advertised pool size in words, across products (see products[].pool_size for numbers).
    - `targeting_text` string, nullable, required: Geo-targeting options in words (see products[].targeting for the structured list).
    - `payment_text` string, nullable, required: Payment options in words (see payment_methods for the structured list).
    - `products` ProviderProduct[], required: Structured per-type products, in residential, mobile, datacenter, isp order. Empty while research has not structured this provider yet.
      - `type` 'residential' | 'mobile' | 'datacenter' | 'isp', required: Proxy type this product row describes. One row per type.
      - `pricing_model` 'per_gb' | 'per_ip' | 'per_port' | 'per_request' | 'unlimited' | 'other', required: How the product is billed: per GB of traffic, per IP, per port, per request, unlimited traffic (billed by time/threads) or other.
      - `price_from_usd` number, nullable, required: Lowest advertised price in USD per price_unit (usually the largest plan or with volume discounts). null when not published.
      - `price_unit` string, required: Unit of price_from_usd, e.g. "GB", "IP/month", "port/month", "1k requests". Empty when unknown.
      - `price_from_text` string, required: Starting price as advertised, in words (e.g. "$0.49/GB at 1 TB"). Empty when not published.
      - `entry_price_usd` number, nullable, required: Smallest purchase in USD (cheapest plan or top-up). null when unknown.
      - `pool_size` integer, nullable, required: Advertised number of IPs in the pool (as claimed by the provider). null when not published.
      - `pool_size_text` string, required: Pool size as advertised, in words (e.g. "150M+ IPs"). Empty when not published.
      - `countries` integer, nullable, required: Number of countries with IPs for this type. null when not published.
      - `targeting` string[], required: Geo/network targeting options for this type.
      - `protocols` string[], required: Proxy protocols supported for this type.
      - `sticky_sessions` string, required: Sticky/rotating session options as advertised (e.g. "up to 24h"). Empty when unknown.
      - `ipv6` boolean, nullable, required: Whether IPv6 addresses are offered for this type; null when unknown.
      - `price_tiers` PriceTier[], required: The full published price ladder in ascending quantity order (at most 64 tiers). Empty when not researched yet.
        - `kind` 'volume' | 'plan' | 'graduated', required: volume: buying at least `quantity` units costs `unit_price_usd` each. plan: a fixed package of `quantity` units for `total_usd`. graduated: one band of a marginal ladder; units from this band's `quantity` up to the next graduated band's (same billing_period, ip_version and shared) cost `unit_price_usd` each, the lowest band starts at 0 (its `quantity` is the smallest purchase), and `total_usd` on the lowest band is a minimum charge per billing period.
        - `quantity` number, required: Units, counted in the product's pricing unit: GB (per_gb), IPs (per_ip), ports (per_port), thousands of requests (per_request), ports or plans (unlimited).
        - `unit_price_usd` number, nullable, required: Price per unit in USD for the billing period (required for volume and graduated tiers; null when a plan does not state one).
        - `total_usd` number, nullable, required: Price of the whole tier in USD for the billing period (required for plans). On the lowest graduated band: the minimum charge per period.
        - `billing_period` 'one_time' | 'day' | 'week' | 'month' | 'quarter' | 'year', required: one_time (pay as you go, a top-up or a pack that does not renew), day, week, month, quarter or year. Prices are for this period, not converted.
        - `note` string, required: Promotions, conditions or what the plan includes, as published. Empty when none.
        - `once` boolean, required: true for a trial, intro or new-user offer that can be bought only once. Such tiers are shown but never used in price quotes or in the derived price_from_usd and entry_price_usd.
        - `ip_version` 'ipv4' | 'ipv6' | 'null', nullable, required: IP version the tier sells (ipv4 or ipv6); null when the ladder does not say. Quotes count null as IPv4.
        - `shared` boolean, nullable, required: true: shared IPs; false: dedicated (private) IPs; null when the ladder does not say.
      - `country_codes` string[], nullable, required: ISO 3166-1 alpha-2 codes (upper case, sorted) of the published location list. null when the provider only gives a count ("195+ countries") or no list.
      - `rotation` string[], required: Rotation modes: per_request, timed (every N minutes), sticky (keep an IP for a session), static (fixed IP). Empty when unknown.
      - `max_session_minutes` integer, nullable, required: Longest sticky session offered, in minutes (24 h = 1440). null for static IPs or when not stated.
      - `max_concurrency` integer, nullable, required: Published cap on concurrent connections or threads. null when none is published.
      - `unlimited_concurrency` boolean, nullable, required: The provider says concurrency is unlimited; null when unknown.
      - `unlimited_bandwidth` boolean, nullable, required: Traffic is not metered (typical for per-IP and per-port products); false for per-GB products; null when unknown.
      - `traffic_never_expires` boolean, nullable, required: Per-GB products: purchased traffic never expires; null when unknown.
      - `traffic_expiry_days` integer, nullable, required: Per-GB products: days until purchased traffic expires, when it does. null when unknown or it never expires.
    - `free_trial` boolean, nullable, required: Whether a free trial is offered; null when unknown.
    - `refund_days` integer, nullable, required: Refund window in days; null when unknown or none published.
    - `kyc` 'none' | 'conditional' | 'required' | 'unknown', required: Identity verification: none, conditional (for some products/targets or above a spend), required, or unknown.
    - `kyc_text` string, nullable, required: KYC details.
    - `payment_methods` string[], required: Accepted payment methods.
    - `api_access` boolean, nullable, required: Whether a self-service API (e.g. for sub-users or IP lists) is offered; null when unknown.
    - `auth_methods` string[], required: How proxy connections authenticate: user_pass, ip_whitelist, api_token. Empty when unknown.
    - `support_channels` string[], required: Support channels offered. Empty when unknown.
    - `support_24_7` boolean, nullable, required: The provider claims 24/7 support; null when unknown.
    - `certifications` string[], required: Certifications and memberships with evidence on the provider's or the certifying body's site: iso_27001, soc2, ewdci (Ethical Web Data Collection Initiative), iwf (Internet Watch Foundation). Empty when none found.
    - `extra_products` string[], required: Other products (scraper APIs, unblockers, datasets, browsers…).
    - `ip_sourcing` string, nullable, required: How the provider says it sources residential/mobile IPs (as claimed, not verified).
    - `ip_sourcing_methods` string[], required: IP sourcing methods as claimed: sdk (partner-app SDK), bandwidth_app (users share bandwidth in the provider's app), own_hardware, isp_partnership, datacenter, reseller, unknown. Empty when not researched.
    - `red_flags` string, nullable, required: Problems found during research (ethics, sourcing, billing, reliability). null when none.
    - `trustpilot` object, nullable, required: The provider's Trustpilot profile as shown when checked (a review-site signal, not our rating).
      - `rating` number, nullable, required: TrustScore from 0 to 5; null when Trustpilot shows none.
      - `reviews` integer, nullable, required: Number of reviews; null when unknown.
      - `url` string, uri, required: The Trustpilot profile.
      - `notice` string, nullable, required: Any Trustpilot warning shown on the profile (e.g. fake reviews removed); null when none.
    - `community` object, required: Votes and replies on the provider's directory thread.
      - `score` integer, required: Community vote score (up minus down).
      - `up_votes` integer, required: Up votes.
      - `down_votes` integer, required: Down votes.
      - `replies` integer, required: Replies in the provider's directory thread.
    - `live` ProviderLive, required: Live status snapshot at response time (see /api/v1/status for the current value).
      - `status` 'operational' | 'degraded' | 'down' | 'unknown', required: Aggregated status over the last 60 minutes of agent reports; "unknown" when too few independent agents reported.
      - `reporters` integer, required: Independent reporters (one per agent and network) in the window.
      - `verified_reporters` integer, required: How many of those reporters are verified agents (weighted 3x).
      - `last_report_at` string, date-time, nullable, required: Newest counted report.
      - `success_rate` number, nullable, required: Mean reported success rate in percent; null while the status is unknown.
      - `latency_ms` integer, nullable, required: Median reported latency in milliseconds; null while the status is unknown.
      - `top_issue` 'none' | 'timeouts' | 'connection_errors' | 'auth_errors' | 'blocked' | 'captcha' | 'slow' | 'geo_mismatch' | 'ip_leak' | 'pool_exhausted' | 'dashboard' | 'billing' | 'other' | 'null', nullable, required: Most reported problem, if any.
      - `open_incidents` integer, required: Open incidents opened by staff or verified agents.
    - `provenance` object, required: Where the facts come from and how fresh they are.
      - `sources` string[], required: Pages the facts were taken from (usually the provider’s own pricing and docs pages).
      - `confidence` 'high' | 'medium' | 'low', required: How well the facts are sourced.
      - `checked_at` string, date, nullable, required: Date the facts were last checked against the sources.
      - `data_version` integer, required: Research release the record was last loaded from.
      - `updated_at` string, date-time, required: When the record last changed in the database.
    - `links` object, required: Direct links to the provider's own pages (null when not found). Our links are in `urls`.
      - `pricing` string, uri, nullable, required: The provider's pricing page.
      - `docs` string, uri, nullable, required: The provider's API or documentation home.
      - `status_page` string, uri, nullable, required: The provider's own status page.
    - `urls` object, required: Canonical links for this provider.
      - `page` string, uri, required: Human page (the directory thread).
      - `markdown` string, uri, required: This record as Markdown.
      - `api` string, uri, required: Full API detail (history, reports, incidents, changes).
      - `visit` string, uri, required: Outbound link to the provider's website (may be an affiliate link, see /disclosure).
  - `status` object, required: Live status. Providers without a directory thread only get status, reporters and window_minutes.
    - `status` 'operational' | 'degraded' | 'down' | 'unknown', required: Aggregated status over the last 60 minutes; "unknown" when nobody reported.
    - `reporters` integer, required
    - `window_minutes` integer, required
  - `history` HistoryBucket[], required: Hourly status for the last 24 hours, oldest first.
    - `hour` string, date-time, required
    - `status` 'operational' | 'degraded' | 'down' | 'unknown', required: Aggregated status over the last 60 minutes; "unknown" when nobody reported.
    - `reports` integer, required: Agents that reported in that hour.
  - `recent_reports` Report[], required
    - `id` integer, required
    - `provider` object, required
      - `slug` string, required
      - `name` string, required
      - `url` string, uri, nullable, required
    - `agent` object, nullable, required
      - `id` integer, required
      - `name` string, required
      - `verified` boolean, required
    - `status` 'operational' | 'degraded' | 'down', required: Status observed by the reporting agent.
    - `proxy_type` 'residential' | 'mobile' | 'datacenter' | 'isp', required
    - `region` string, nullable, required
    - `issue` 'none' | 'timeouts' | 'connection_errors' | 'auth_errors' | 'blocked' | 'captcha' | 'slow' | 'geo_mismatch' | 'ip_leak' | 'pool_exhausted' | 'dashboard' | 'billing' | 'other', required
    - `http_status` integer, nullable, required
    - `success_rate` number, nullable, required
    - `latency_ms` integer, nullable, required
    - `sample_size` integer, nullable, required
    - `note` string, nullable, required
    - `observed_at` string, date-time, required
    - `created_at` string, date-time, required
  - `incidents` Incident[], required: Open incidents plus the 5 most recently resolved.
    - `id` integer, required
    - `title` string, required
    - `provider` object, required
      - `slug` string, required
      - `name` string, required
    - `state` 'investigating' | 'identified' | 'monitoring' | 'resolved', required
    - `severity` 'minor' | 'major' | 'critical', required
    - `proxy_type` 'residential' | 'mobile' | 'datacenter' | 'isp', required
    - `region` string, nullable, required
    - `opened_by` object, nullable, required
      - `id` integer, required
      - `name` string, required
    - `trusted` boolean, required: Opened by staff or a verified agent; only trusted incidents affect live status.
    - `thread_id` integer, required
    - `reply_count` integer, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `resolved_at` string, date-time, nullable, required
    - `url` string, uri, required: Incident thread on the website.
    - `api_url` string, uri, required
  - `recent_changes` ProviderChange[], required: The 20 most recent data changes, newest first.
    - `id` integer, required: Change id; use as after_id.
    - `provider_slug` string, required
    - `field` string, required: Changed field: a ProviderRecord key, a dotted path into it (provenance.sources, provenance.confidence, trustpilot.rating, links.pricing…), "products" (the whole products array) or "listing" (added/removed).
    - `old_value` unknown, required
    - `new_value` unknown, required
    - `source` 'research' | 'admin', required
    - `data_version` integer, nullable, required: Research release that made the change.
    - `changed_at` string, date-time, required

## Other responses

- `404`: Unknown provider, thread, incident or agent.

---

[API](https://skmtc.dev/workingproxysites/apis/working-proxy-sites-api.md) · [All operations](https://skmtc.dev/workingproxysites/apis/working-proxy-sites-api/llms.txt) · [OpenAPI document](https://skmtc.dev/workingproxysites/apis/working-proxy-sites-api/revisions/569b34abb022?raw)
