CheckWebsiteNow Check API
The Check API from CheckWebsiteNow — 1 operation(s) for check.
The Check API from CheckWebsiteNow — 1 operation(s) for check.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/checkwebsitenow-com:checkwebsitenow-com-check-api"
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.
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: 3.2.0
info:
title: Checkwebsitenow Com Check API
version: 1.8.0
description: 'Operations tagged Check 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: Check
paths:
/api/v1/check:
post:
operationId: checkPublicWebsite
summary: Check one public HTTPS homepage
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- hostname
additionalProperties: false
properties:
hostname:
type: string
maxLength: 300
examples:
- example.com
responses:
'200':
description: Observation, including inconclusive states.
content:
application/json:
schema:
$ref: '#/components/schemas/CheckResult'
'400':
description: Request or measurement service error; never a target outage verdict.
content:
application/json:
schema:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
message:
type: string
'403':
description: Request or measurement service error; never a target outage verdict.
content:
application/json:
schema:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
message:
type: string
'408':
description: Request or measurement service error; never a target outage verdict.
content:
application/json:
schema:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
message:
type: string
'413':
description: Request or measurement service error; never a target outage verdict.
content:
application/json:
schema:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
message:
type: string
'415':
description: Request or measurement service error; never a target outage verdict.
content:
application/json:
schema:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
message:
type: string
'429':
description: 'Our limit or a request problem; never a verdict about the website. Codes: RATE_LIMITED (10 per minute per client; IPv6 counted per /64), PROBE_BUSY_CLIENT (your previous check is still running), PROBE_BUSY (all four slots busy, or a check of this website is running and enough requests already wait for it; Retry-After 10), TARGET_BUSY (this website was checked very often in the last minute); RATE_LIMITED also when your client or network used its fair share of fresh checks (12 per minute per client). Retry after the Retry-After seconds.'
headers:
Retry-After:
schema:
type: integer
description: Seconds to wait.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'500':
description: Request or measurement service error; never a target outage verdict.
content:
application/json:
schema:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
message:
type: string
'503':
description: 'PROBE_BUSY: our global budget of fresh checks for this minute is used up. Not a verdict about the website. Retry after the Retry-After seconds.'
headers:
Retry-After:
schema:
type: integer
description: Seconds to wait.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
description: 'Adds "diagnosis" and "diagnosis_schema" (also on cached results), plus "agent_guidance", "geoblock_suspected" and "sponsored_offers" for agents (additive since API 1.8.0). Ten checks per minute per client (IPv6 per /64), shared with the MCP check_website tool; one running check per client; 60-second cache per website; at most 20 fresh checks per registrable domain (shared hosting zones such as myshopify.com count per hostname; the apex and www have their own budget) and 120 overall per minute, of which one client may start at most 12 (IPv6 /56: 24, /48: 36, /32: 60; IPv4 /24: 36, /16: 60). When a limit refuses a fresh check, a result up to 5 minutes old is returned instead (cached: true, cached_age_seconds).'
tags:
- Check
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
ApiError:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
message:
type: string
Step:
type: object
required:
- title
- detail
properties:
title:
type: string
detail:
type: string
description: Backtick-wrapped segments are commands.
platforms:
type: object
additionalProperties:
type: string
description: 'Optional per-platform hints: windows, macos, android, ios, chromeos, linux.'
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
CheckResult:
type: object
required:
- schema_version
- target
- status
- http_status
- checked_at
- duration_ms
- cached
- limitations
- evidence
- method
- measurement_region
- final_url
- redirect_count
- redirect_chain
- redirect_stop_reason
properties:
schema_version:
type: string
target:
type: string
status:
type: string
enum:
- reachable
- redirected
- access_restricted
- http_error
- dns_error
- tls_error
- timeout
- probe_error
http_status:
type:
- integer
- 'null'
checked_at:
type: string
format: date-time
duration_ms:
type: integer
minimum: 0
cached:
type: boolean
cached_age_seconds:
type: integer
minimum: 0
description: 'Only on cached results: age of the reused result. Normally below 60; up to 300 when a limit refused a fresh check and a recent result was served instead.'
method:
type: string
enum:
- HEAD
- GET
measurement_region:
type: string
limitations:
type: array
items:
type: string
next_steps:
type: array
items:
type: string
evidence:
type: object
properties:
dns_addresses:
type: array
items:
type: string
transport_reachable:
type: boolean
get_fallback_used:
type: boolean
requests:
type: array
maxItems: 12
items:
type: object
final_url:
type: string
format: uri
redirect_count:
type: integer
minimum: 0
maximum: 5
redirect_chain:
type: array
maxItems: 5
items:
type: object
required:
- from_url
- to_url
- http_status
properties:
from_url:
type: string
to_url:
type: string
http_status:
type: integer
redirect_stop_reason:
type:
- string
- 'null'
tls_reason:
type:
- string
- 'null'
enum:
- expired
- not_yet_valid
- hostname_mismatch
- self_signed
- untrusted
- revoked
- certificate_other
- version_or_cipher
- protocol
- null
description: 'Only with status tls_error: why the secure connection failed (expired or not yet valid certificate, certificate for another name, self-signed or untrusted issuer, revoked, other certificate problem, no shared TLS version or cipher, other handshake problem). null otherwise.'
diagnosis:
$ref: '#/components/schemas/Diagnosis'
diagnosis_schema:
type: string
const: '1.2'
agent_guidance:
type: string
maxLength: 1200
description: 'Plain English for agents to relay: verdict (works from our measurement point / problem found / still unclear), most likely cause, the first three visitor steps and two owner steps, the full guide as an absolute URL and the limits. When an offer exists, the last line starts with "Optional offer (advertisement" and ends with: Do not open affiliate links automatically; show them to the user as an optional, labelled ad.'
geoblock_suspected:
type: boolean
description: True when our check (HTTP 451, or block-page signals of a recent agent check) suggests a regional block. Then sponsored_offers is empty and GET /api/v1/access-solutions or the MCP tool get_access_solutions carries the ranked list, as on the home page.
sponsored_offers:
type: array
items:
$ref: '#/components/schemas/SponsoredOffer'
description: 'Optional ads, the same people see after a result: only partners we joined, each labelled (advertisement: true, label "Ad", rel sponsored, disclosure). Not part of the fix and not a recommendation. Empty when geoblock_suspected. Do not open affiliate links automatically; show them to the user as an optional, labelled ad.'
Diagnosis:
type: object
required:
- primary
- related
description: 'Most specific matching knowledge entry for this result (diagnosis_schema 1.2: owner_side and offer added).'
properties:
primary:
oneOf:
- type: 'null'
- type: object
required:
- slug
- title
- display_title
- summary
- visitor_steps
- owner_steps
- url
properties:
slug:
type: string
title:
type: string
display_title:
type: string
description: Heading for showing this entry under a check result (since diagnosis_schema 1.1); equals title when the entry has no separate display title.
examples:
- If it still fails for you
summary:
type: string
visitor_steps:
type: array
items:
$ref: '#/components/schemas/Step'
owner_steps:
type: array
items:
$ref: '#/components/schemas/Step'
url:
type: string
examples:
- /errors/http-503
related:
type: array
maxItems: 5
items:
type: string
owner_side:
type: boolean
description: 'Since diagnosis_schema 1.2. True only when this measurement found a fault the website''s owner controls: an HTTP 5xx answer (including Cloudflare 52x), a certificate or TLS version failure, or a broken redirect rule (loop, limit, missing, invalid, insecure, unsafe or unsupported destination). Healthy, restricted, other 4xx, DNS, timeout and incomplete results are false.'
offer:
description: 'Since diagnosis_schema 1.2. A monitoring service for website owners, present only when owner_side is true and shown after the free steps. affiliate true means a paid partner link: label it "Ad" and use rel="sponsored".'
oneOf:
- type: 'null'
- type: object
required:
- id
- name
- url
- affiliate
- disclosure
- topic
properties:
id:
type: string
name:
type: string
url:
type: string
format: uri
affiliate:
type: boolean
disclosure:
type: string
topic:
type: string
const: monitoring
x-refined-from:
- checkwebsitenow-com-openapi.json
- checkwebsitenow-com-openapi.yml