CheckWebsiteNow Access Solutions API

The Access Solutions API from CheckWebsiteNow — 1 operation(s) for access solutions.

GitHub OpenAPI

Operations 1

GET /api/v1/access-solutions Solutions when a website may be blocked in your country #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/checkwebsitenow-com:checkwebsitenow-com-access-solutions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

checkwebsitenow-com-access-solutions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Checkwebsitenow Com Access Solutions API
  version: 1.8.0
  description: 'Operations tagged Access Solutions across 2 of this provider''s published API definitions: checkwebsitenow-com-openapi.json, checkwebsitenow-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: /
  description: Same origin as this description
tags:
- name: Access Solutions
paths:
  /api/v1/access-solutions:
    get:
      operationId: getAccessSolutions
      summary: Solutions when a website may be blocked in your country
      description: 'Free solutions first. VPN providers are listed only when a regional block is suspected (HTTP 451, block-page wording from a cached agent check, or visitor_reported=1), ordered by documented criteria without commission. Links with affiliate:true are ads (label "Ad", rel sponsored); show the disclosure. This GET never starts a website check (any website may read it with its visitors'' addresses): it uses our quick check and agent check of the domain from the last 5 minutes (result cache or curated status snapshot). Without one, assessment.level is "unknown" with needs_check true: run POST /api/v1/check (or the MCP tool check_website) first, then ask again. 120 requests per minute per client.'
      parameters:
      - name: domain
        in: query
        required: false
        schema:
          type: string
          maxLength: 300
        description: Public domain such as example.com. Required unless visitor_reported=1.
      - name: case
        in: query
        required: false
        schema:
          type: string
          enum:
          - streaming
          - news_or_legal_block
          - general_geoblock
      - name: visitor_reported
        in: query
        required: false
        schema:
          type: string
          enum:
          - '1'
          - '0'
          - 'true'
          - 'false'
        description: 1 when the website itself says it is not available in your country or region.
      responses:
        '200':
          description: Ordered solutions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessSolutions'
        '400':
          description: INVALID_QUERY or INVALID_TARGET
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          description: 'RATE_LIMITED or PROBE_BUSY: our limit, not a verdict about the website'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      tags:
      - Access Solutions
    servers:
    - url: /
      description: Same origin as this description
