Bulk PageSpeed & SEO Audit — Core Web Vitals & Lighthouse avatar

Bulk PageSpeed & SEO Audit — Core Web Vitals & Lighthouse

Pricing

from $3.50 / 1,000 audited urls

Go to Apify Store
Bulk PageSpeed & SEO Audit — Core Web Vitals & Lighthouse

Bulk PageSpeed & SEO Audit — Core Web Vitals & Lighthouse

Bulk audit URLs or a sitemap for $0.005/URL: Google PageSpeed Insights (Lighthouse scores, Core Web Vitals LCP/INP/CLS, mobile + desktop) plus on-page SEO checks (title, meta description, H1, canonical, noindex, hreflang, OG, alt text, schema, redirects), a 0–100 SEO score and issues.

Pricing

from $3.50 / 1,000 audited urls

Rating

0.0

(0)

Developer

Benelux Signals

Benelux Signals

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Bulk PageSpeed & SEO Audit: Core Web Vitals, Lighthouse and Meta Tags

Audit a list of URLs or a whole sitemap in one run for $0.005 per URL. For every page you get the Google PageSpeed Insights results: Lighthouse performance, accessibility, best-practices and SEO scores, plus Core Web Vitals (LCP, INP, CLS) for mobile and desktop. Each page also gets a full on-page SEO check: title, meta description, H1, canonical, noindex, hreflang, Open Graph, image alt text, word count, structured data, status code, redirect chain and response time. On top of that comes a 0–100 SEO score and a prioritised list of issues. You can export to CSV, Excel or JSON, or pull the results through the API.

Failed URLs (404s, timeouts, pages blocked by robots.txt) show up in the dataset with a clear error and are never charged.

Who is this bulk SEO audit tool for?

  • SEO agencies and freelancers who need a quick technical SEO audit of a client's top pages or a whole sitemap before a pitch or monthly report.
  • Developers and site owners who check Core Web Vitals and Lighthouse scores after a release, on a schedule, or in CI through the API.
  • Content and marketing teams who need missing meta descriptions, titles that are too long, missing H1s, pages without alt text or accidental noindex tags.
  • AI agents and MCP clients: every input has a safe default, so a bare call with just urls works.

What does Bulk PageSpeed & SEO Audit do?

For every URL it:

  1. Fetches the page like a polite crawler. It follows redirects and records the full chain, measures time to first byte, respects robots.txt and Crawl-delay, and keeps at most a few requests per host in flight.
  2. Runs an on-page SEO audit on the HTML:
    • title and meta description, with their lengths
    • H1 count and texts, H2 count
    • canonical (self or elsewhere, duplicates)
    • meta robots, X-Robots-Tag, noindex/nofollow, and whether robots.txt allows Googlebot
    • hreflang (x-default, self-reference, invalid codes) and html lang
    • viewport
    • Open Graph and Twitter card
    • image alt-text coverage
    • visible word count, internal and external links
    • schema.org types from JSON-LD, microdata and RDFa, plus invalid JSON-LD
  3. Scores the page from 0 to 100 and lists every issue with a severity (error, warning or notice) and a plain-English message, for example "Meta description is long (182 characters; Google usually cuts off around 160)."
  4. Calls the official Google PageSpeed Insights API v5 for mobile and/or desktop. You get:
    • Lighthouse category scores
    • lab metrics: FCP, LCP, TBT, CLS, Speed Index, TTFB
    • real-user Chrome UX Report (CrUX) field data: LCP, INP, CLS, FCP and TTFB at p75, with good/needs-improvement/poor categories, falling back to origin data when the page has none
    • a Core Web Vitals PASSED/FAILED verdict
    • the top 5 performance opportunities with estimated savings

Google API key (free) for PageSpeed Insights

Google no longer reliably answers PageSpeed Insights requests without an API key: the shared keyless quota returns "quota exceeded". To get Lighthouse scores and Core Web Vitals, paste your own free key into Google API key:

  1. Open Google Cloud Console → APIs & Services and enable the PageSpeed Insights API.
  2. Go to Credentials → Create credentials → API key. You can restrict the key to the PageSpeed Insights API.
  3. Paste the key into the Actor input. It is stored encrypted, sent to Google in a request header and never logged.

