Lighthouse PageSpeed Checker
Core Web Vitals in Bulk
Example request
curl -X POST https://radarbg.com/v1/lighthouse-pagespeed-audit \
-H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
-d '{"urls": ["https://example.com"], "strategy": "mobile", "maxUrls": 50, "concurrency": 2}'
Answer: {"ok": true, "count": N, "items": [...], "usage": {...}}. Failed calls are not counted.
Inputs
| Field | Type | Description |
|---|---|---|
urls | array | Pages to audit with Google Lighthouse. One result row is produced per URL and strategy. Use full http(s) links; a link without a scheme gets https:// added. |
strategy | string | mobile = Lighthouse default mobile emulation (slow 4G, mid-range phone). desktop = desktop preset. both = two audits per URL (two result rows). |
categories | array | Lighthouse categories to run. Fewer categories make each audit a little faster. Categories not run come back as null. Leave empty for all four (performance, accessibility, best-practices, seo). |
maxUrls | integer | Audit at most this many URLs from the list (counted before strategies are applied). Caps the cost of big lists. |
concurrency | integer | How many audits run at the same time. Each one starts its own Chrome (about 500-800 MB). Keep 2 on the default 2 GB memory; raise it only together with the run memory. Very high values make timings less accurate. With the default 4 GB memor |
monitorId | string | Turns on monitoring. Scores of every URL and strategy are remembered under this ID, and the next run with the same ID adds previousPerformance, performanceDelta and alert to each row. Use a different ID per site or customer. Leave empty for |
alertDrop | integer | Monitoring only. A row gets alert=true when any audited category score fell by at least this many points (0-100 scale) compared with the previous run with the same Monitor ID. |
onlyAlerts | boolean | Monitoring only. Push only rows where alert is true (a score drop), so you pay and get notified only when something got worse. Scores are still remembered for the next run. |
includeErrorRows | boolean | Also write a row (billed) for URLs that could not be audited. Off by default: failed URLs are free and listed in RUN_SUMMARY. |
datasetId | string | Optional. Pick a dataset (or paste its ID) to read the input from, for example the result of Google Maps Scraper. When this actor runs as an integration, the dataset of the triggering run is used automatically (payload.resource.defaultDatas |
datasetField | string | Optional. The item field that holds the value, for example website, url or videoUrl (dot paths like author.url work). Empty = detected automatically. |
datasetMaxItems | integer | Upper limit of unique values taken from the dataset, to keep the cost under control. |
Price
Included in every plan: 100 calls a month free, then from €9 a month for 3,000 calls across all APIs.