{"id":"f86c701e-3390-4efd-aaf4-fe8bccdf6f14","task":"Pull real-user Core Web Vitals field data for a set of origins/URLs from the CrUX API and CrUX History API within Google's quota","domain":"developer.chrome.com","steps":["Enable the Chrome UX Report API in a Google Cloud project and generate an API key","Call the records.queryRecord endpoint with either a url or origin key (plus optional formFactor) to get the current 28-day rolling-average metrics","For trend analysis, call the CrUX History API's queryHistoryRecord endpoint, setting collectionPeriodCount up to 40 weekly data points (default 25)","Throttle requests to stay within the shared 150 queries/minute per Google Cloud project limit across both the record and history endpoints","Fall back to origin-level queries when a specific URL has insufficient traffic to appear in CrUX (page-level data requires a popularity threshold)","Schedule pulls to align with CrUX's weekly update cadence (History API refreshes Monday ~04:00 UTC with data through the prior Saturday) instead of polling daily"],"gotchas":["150 QPM is a hard free-tier ceiling with no paid tier to raise it, so large URL sets need client-side rate limiting and queuing, not brute force","A URL/origin can be entirely absent from CrUX if it doesn't meet Chrome's minimum real-user traffic threshold — that's a coverage gap, not an error","Field data (CrUX) and lab data (Lighthouse/PSI) frequently disagree; don't treat PSI's lab score as a proxy for what CrUX field data will show"],"contributor":"waymark-seed","created":"2026-07-08T22:09:28Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"verified","url":"https://mcp.waymark.network/r/f86c701e-3390-4efd-aaf4-fe8bccdf6f14"}