GPC Support Auditor avatar

GPC Support Auditor

Pricing

Pay per usage

Go to Apify Store
GPC Support Auditor

GPC Support Auditor

Audit a public domain's Global Privacy Control support resource at /.well-known/gpc.json against the W3C GPC specification. Validates JSON structure, the required gpc boolean member, and the optional lastUpdate field.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Sanskar Jaiswal

Sanskar Jaiswal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

Security

Limited permissions

Share

Audits a public domain's Global Privacy Control (GPC) support resource at /.well-known/gpc.json against the W3C Global Privacy Control specification. GPC is a browser-sent signal (the Sec-GPC header, backed by California, Colorado, Connecticut, and other US state privacy laws) that communicates an opt-out preference. The support resource lets an origin declare, in machine-readable form, whether it respects that signal.

Use cases

  • Privacy and legal teams verifying their own GPC support declaration before a compliance audit.
  • Compliance teams checking vendor and portfolio-company GPC disclosure as part of CCPA/CPRA or state privacy-law due diligence.
  • Agencies and consultants auditing GPC support resource rollout across a client portfolio.
  • Ad-tech and data-broker compliance teams sampling GPC declarations across sites.
  • CI/CD pipelines validating /.well-known/gpc.json after edits, before deployment.

Input

FieldTypeRequiredDescription
startUrlstringyesDomain or URL to audit, e.g. example.com or https://example.com.
timeoutSecondsintegernoRequest timeout, 3-30 seconds. Default 10.

Output

One JSON object per run, pushed to the default dataset.

FieldTypeDescription
inputDomainstringThe domain/URL provided as input.
gpcJsonUrlstringThe /.well-known/gpc.json URL that was requested.
finalUrlstringThe final URL after following any redirects.
crossOriginRedirectbooleanWhether the final URL is on a different host than the requested domain (the spec explicitly allows this).
httpsbooleanWhether the resource was served over HTTPS.
statusinteger|nullFinal HTTP status code.
contentTypestring|nullContent-Type response header value.
jsonValidbooleanWhether the body parses as valid JSON.
parseErrorstring|nullJSON parse error message, if any.
gpcValueboolean|nullRaw value of the gpc member, if present.
gpcValidbooleanWhether gpc is a valid boolean per spec.
lastUpdatestring|nullRaw value of the lastUpdate member, if present.
lastUpdateValidbooleanWhether lastUpdate is a valid RFC3339 full-date or date-time.
unknownMembersarrayJSON object keys not defined by the spec (informational only; the spec says these must be ignored).
supportStatusstringOverall determination per spec: supports, does-not-support, or unknown.
checksarrayPer-check breakdown: name, status, note, weight, recommendation.
issuesarrayDeduplicated list of all issues found.
scoreintegerReadiness score, 0-100.
gradestringLetter grade, A+ to F.
checkedAtstringISO timestamp of the audit.
recommendationsarrayActionable fixes.
errorstring|nullTop-level fetch error, if any.

Example input

{
"startUrl": "https://example.com",
"timeoutSeconds": 10
}

Example output

{
"inputDomain": "https://example.com",
"gpcJsonUrl": "https://example.com/.well-known/gpc.json",
"finalUrl": "https://example.com/.well-known/gpc.json",
"crossOriginRedirect": false,
"https": true,
"status": 200,
"contentType": "application/json",
"jsonValid": true,
"gpcValue": true,
"gpcValid": true,
"lastUpdate": "2025-04-15",
"lastUpdateValid": true,
"unknownMembers": [],
"supportStatus": "supports",
"score": 100,
"grade": "A+",
"issues": [],
"recommendations": ["GPC support resource looks spec-conformant. Re-run this audit after changing privacy practices to catch regressions."]
}

What the spec requires

Per the W3C GPC specification's "GPC Support Resource" section:

  • The resource lives at /.well-known/gpc.json relative to the origin, per RFC 8615.
  • The response must use the application/json media type and the body must be a JSON object; otherwise support is unknown.
  • A gpc member is required and must be the literal boolean true or false; any other value makes support unknown.
  • A lastUpdate member is optional and, if present, must be an RFC3339 full-date (YYYY-MM-DD) or date-time; an invalid format makes the update time unknown.
  • Other JSON members have no defined meaning and must be ignored by consumers (surfaced here only as unknownMembers for visibility).
  • The spec explicitly allows the resource to be served via redirect, possibly to another origin; this actor follows redirects and reports when the final host differs from the requested domain.

Security

  • Public HTTP/HTTPS only. URL credentials are rejected.
  • Localhost and private/link-local IPv4 and IPv6 literal ranges (RFC 1918, RFC 3927, and IPv6 unique-local/link-local equivalents, including bracketed IPv6 literals) are blocked.
  • Hostnames are DNS-resolved and resolved addresses are re-checked against the same private-range rules before any request is made (SSRF defense in depth).
  • Redirects are manually followed and each hop is revalidated with the same SSRF checks before the next request is made.
  • Response bodies are capped at 64 KB.
  • Only /.well-known/gpc.json on the audited origin (and its declared redirect targets) is ever fetched; no other site links are followed.

Pricing

EventPrice (USD)
Actor start$0.005
Domain audited$0.01

Apify takes a 20% platform commission; the operator keeps 80%.

FAQ

What is Global Privacy Control? A browser-sent opt-out signal (Sec-GPC header) that lets users communicate a do-not-sell/do-not-share preference recognized under CCPA/CPRA and several other US state privacy laws.

Why does a GPC support resource matter if the browser already sends the signal? The support resource is a separate, origin-published declaration of whether the site's pages respect GPC requests at all. It helps researchers, regulators, and compliance teams verify stated support without having to test every page.

Does supportStatus: "unknown" mean the domain ignores GPC? No. It means the support resource could not be read or validated as described by the spec. The domain's actual page-level behavior in response to the Sec-GPC header is not evaluated by this actor.

Does this actor send the Sec-GPC header or test opt-out behavior? No. It only fetches and validates the static /.well-known/gpc.json declaration resource. It does not simulate a GPC-enabled browser or test whether data-sharing actually stops.

Why did it report a cross-origin redirect? The GPC specification explicitly permits a GPC support resource to be served via a sequence of redirects, possibly ending at a different origin (for example, a shared compliance subdomain). This is reported for transparency, not flagged as an error.