The free quota is 25,000 queries per day. One URL uses one query per strategy, so mobile + desktop uses two.

Without a key, the default pageSpeed: "auto" skips PageSpeed and you still get the complete on-page SEO audit and score. If you force mobile, desktop or both without a key and Google refuses the call, the row is marked partial and is not charged.

How to use it

  1. Paste your URLs (one per line), or a sitemap URL such as https://example.com/sitemap.xml. A plain site root works too: it is resolved via robots.txt or /sitemap.xml.
  2. Set Max URLs. The default is 50, and this is also your cost cap.
  3. Optional: add your Google API key for Lighthouse and Core Web Vitals.
  4. Click Start. Open the Audit overview table, or export to CSV, Excel or JSON.

Input example

{
"urls": ["https://www.example.com/", "https://www.example.com/pricing"],
"sitemapUrl": "",
"maxUrls": 50,
"pageSpeed": "auto",
"googleApiKey": "YOUR_FREE_GOOGLE_API_KEY",
"maxConcurrency": 3
}
FieldDefaultWhat it does
urls2 example URLsPages to audit. example.com is read as https://example.com/. Duplicates are removed.
sitemapUrlemptyXML sitemap, sitemap index or .xml.gz, or a site root. Child sitemaps are followed.
maxUrls50Maximum URLs per run (list and sitemap together), between 1 and 5,000.
pageSpeedautoauto (mobile + desktop with a key, skipped without one), mobile, desktop, both or off.
googleApiKeynoneYour free Google API key for PageSpeed Insights. Secret.
lighthouseCategoriesall 4performance, accessibility, best-practices, seo.
includeOpportunitiestrueAdds the top 5 Lighthouse opportunities to each result.
maxConcurrency3URLs audited in parallel (1–10).
requestDelayMs1000Delay between requests to the same host.
pageTimeoutSecs30Timeout for fetching one page.
respectRobotsTxttrueSkips disallowed pages and reports them as a free error row.
proxyConfigurationoffOptional proxy for the page fetch.

Output example

One record per URL. Shortened here; the mobile and desktop objects contain all Lighthouse and CrUX data.

{
"url": "https://www.example.com/",
"finalUrl": "https://www.example.com/",
"status": "ok",
"charged": true,
"statusCode": 200,
"redirectCount": 0,
"responseTimeMs": 182,
"seoScore": 92,
"issueCount": 3,
"topIssues": [
"[warning] Meta description is long (182 characters; Google usually cuts off around 160).",
"[notice] 4 of 12 images have no alt text.",
"[notice] No structured data (JSON-LD, microdata or RDFa) found."
],
"title": "Example — Fast websites for small businesses",
"titleLength": 44,
"metaDescriptionLength": 182,
"h1Count": 1,
"canonical": "https://www.example.com/",
"noindex": false,
"hreflang": [{ "lang": "en", "href": "https://www.example.com/" }],
"openGraph": { "title": "Example", "description": "…", "image": "https://www.example.com/og.png", "type": "website", "url": null },
"imageAltCoverage": 66.7,
"wordCount": 812,
"structuredDataTypes": [],
"pageSpeedStatus": "ok",
"mobilePerformanceScore": 71,
"desktopPerformanceScore": 96,
"mobileLcpMs": 3120,
"mobileCls": 0.02,
"mobileTbtMs": 210,
"mobileCoreWebVitals": "PASSED",
"mobile": {
"performanceScore": 71, "accessibilityScore": 92, "bestPracticesScore": 100, "seoScore": 92,
"lab": { "fcpMs": 1650, "lcpMs": 3120, "tbtMs": 210, "cls": 0.02, "speedIndexMs": 3400, "ttfbMs": 120 },
"field": { "source": "url", "lcpMs": 2100, "lcpCategory": "FAST", "inpMs": 140, "inpCategory": "FAST", "cls": 0.03, "clsCategory": "FAST" },
"coreWebVitals": "PASSED",
"opportunities": [{ "id": "unused-javascript", "title": "Reduce unused JavaScript", "savingsMs": 600 }],
"lighthouseVersion": "13.0.0"
}
}

