Site

Query and manage monitored sites through the WebPixie GraphQL API.

Fields

FieldTypeDescription
idID!Unique identifier for the site.
userIdID!ID of the user who added the site.
domainString!The monitored domain.
rootDomainString!The registrable root domain — e.g. acme.io for a site added as www.acme.io.
isFavoriteBoolean!Whether the site is marked as a favorite.
features[SiteFeatureTypes!]!Product areas enabled for this site.
notificationSiteNotificationConfig!Notification settings for this site — { all: Boolean! }.
sslSiteSSLSSL/TLS monitoring data, populated once MONITOR_SSL has run.
certificateSiteCertificateLatest certificate check data, populated once MONITOR_SSL has run.
whoisSiteWhoisWHOIS/domain registration data, populated once MONITOR_WHOIS has run.
dnsSiteDNSDNS monitoring data, populated once MONITOR_DNS has run.
mainPageSiteMainPageMain page crawl data from the site's most recent snapshot crawl.
robotsTxtSiteRobotsTxtrobots.txt data from the site's most recent snapshot crawl.
sitemapSiteSitemapSitemap discovery data, populated once SITEMAP_CRAWLER has run.
linkSiteLinkStatsLink crawler summary stats, present when LINK_CRAWLER is enabled.
attachments[SiteAttachment!]Screenshots and favicons captured for the site.
createTime / updateTimeString! / StringISO 8601 timestamps for creation / last update.

Features

enum SiteFeatureTypes {
  MONITOR_WHOIS      # Enables WHOIS/domain registration monitoring.
  MONITOR_SSL        # Enables SSL/TLS certificate monitoring.
  MONITOR_DNS        # Enables DNS record monitoring.
  LINK_CRAWLER       # Enables the link crawler.
  SITEMAP_CRAWLER    # Enables sitemap discovery and crawling.
}

Site Pillars

ssl, certificate, whois, dns, robotsTxt, and sitemap above share a common wrapper shape:

FieldTypeDescription
createTime / updateTimeString! / StringISO 8601 timestamps for creation / last update.
hashStringContent hash used internally to detect changes between checks.
checkTimeStringISO 8601 timestamp of the last check attempt, successful or not.
syncTimeStringISO 8601 timestamp of the last successful check, whether or not anything changed.

mainPage does not share this shape — see SiteMainPage below. link is a separate, lightweight stats object — see SiteLinkStats below.

SiteSSL

Adds to the common shape above:

FieldTypeDescription
payloadSiteSSLPayload
errorSiteSslErrorSet if the SSL check itself failed.

SiteCertificate

Adds to the common shape above:

FieldTypeDescription
payload[SiteCertificateRecord!]Same shape as findSiteCertificate's response items above.
errorSiteCertificateErrorSet if the certificate check itself failed.

SiteWhois

Adds to the common shape above:

FieldTypeDescription
payloadSiteWhoisPayload
errorSiteWhoisErrorSet if the WHOIS lookup itself failed.

SiteDNS

Adds to the common shape above:

FieldTypeDescription
payloadSiteDnsPayloadSee below.
errorSiteDnsErrorSet if the DNS lookup itself failed.

SiteDnsPayload

FieldTypeDescription
records[SiteDnsRecord!]Raw DNS records — { key: String!, values: [String!]!, ttl: Int! }.
spfSiteDnsSpfSPF record — { payload: [KeyValues!], error: SiteDnsRecordError }.
dmarcSiteDnsDmarcDMARC record — { payload: [KeyValue!], error: SiteDnsRecordError, source: DmarcSource }. source is ROOT or SUBDOMAIN, depending on whether the record was found on the root domain or the checked subdomain.
bimiSiteDnsBimiBIMI record — { payload: SiteDnsBimiPayload, error: SiteDnsRecordError }.
tlsRptSiteDnsTlsRptTLS-RPT record — { payload: SiteDnsTlsRptPayload, error: SiteDnsRecordError }.
mtaStsSiteDnsMtaStsMTA-STS record — { payload: SiteDnsMtaStsPayload, error: SiteDnsRecordError }.
ptr[KeyValues!]PTR (reverse DNS) records.
dnssecDnsSecStatusSECURE, BOGUS, INSECURE, or INDETERMINATE.
IPv4 / IPv6BooleanWhether the domain resolves over each protocol.
sourceString!The DNS server the lookup was performed against.
server[String!]!Nameservers found for the domain.

