Integrations
URLpipe in Airtable
Paste a URL into a record; the title, description, image and a screenshot fill themselves in.
By Roger Campos · Last updated: September 2026
TL;DR
In Airtable, an automation triggered when a record gets a URL can call URLpipe from a Run a script action: fetch posts to https://urlpipe.dev/meta with the key from input.secret(), and table.updateRecordAsync writes the title, description and image back. A screenshot link comes from the X-Result-Url header.
Free plan, no credit card. 1,000 credits a month.
Setup
Build the automation
- 1In a Links table, have fields
URL(URL),Title,Description(long text),Image(URL) andScreenshot(URL). - 2Create an automation with the trigger When a record matches conditions:
URLis not empty. - 3Add the action Run a script. Under input variables, add
recordId(the trigger record's ID) andurl(its URL field). - 4In the script editor's Secrets tab, add a secret named
urlpipe_api_keywith a project API key. - 5Paste the script below, test it, and turn the automation on.
const { recordId, url } = input.config();
const headers = {
Authorization: `Bearer ${input.secret("urlpipe_api_key")}`,
"Content-Type": "application/json",
};
// 1. Title, description and image
const metaRes = await fetch("https://urlpipe.dev/meta", {
method: "POST",
headers,
body: JSON.stringify({ url, sync: true }),
});
if (!metaRes.ok) throw new Error(`URLpipe /meta ${metaRes.status}: ${await metaRes.text()}`);
const meta = await metaRes.json();
// 2. A first-screen screenshot, as a link that needs no key
const shotRes = await fetch("https://urlpipe.dev/screenshot", {
method: "POST",
headers,
body: JSON.stringify({
url,
sync: true,
screenshot_options: { full_page: false, format: "webp" },
page_options: { block_cookie_banners: true },
}),
});
const table = base.getTable("Links");
await table.updateRecordAsync(recordId, {
Title: meta.title ?? "",
Description: meta.description ?? "",
Image: meta.main_image_url ?? null,
Screenshot: shotRes.ok ? shotRes.headers.get("X-Result-Url") : null,
});Timing
Why it works inside Airtable's limits
An automation script has a time budget — 30 seconds for each fetch, and a limit on the script as a whole — and this one makes two calls. /meta typically answers in 6–11 seconds and a viewport screenshot in 4–8, so both fit. Don't add a Lighthouse audit to the same script: it usually takes 15–20 seconds on its own. Send it async instead, with report_to pointing at an automation whose trigger is When webhook received, and labels carrying the record ID.
The screenshot link is valid for 30 days. To keep the image in the base for good, write it to an attachment field instead — Screenshot: [{ url: … }] — and Airtable copies the file into its own storage.
Limits
What it costs, and what it doesn't do
- Each record costs 6 credits: 5 for metadata and 1 for the screenshot. A URL that appears in two records inside seven days is a free cache hit the second time.
- Importing a thousand rows at once triggers a thousand runs. The API allows 60 requests a minute per project, so some runs will fail with
rate_limited; re-run those, or import in smaller batches. - This is a script in your base, not a marketplace extension.
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 - Screenshot any website from its URL
Paste a link and get a full-page PNG of the rendered page — JavaScript executed, exactly as a real browser would draw it. Great for previews, monitoring and visual QA.
Try it free
FAQ
Frequently asked questions
Where do I store the URLpipe key in Airtable?
Can the script run a Lighthouse audit too?
How long does the screenshot link work?
What does the metadata call return?
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.