status values:

  • ok: complete audit, charged.
  • partial: the on-page audit is done but a PageSpeed call failed. Not charged.
  • error: the page could not be audited (HTTP 4xx/5xx, timeout, DNS error, not HTML, blocked by robots.txt). Not charged, and the error field says why.

A run summary (counts, average scores, charge-limit flags, PageSpeed problems, sitemap details) is saved as RUN_SUMMARY in the key-value store.

What does the SEO score check?

The score starts at 100, and each issue subtracts a weighted penalty. Examples:

  • noindex: −30
  • robots.txt blocks Googlebot: −20
  • missing title: −15
  • missing meta description: −10
  • missing H1: −10
  • no HTTPS: −10
  • missing viewport: −8
  • less than 80% image alt coverage: −8
  • missing canonical: −5
  • redirect chain: −5
  • thin content: −5
  • slow TTFB: −5
  • smaller warnings and notices for lengths, multiple H1s, hreflang, Open Graph and structured data

All issue codes are in the issues array, so you can filter or re-weight them yourself.

Speed

  • On-page audit only (no key, or pageSpeed: "off"): about 1–2 seconds per URL, faster when the URLs are on different hosts. 50 URLs take about one minute.
  • With PageSpeed Insights: Google runs Lighthouse on its own servers, which takes 10–40 seconds per strategy. The Actor runs up to 4 PageSpeed calls in parallel, so 50 URLs × mobile + desktop take about 5–10 minutes.

Pricing

This Actor uses pay per event: $0.005 per audited URL, with platform usage included. You get mobile + desktop PageSpeed, the on-page SEO audit and the score in one price. Failed and partial URLs are free.

EventFree planBronzeSilverGold
Audited URL$0.005$0.0045$0.004$0.0035
Actor start (per run)$0.005

Cost table (Free plan prices)

What you auditURLsCost
Quick check of a few key pages10$0.055
Default run50$0.255
A mid-size sitemap500$2.505
A large site5,000$25.005

Bill-shock protection:

  • A run never audits more than maxUrls (default 50, so at most $0.255 per run on the Free plan).
  • It stops cleanly at your maximum cost per run. URLs that did not fit are listed in RUN_SUMMARY.notAuditedBecauseOfChargeLimit.
  • Failed URLs, partial results and invalid input lines are never charged.

FAQ

Do I need a Google API key?

Only for Lighthouse scores and Core Web Vitals. The on-page SEO audit, the score and the issue list work without a key. A key is free and takes about two minutes to create (see above).

Is the data the same as on pagespeed.web.dev?

Yes. The Actor calls the same official PageSpeed Insights API v5. Lab scores vary a little from run to run, because Lighthouse simulates a device and network. Field data (CrUX) is a 28-day rolling p75 of real Chrome users and is only available for pages and origins with enough traffic. Otherwise you get NO_FIELD_DATA.

Does it render JavaScript?

The on-page checks read the HTML the server returns, which is what most crawlers see first. Tags that are injected only by client-side JavaScript are not seen in the on-page part. PageSpeed Insights does render the page fully.

Does it crawl my whole site?

It audits the URLs you give it, or the URLs in your sitemap up to maxUrls. It does not follow links. For link discovery, use a crawler and feed the URLs in.

Why was a URL marked as an error?

The error field tells you why: HTTP status, timeout, DNS or SSL error, a non-HTML response, or a page that robots.txt disallows for crawlers (set respectRobotsTxt to false for your own sites). These rows are free.

Can I schedule it or use it from an AI agent?

Yes. Save a task and schedule it daily or weekly, or call it via the Apify API, the Apify MCP server or any integration (Make, Zapier, n8n, Google Sheets). Every field has a default.

The Actor only reads publicly available pages, like a search engine crawler. It identifies itself with its own user agent, respects robots.txt and keeps requests polite. PageSpeed data comes from Google's official API under your own key. Only audit sites you are allowed to test, and respect their terms.

  • EU Tender Radar: new public tenders from TED and TenderNed.
  • Benelux Trade Fair Exhibitors: exhibitor lists from Dutch and Belgian trade fairs.