SiteDnsRecordError is the shared { code: DnsErrorCode!, message: String! } shape used by each derived-record error field above — see Error Codes: DNS.

KeyValues (plural) — used for ptr and the SPF/BIMI raw payloads: { key: String, values: [String!]!, payload: [KeyValues!] }, allowing nested key/value groups. Distinct from KeyValue (singular value).

SiteDnsBimiPayload{ value: String, version: String, logoUrl: String, authorityUrl: String }.

SiteDnsTlsRptPayload{ value: String, version: String, rua: String }.

SiteDnsMtaStsPayload{ value: String, version: String, id: String }.

SiteRobotsTxt

Adds to the common shape above:

FieldTypeDescription
payloadSiteRobotsTxtPayload!A union — see below. There is no separate error field; a fetch/parse failure is reported as the SiteRobotsTxtError member of the union itself.

SiteRobotsTxtPayload is a union of:

TypeFieldsDescription
SiteRobotsTxtValidcontent: String!, messages: [SiteRobotsTxtMessage!]!robots.txt was found and parsed without issues.
SiteRobotsTxtInvalidcontent: String, messages: [SiteRobotsTxtMessage!]!robots.txt was found but has parsing issues — messages explains what.
SiteRobotsTxtErrorcode: RobotsTxtErrorCode!, message: String!robots.txt couldn't be fetched.

SiteRobotsTxtMessage is itself a union of LineMessage ({ line: Int!, message: String! }) and Message ({ message: String! }) — LineMessage is used when an issue is tied to a specific line.

SiteSitemap

Adds to the common shape above. This is the summary object at sitemap itself — distinct from SiteSitemapFile / SiteSitemapLink, the findSiteSitemap / findSiteSitemapLink response items documented under Sitemap below.

FieldTypeDescription
statusSitemapStatus!PROCESSING, COMPLETE, or FAILED.
orchestrationIdStringInternal identifier for the current discovery run, if one is in progress.
errorSiteSitemapDiscoveryErrorSet if sitemap discovery itself failed. There is no payload field here; use findSiteSitemap / findSiteSitemapLink to read discovered sitemap data.

SiteMainPage

Does not share the common wrapper shape above — it's the site's most recent snapshot crawl of its homepage, with no hash / checkTime / syncTime.

FieldTypeDescription
urlStringThe final URL crawled, after redirects.
statusSiteLinkStatusCrawl status.
crawlTimeStringISO 8601 timestamp of the crawl.
pageMainWebpageThe fetched page's response data — see below.
httpSupport / httpsSupportBooleanWhether the site responds over each protocol.
httpsRedirectionBooleanWhether HTTP requests redirect to HTTPS.
http2Support / http3SupportBooleanWhether the site negotiates each HTTP version.
paths[PagePath!]Additional well-known paths checked (e.g. /robots.txt, /sitemap.xml) — { url: String!, page: Webpage }, using the generic Webpage shape.
errorSiteMainPageErrorSet if the crawl itself failed — { code: MainPageErrorCode!, message: String!, payload: [KeyValue!] }.

MainWebpage

Same fields as Webpage, plus:

FieldTypeDescription
timerWebpageTimerRequest timing breakdown, in seconds — { dnsResolution, connect, appConnect, preTransfer, startTransfer, total: Float! }.
browserBrowserPayloadHeadless-browser rendering data, if a browser-rendered check was performed — see below.

BrowserPayload