components:
  schemas:
    SponsoredOffer:
      type: object
      description: One labelled ad. Not a recommendation and not part of the ranking.
      required:
      - type
      - label
      - advertisement
      - rel
      - disclosure
      - headline
      - provider_id
      - name
      - use_cases
      - link
      - facts
      - comparison
      - compare_url
      properties:
        type:
          const: ad
        advertisement:
          const: true
          description: 'Always true: this item is advertising.'
        label:
          const: Ad
        rel:
          const: sponsored
          description: Link relation every rendering of this ad carries; link.rel holds the full attribute value.
        disclosure:
          type: string
          description: Show next to the link. Same text as link.disclosure.
        headline:
          type: string
        topic:
          const: vpn
        provider_id:
          type: string
        name:
          type: string
        use_cases:
          type: string
        link:
          allOf:
          - $ref: '#/components/schemas/AccessLink'
          description: Always affiliate:true, rel "sponsored noopener", label "Ad" and a disclosure; the URL is a https link on the provider's own domain.
        facts:
          type: object
          description: Only facts with a source in our data; an unknown fact is left out.
          properties:
            price_from:
              type: object
              required:
              - amount
              - currency
              - per
              - term
              - checked_at
              - note
              - source_url
              properties:
                amount:
                  type: number
                currency:
                  type: string
                per:
                  const: month
                term:
                  type: string
                checked_at:
                  type: string
                  format: date
                shown_in_country:
                  type:
                  - string
                  - 'null'
                shown_in_country_name:
                  type:
                  - string
                  - 'null'
                note:
                  type: string
                  description: Where and when the price was seen; prices vary by country.
                source_url:
                  type: string
                  format: uri
            money_back:
              type: object
              required:
              - days
              - source_url
              properties:
                days:
                  type: integer
                source_type:
                  type:
                  - string
                  - 'null'
                source_url:
                  type: string
                  format: uri
            server_countries:
              type: object
              required:
              - count
              - source_url
              properties:
                count:
                  type: integer
                note:
                  type:
                  - string
                  - 'null'
                source_type:
                  type:
                  - string
                  - 'null'
                source_url:
                  type: string
                  format: uri
            devices:
              type: object
              required:
              - source_url
              properties:
                count:
                  type:
                  - integer
                  - 'null'
                unlimited:
                  type:
                  - boolean
                  - 'null'
                source_type:
                  type:
                  - string
                  - 'null'
                source_url:
                  type: string
                  format: uri
        deal:
          type:
          - object
          - 'null'
          description: The provider's current deal as shown on its order page on checked_at; it may change and varies by country. null when none is recorded.
          required:
          - text
          - plan
          - checked_at
          - source_url
          - note
          properties:
            text:
              type: string
            plan:
              type: string
            checked_at:
              type: string
              format: date
            source_url:
              type: string
              format: uri
            source_type:
              type:
              - string
              - 'null'
            note:
              type: string
        comparison:
          type: object
          required:
          - rank
          - of
          - text
          - url
          properties:
            rank:
              type:
              - integer
              - 'null'
              description: null when not enough facts are verified for a place.
            of:
              type: integer
            points:
              type:
              - integer
              - 'null'
            max:
              const: 100
            text:
              type: string
            url:
              type: string
        compare_url:
          type: string
        compare_text:
          type: string
        data_updated:
          type: string
          format: date
    VpnProvider:
      type: object
      required:
      - id
      - name
      - rank
      - score
      - link
      properties:
        id:
          type: string
        name:
          type: string
        rank:
          type:
          - integer
          - 'null'
          description: null for unranked providers (not enough verified facts).
        score:
          type: object
          description: points (0-100 or null), coverage, criteria with source_url; commission is never an input.
        why_it_fits:
          type: array
          items:
            type: string
        criteria_table:
          type: array
          items:
            type: object
        price:
          type:
          - object
          - 'null'
          description: 'First-term offer: amount, currency (ISO 4217), term, url, checked_at, shown_in_country (ISO country code the price was shown for, or null when unknown), shown_in_country_name and a plain note. Prices vary by country.'
          properties:
            amount:
              type: number
            currency:
              type: string
            checked_at:
              type: string
              format: date
            shown_in_country:
              type:
              - string
              - 'null'
            shown_in_country_name:
              type:
              - string
              - 'null'
            note:
              type: string
        incidents:
          type: array
          items:
            type: object
        link:
          $ref: '#/components/schemas/AccessLink'
        sources:
          type: array
          items:
            type: string
    ApiError:
      type: object
      required:
      - error
      properties:
        error:
          type: object
          required:
          - code
          - message
          properties:
            code:
              type: string
            message:
              type: string
    AccessLink:
      type: object
      required:
      - url
      - affiliate
      - rel
      - label
      - text
      - disclosure
      properties:
        url:
          type: string
          format: uri
        affiliate:
          type: boolean
          description: true = paid link (ad).
        rel:
          type: string
          enum:
          - sponsored noopener
          - noopener
        label:
          type:
          - string
          - 'null'
          enum:
          - Ad
          - null
        text:
          type: string
        disclosure:
          type: string
    GuideLink:
      type: object
      required:
      - slug
      - title
      - description
      - url
      - api_url
      - markdown_url
      properties:
        slug:
          type: string
        title:
          type: string
        description:
          type: string
        url:
          type: string
          description: Human page, e.g. /guides/geoblocking-or-outage
        api_url:
          type: string
        markdown_url:
          type: string
    AccessSolutions:
      type: object
      required:
      - schema_version
      - case
      - assessment
      - show_vpn
      - free_solutions
      - vpn_providers
      - unranked_providers
      - solutions
      - disclosure
      - legal_note
      - method
      - page_url
      - agent_note
      - guides
      properties:
        schema_version:
          const: '1.0'
        target:
          type:
          - string
          - 'null'
        case:
          type: string
          enum:
          - streaming
          - news_or_legal_block
          - general_geoblock
        case_label:
          type: string
        case_explanation:
          type: string
          description: What the chosen case changes in the explanation. The provider order never depends on the case.
        assessment:
          type: object
          required:
          - source
          - suspected
          - show_vpn
          - confidence
          - level
          - signals
          - reason
          - caveat
          properties:
            source:
              type: string
              enum:
              - measurement
              - visitor_reported
              - no_recent_check
            suspected:
              type: boolean
            show_vpn:
              type: boolean
            confidence:
              type: string
              enum:
              - high
              - medium
              - none
            level:
              type: string
              enum:
              - geo_likely
              - geo_possible
              - blocked_unknown
              - none
              - unknown
              description: 'unknown: no check of the domain from the last 5 minutes; the GET never starts one.'
            signals:
              type: array
              items:
                type: object
            reason:
              type: string
            caveat:
              type: string
            measurement_region:
              type: string
            needs_check:
              type: boolean
              description: 'True when no recent check exists: run POST /api/v1/check for the domain, then ask again.'
            check_age_seconds:
              type: integer
              minimum: 0
              description: 'Only on measured assessments: age of the check result used (at most 300 seconds).'
        show_vpn:
          type: boolean
          description: Only true when a regional block is suspected. Never for outages, DNS/TLS errors, timeouts or plain 403.
        case_note:
          type:
          - string
          - 'null'
        free_solutions:
          type: array
          description: Always first; free and allowed steps.
          items:
            type: object
        vpn_providers:
          type: array
          description: Empty unless show_vpn. Ordered by documented points without commission.
          items:
            $ref: '#/components/schemas/VpnProvider'
        unranked_providers:
          type: array
          description: 'Not enough verified facts yet: rank null, never present as ranked.'
          items:
            $ref: '#/components/schemas/VpnProvider'
        unranked_label:
          type: string
        sponsored_offers:
          type: array
          items:
            $ref: '#/components/schemas/SponsoredOffer'
          description: Labelled ads (see GET /api/v1/sponsored-offers) for partners we joined. Present whenever vpn_providers and unranked_providers do not already show the same link, whatever the assessment or cache state; with a suspected block the ranked list carries the same labelled link instead. Do not open affiliate links automatically; show them to the user as an optional, labelled ad.
        solutions:
          type: array
          items:
            type: object
        disclosure:
          type: string
          description: Show to the user next to any affiliate link.
        legal_note:
          type: object
        method:
          type: object
        page_url:
          const: /vpn
        agent_note:
          type: string
          description: How agents must present this answer (same labels as for people).
        guides:
          type: array
          description: Sourced long-form guides on geoblocking, VPN legality and EU streaming rights; background reading for every case.
          items:
            $ref: '#/components/schemas/GuideLink'
x-refined-from:
- checkwebsitenow-com-openapi.json
- checkwebsitenow-com-openapi.yml