Fetch one page (a domain's homepage, or `url`) and report its meta tags, JSON-LD schema types, headings, robots.txt (sitemaps, and which AI crawlers like GPTBot, ClaudeBot, PerplexityBot, Google-Extended it blocks site-wide), whether /llms.txt is served, and Core Web Vitals from PageSpeed Insights (PSI), mobile and desktop.
Billing: 2¢ per page after 3 free pages a day; a page already audited today (incl. the PSI re-poll) or that didn't load is free. For many pages of one site crawl_site (1¢ per 10 pages, one call) is cheaper. 30 calls/hour per target host.
When to call: 'audit my site', 'check schema/meta on <url>', 'is the page fast', or to re-check a page after an edit.
Inputs: domain — hostname or URL (fetches its homepage). url — optional exact URL instead (kept as given; ports other than 80/443 refused). include_pagespeed — default true; false answers in seconds. refresh_pagespeed — default false; true ignores cached Core Web Vitals.
Timing: ~25 s. A PSI strategy not finished by then comes back "pending" and keeps measuring — call again with the same domain/url in ~1 minute. Readings are cached 10 min (errors 2).
Returns: { url, final_url, redirected, fetched_at, response_status, fetch_error, meta, schema_types, headings: { h1Count, h1Texts, h2Count, ordered, firstSkip }, robots: { found, status, sitemaps, ai_crawlers: { allowed, blocked, fix } | null }, llms_txt: { url, found, status, problem }, pagespeed: { mobile, desktop } | null, pagespeed_note?, bot_protection?, billing: { charged_cents, free_pages_per_day, free_pages_used_today, price_after_cents }, suggested_next, next_step }. bot_protection (page refused us): relay its note. Each strategy: { status: ok|error|pending, measuredAt, fromCache, score (0–100), lcpSec, inpMs, inpSource, clsUnitless, fcpSec, ttfbSec, tbtMs, fetchedUrl, error }. inpMs is real-user CrUX p75 (inpSource field_url or field_origin; null if neither); the rest are lab values from one Lighthouse run.