FieldTypeDescription
viewportBrowserViewport!{ width: Int!, height: Int!, devicePixelRatio: Float! }.
pageHeightInt!Rendered page height in pixels.
cookies[HttpCookie!]Cookies set during rendering — { name, value, domain, path: String!, expires: Int!, httpOnly, secure: Boolean!, sameSite: HttpCookieSameSiteType! }. sameSite is STRICT, LAX, NONE, or UNDEFINED.
jsErrors[String!]JavaScript errors thrown during rendering.
consoleLogs[BrowserConsoleLog!]Browser console output — { type: BrowserConsoleLogType!, text: String! }.
localStorage / sessionStorage[KeyValue!]Captured storage contents.

SiteLinkStats

link — a lightweight link-crawler summary. Distinct from SiteLink (individual crawled links, returned by findSiteLink — see Links below).

FieldTypeDescription
countInt!Number of links crawled for this site.
limitInt!Max links the link crawler will follow for this site, per your plan.

SiteAttachment

attachments — screenshots and favicons captured for the site.

FieldTypeDescription
createTimeString!ISO 8601 timestamp when this attachment was captured.
typeSiteAttachmentType!SCREENSHOT or FAVICON.
urlString!URL of the captured asset.

Queries

getSite

Look up a single monitored site by domain.

query {
  getSite(domain: "acme.io") {
    id
    domain
    features
  }
}

Parameters

NameTypeDescription
domainString!The monitored domain.

Response: a Site (see Fields above), or null if not found.

findSite

Paginated, filterable list of your monitored sites.

query {
  findSite(query: "isFavorite = TRUE", limit: 25) {
    pagination {
      count
    }
    items {
      domain
      features
    }
  }
}

Parameters

NameTypeDescription
queryStringFilter expression — see SiteFilterableFields.
pageIntPage number, defaults to 1.
limitIntPage size, defaults to 10, capped at 100.
sort[Sort!]Sort order, defaults to newest first.

Response: a SiteListpagination + items: [Site!]!. See Pagination & Sorting.

analyzeSite

Returns the domain's latest site analysis results.

query {
  analyzeSite(domain: "acme.io") {
    status
    summary {
      score
    }
  }
}

Parameters

NameTypeDescription
domainString!The domain to analyze.

Response: an AnalyzeResult — see Types: Analysis for the nested AnalyzeSummary/SubAnalyzeResult shapes.

FieldType
summaryAnalyzeSummary!
headerSubAnalyzeResult!
commonSubAnalyzeResult!
whoisSubAnalyzeResult!
dnsSubAnalyzeResult!
sslSubAnalyzeResult!
statusSiteAnalyzeStatus!

Mutations

createSite

Adds a new domain to monitor.

mutation {
  createSite(
    domain: "acme.io"
    features: [MONITOR_WHOIS, MONITOR_SSL, MONITOR_DNS, LINK_CRAWLER]
    notification: { all: true }
  ) {
    id
    domain
    features
  }
}

Parameters

NameTypeDescription
domainString!The domain to start monitoring.
features[SiteFeatureTypes!]Product areas to enable.
notificationSiteNotificationConfigInputNotification settings — { all: Boolean! = true }.

Response: the created Site.

updateSite

Updates a site's enabled features and/or notification settings. Passing features replaces the full set of enabled features.

Parameters

NameTypeDescription
domainString!The site's domain.
features[SiteFeatureTypes!]Product areas to enable.
notificationSiteNotificationConfigInputNotification settings — { all: Boolean! = true }.

Response: the updated Site.

deleteSite

Stops monitoring a domain and removes its data.

mutation {
  deleteSite(domain: "acme.io") {
    affectedRecords
  }
}

Parameters

NameTypeDescription
domainString!The domain to stop monitoring.

Response: a DeleteResult{ affectedRecords: Int! }.

Filterable Fields

SiteFilterableFields — see Discovering Filterable Fields for how to use this with findSite.

enum SiteFilterableFields {
  ID
  USER_ID
  IS_FAVORITE
  DOMAIN
  ROOT_DOMAIN
  FEATURES
  CREATE_TIME
  UPDATE_TIME
}

Certificates

findSiteCertificate

