CheckWebsiteNow · Schema
AccessSolutions
CompanyWebsite MonitoringUptimeWebsite Down CheckerHTTPErrorsDNSSSL CertificatesTroubleshootingMCPAI Agents
Properties
| Name | Type | Description |
|---|---|---|
| schema_version | object | |
| target | stringnull | |
| case | string | |
| case_label | string | |
| case_explanation | string | What the chosen case changes in the explanation. The provider order never depends on the case. |
| assessment | object | |
| show_vpn | boolean | Only true when a regional block is suspected. Never for outages, DNS/TLS errors, timeouts or plain 403. |
| case_note | stringnull | |
| free_solutions | array | Always first; free and allowed steps. |
| vpn_providers | array | Empty unless show_vpn. Ordered by documented points without commission. |
| unranked_providers | array | Not enough verified facts yet: rank null, never present as ranked. |
| unranked_label | string | |
| sponsored_offers | array | 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; |
| solutions | array | |
| disclosure | string | Show to the user next to any affiliate link. |
| legal_note | object | |
| method | object | |
| page_url | object | |
| agent_note | string | How agents must present this answer (same labels as for people). |
| guides | array | Sourced long-form guides on geoblocking, VPN legality and EU streaming rights; background reading for every case. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/checkwebsitenow-com/json-schema/checkwebsitenow-com-access-solutions-schema.json",
"title": "AccessSolutions",
"x-generated": "2026-11-03",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/checkwebsitenow-com-openapi.yml#/components/schemas/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": "#/$defs/VpnProvider"
}
},
"unranked_providers": {
"type": "array",
"description": "Not enough verified facts yet: rank null, never present as ranked.",
"items": {
"$ref": "#/$defs/VpnProvider"
}
},
"unranked_label": {
"type": "string"
},
"sponsored_offers": {
"type": "array",
"items": {
"$ref": "#/$defs/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": "#/$defs/GuideLink"
}
}
},
"$defs": {
"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"
}
}
},
"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": "#/$defs/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": "#/$defs/AccessLink"
},
"sources": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
Work with this as data
Every JSON Schema 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 schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.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.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/checkwebsitenow-com-access-solutions"
All schemas
curl "https://apis.io/api/v1/json-schemas?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.