Integrations
URLpipe in Google Sheets
A column of URLs in, their titles, descriptions and performance scores out.
By Roger Campos · Last updated: September 2026
TL;DR
Google Sheets calls URLpipe through Apps Script: UrlFetchApp posts JSON to an endpoint such as https://urlpipe.dev/meta with your key from Script Properties. A custom function like =URLPIPE_META(A2) returns the title and description into the row; slower Lighthouse audits run from a menu item instead.
Free plan, no credit card. 1,000 credits a month.
Step 1
Add the script
In your sheet, open Extensions → Apps Script. Under Project Settings → Script Properties, add URLPIPE_API_KEY with a project API key. Then replace the editor's contents with:
const URLPIPE = "https://urlpipe.dev";
function urlpipe_(path, body) {
const key = PropertiesService.getScriptProperties().getProperty("URLPIPE_API_KEY");
const res = UrlFetchApp.fetch(URLPIPE + path, {
method: "post",
contentType: "application/json",
headers: { Authorization: "Bearer " + key },
payload: JSON.stringify(Object.assign({ sync: true }, body)),
muteHttpExceptions: true,
});
const text = res.getContentText();
if (res.getResponseCode() !== 200) {
throw new Error("URLpipe " + res.getResponseCode() + ": " + text);
}
return JSON.parse(text);
}
/**
* Title, description and image of a page, across three cells.
* @param {string} url The page's address.
* @customfunction
*/
function URLPIPE_META(url) {
if (!url) return "";
const m = urlpipe_("/meta", { url: url });
return [[m.title, m.description, m.main_image_url]];
}
/** Adds a menu that fills column E with mobile performance scores. */
function onOpen() {
SpreadsheetApp.getUi().createMenu("URLpipe")
.addItem("Lighthouse scores into column E", "fillLighthouse")
.addToUi();
}
function fillLighthouse() {
const sheet = SpreadsheetApp.getActiveSheet();
const rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, 1).getValues();
rows.forEach(function (row, i) {
if (!row[0]) return;
const audit = urlpipe_("/lighthouse", { url: row[0], device: "mobile" });
const score = audit.categories.performance.score;
sheet.getRange(i + 2, 5).setValue(score === null ? "" : Math.round(score * 100));
});
}Step 2
Use it
- Put URLs in column A, and in B2 type
=URLPIPE_META(A2). The title, description and image URL fill B, C and D of that row. Drag it down the column. - Reload the sheet to see the URLpipe menu, and choose Lighthouse scores into column E to fill column E with 0–100 performance scores. The first run asks you to authorize the script.
Why two shapes? A custom function must return within 30 seconds, which a metadata call does comfortably. A Lighthouse audit usually takes 15–20 seconds per page, so a column of them runs from a menu, where Apps Script allows minutes rather than seconds, and writes each score as it lands.
Cost
Recalculation is free
Sheets re-runs custom functions when it sees fit — on open, on edits, when you copy a column. Each re-run is a request to URLpipe, and a repeat of the same URL inside seven days is served from the cache for nothing. So the sheet costs what its distinct URLs cost: 5 credits per page for metadata, 2 per audit.
A sheet of 150 URLs with metadata and a mobile audit is 1,050 credits — the cheapest plan that covers it is Starter: $19 a month for 20,000 credits, at list price.
Limits
What it doesn't do
- The API allows 60 requests a minute and 15 per 10 seconds per project. Dragging a formula down a thousand rows fires them all at once; expect some cells to show a
rate_limitederror until they recalculate. - The Free plan runs 1 request at a time, so parallel recalculation queues. See pricing for the parallel limit of each plan.
- This is a script you own, not an add-on: there is no URLpipe listing in the Workspace Marketplace.
Endpoints
The endpoints on this page
- Check a page's Open Graph tags and metadata
Paste a link and get the page's metadata — title, description, author, publication date, feed and main image — cleaned into one structured object.
Try it free - Run a Lighthouse audit on any URL
Paste a link and get a real Google Lighthouse audit — performance, accessibility, best practices and SEO scores, plus Core Web Vitals — measured against the live page.
Try it free
FAQ
Frequently asked questions
Can a Google Sheets custom function call an API?
Where should I keep the API key in Apps Script?
Does recalculating the sheet spend credits again?
Why do some cells show a rate limit error?
Connect it in five minutes.
Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.