Link preview / unfurl

Link Preview API

Turn any URL into a rich link preview — title, description, favicon and OG image — in one call. Because rasterly renders the live page, it works on JavaScript sites and falls back to a screenshot when a link ships no OG tags.

GET /v1/extract?url=... returns the page's Open Graph and meta fields as clean JSON — the exact data a Slack unfurl, a CMS embed or a directory listing shows. A plain fetch() misses metadata that SPAs inject client-side; rasterly renders first, so it doesn't.

Try it

request
curl "https://api.rasterly.dev/v1/extract?url=https://vercel.com" \
  -H "X-Api-Key: sk_live_..."
response — application/json
{
  "url": "https://vercel.com",
  "title": "Vercel: Build and deploy the best web experiences",
  "description": "Vercel is the AI cloud to build and deploy...",
  "image": "https://vercel.com/og.png",
  "favicon": "https://vercel.com/favicon.ico",
  "site_name": "Vercel"
}

No OG image on the page? Call /v1/screenshot?url=... on the same URL to generate a preview picture, so every link gets a card — even the ones that ship no tags.

Why rasterly

Link previews break in two places: SPA sites that inject OG tags client-side (a raw HTTP fetch sees nothing), and pages that ship no OG image at all. rasterly renders every URL in a real browser, so it reads the metadata a fetch() misses, and can screenshot the ones with nothing to unfurl. One key covers both, at $0.90 per 1,000 with a 100/mo free tier — SSRF-guarded, so pointing it at localhost or a private range is refused with a 403.

FAQ

How do I generate a link preview from a URL?
Call /v1/extract with the URL. rasterly renders the page, then returns the Open Graph and meta fields as JSON — title, description, image, favicon, site name.
What if a page has no Open Graph tags?
Because rasterly renders the live page, it can fall back to the title, first heading and a screenshot. Call /v1/screenshot on the same URL for a preview image when a link ships no og:image.
Does it render JavaScript, so SPA links work?
Yes — SPAs that inject OG/meta client-side return empty from a plain fetch. rasterly runs a headless browser and waits for render, capturing the metadata a raw request misses.
What does it cost?
100 calls/month free, then from $0.90 per 1,000 — the same engine, whether you want metadata JSON or a screenshot.
Start free — 100 renders Try the live demo