Filterable list of a domain's certificate history. Not paginated or sortable.

query {
  findSiteCertificate(domain: "acme.io") {
    items {
      commonName
      notBefore
      notAfter
      issuerName
    }
  }
}

Parameters

NameTypeDescription
domainString!The monitored domain.
queryStringFilter expression — see SiteCertificateFilterableFields.

Response: a SiteCertificateListitems: [SiteCertificateRecord!]!:

FieldTypeDescription
idID!Unique identifier for this certificate record.
notAfterString!ISO 8601 expiration date of the certificate.
notBeforeString!ISO 8601 issuance date of the certificate.
issuerNameString!Name of the certificate issuer.
issuerX509NameStructured issuer distinguished name.
commonNameStringThe certificate's common name (CN).
identityName[String!]!Subject Alternative Names (SANs) covered by this certificate.
serialNumberString!The certificate's serial number.
createTimeString!ISO 8601 timestamp when this record was observed.
isPrecertBoolean!Whether this is a precertificate (Certificate Transparency).

getSiteCertificateIdentities

Distinct identity names (SANs) seen across a domain's certificate history.

query {
  getSiteCertificateIdentities(domain: "acme.io")
}

Parameters

NameTypeDescription
domainString!The monitored domain.

Response: [String!]!.

Filterable fields: SiteCertificateFilterableFieldsCOMMON_NAME, NOT_BEFORE, NOT_AFTER, IDENTITY_NAME, CHECK_TIME, SYNC_TIME, CREATE_TIME, UPDATE_TIME.

Errors: see Error Codes: Certificates.

Sitemap

findSiteSitemap

Paginated, filterable list of sitemap files discovered for a domain.

query {
  findSiteSitemap(domain: "acme.io", limit: 25) {
    items {
      url
      type
      status
      linkCount
    }
  }
}

Parameters

NameTypeDescription
domainString!The monitored domain.
queryStringFilter expression — see SiteSitemapFilterableFields.
pageIntPage number, defaults to 1.
limitIntPage size, defaults to 10, capped at 100.
sort[Sort!]Sort order, defaults to newest first.

Response: a SiteSitemapFileListitems: [SiteSitemapFile!]!:

FieldTypeDescription
idID!Unique identifier for this sitemap file.
urlString!URL of the sitemap file.
typeSitemapFileTypeThe sitemap file's type.
parentUrlStringURL of the parent sitemap index, if this file was referenced from one.
finalUrlStringURL the sitemap file was actually fetched from, after redirects.
formatSitemapFormatThe sitemap file's format.
statusCrawlStatusCrawl status for this file.
linkCountIntNumber of URL entries found in this sitemap file.
pageHttpResponseRaw HTTP response info from fetching the sitemap file.
errorSiteSitemapEntryErrorSet if this file failed to fetch/parse, was rejected as out-of-scope, or was truncated by a file/link cap — can be set alongside a CRAWL_COMPLETE status. Shape: { code: SitemapErrorCode!, message: String!, payload: [KeyValue!] }.
hashStringContent hash used internally to detect changes between checks.
checkTimeStringISO 8601 timestamp of the last check attempt, successful or not.
syncTimeStringISO 8601 timestamp of the last successful check, whether or not anything changed.
createTime / updateTimeString! / StringISO 8601 timestamps for creation / last update.

Paginated, filterable list of individual URL entries within a domain's sitemaps.

query {
  findSiteSitemapLink(domain: "acme.io", limit: 25) {
    items {
      sitemapUrl
      linkCount
    }
  }
}

Parameters

NameTypeDescription
domainString!The monitored domain.
queryStringFilter expression — see SiteSitemapLinkFilterableFields.
pageIntPage number, defaults to 1.
limitIntPage size, defaults to 10, capped at 100.
sort[Sort!]Sort order, defaults to newest first.

Response: a SiteSitemapLinkListitems: [SiteSitemapLink!]!:

FieldTypeDescription
idID!Unique identifier for this sitemap file's link entry.
sitemapUrlString!URL of the sitemap file this entry came from.
linkCountInt!Number of URL entries in this sitemap file.
links[SiteSitemapUrlEntry!]!The individual URL entries — see below.

SiteSitemapUrlEntry

FieldTypeDescription
urlString!The URL listed in the sitemap.
lastmodStringThe entry's declared lastmod value.
changefreqStringThe entry's declared changefreq value.
priorityFloatThe entry's declared priority value.
errorSiteSitemapEntryErrorSet if this entry falls outside the site's sitemap scope. Shape: { code: SitemapErrorCode!, message: String!, payload: [KeyValue!] }.

Filterable fields: SiteSitemapFilterableFields (for findSiteSitemap) — URL, FINAL_URL, TYPE, STATUS, PARENT_URL, FORMAT, LINK_COUNT, CHECK_TIME, SYNC_TIME, CREATE_TIME, UPDATE_TIME, DOMAIN. SiteSitemapLinkFilterableFields (for findSiteSitemapLink) — SITEMAP_URL, URL, DOMAIN.

Errors: see Error Codes: Sitemap.

Paginated, filterable list of crawled links across your sites. Filter by domain in the query string to scope to one site.

query {
  findSiteLink(query: "domain = acme.io AND status = CRAWL_COMPLETE", limit: 25) {
    items {
      url
      status
      mainPage
    }
  }
}

Parameters

NameTypeDescription
queryStringFilter expression — see SiteLinkFilterableFields.
pageIntPage number, defaults to 1.
limitIntPage size, defaults to 10, capped at 100.
sort[Sort!]Sort order, defaults to newest first.

Response: a SiteLinkListitems: [SiteLink!]!:

FieldTypeDescription
idID!Unique identifier for this crawled link.
urlString!The crawled URL.
mainPageBoolean!Whether this is the site's main page.
statusSiteLinkStatus!Crawl status for this link.
severityInt!Numeric severity/priority score, mainly useful for sorting and the SEVERITY filter — higher generally means more urgent. Derived internally from status.
pageWebpageThe fetched page's response data, if the crawl succeeded.
crawlTimeStringISO 8601 timestamp of the last crawl attempt, if any.
links[SiteSubLink!]Links found on this page, if it was crawled.
errorSiteLinkErrorSet if the crawl couldn't complete.
systemTags[SiteLinkSystemTag!]!System-assigned status tags, matching what siteLinkSummary groups by.
createTime / updateTimeString! / StringISO 8601 timestamps for creation / last update.

siteLinkSummary

Counts of crawled links grouped by system tag (OK, REDIRECT, NOT_FOUND, etc.).

query {
  siteLinkSummary(query: "domain = acme.io") {
    total
    items {
      tag
      count
    }
  }
}

Parameters

NameTypeDescription
queryStringFilter expression — see SiteLinkFilterableFields.

Response: a SiteLinkSummary:

FieldTypeDescription
totalInt!Total number of matching links across all tags.
items[SiteLinkSummaryItem!]!Per-tag counts — each item is { tag: SiteLinkSystemTag!, count: Int! }.

Paginated list of crawled links pointing to a given URL.

query {
  siteLinkBacklinks(url: "https://acme.io/pricing", limit: 25) {
    items {
      url
      status
    }
  }
}

Parameters

NameTypeDescription
urlString!The target URL to find backlinks for.
queryStringFilter expression — see SiteLinkFilterableFields.
pageIntPage number, defaults to 1.
limitIntPage size, defaults to 10, capped at 100.
sort[Sort!]Sort order, defaults to newest first.

Response: a SiteLinkList — same shape as findSiteLink above.

Filterable fields: SiteLinkFilterableFieldsID, STATUS, URL, PAGE_TITLE, PAGE_STATUS_CODE, PAGE_RESPONSE_TIME, PAGE_CONTENT_SIZE, MAIN_PAGE, CRAWL_TIME, CREATE_TIME, UPDATE_TIME, DOMAIN, SEVERITY, SYSTEM_TAGS.

Errors: see Error Codes: Links.

On this page