OpenGraph & Link Preview Scraper
Pricing
from $0.01 / 1,000 results
OpenGraph & Link Preview Scraper
Give it any list of URLs and get back the link-preview metadata each page exposes — OpenGraph and Twitter Card tags, title, description, preview image, favicon, canonical URL, site name and type — as clean JSON. Perfect for building rich link previews. No login required.
Pricing
from $0.01 / 1,000 results
Rating
0.0
(0)
Developer
Assia Fadli
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Give it any list of URLs and get back the link-preview metadata each page exposes — the same tags Slack, Discord, iMessage, WhatsApp and Twitter read when they render a rich preview card.
For every URL the actor fetches the page, reads its <head>, and returns one flat JSON row with the OpenGraph and Twitter Card tags, the title, description, preview image, favicon, canonical URL, site name and more. There is nothing to configure — no API key and no login.
Features
- Reads OpenGraph (
og:*) tags first, then falls back to standard<meta>and Twitter Card (twitter:*) equivalents. - Follows redirects and reports the final URL it landed on.
- Resolves relative image, favicon and canonical URLs to absolute URLs.
- Fetches pages concurrently in small batches to stay fast and polite.
- Uses a realistic browser fingerprint (via
got-scraping) so pages that block plain HTTP clients still resolve. - Skips gracefully over unreachable pages — they are recorded with an
errorfield so a single bad URL never stops the run.
Input
| Field | Type | Default | Description |
|---|---|---|---|
urls | array | — | The page URLs to extract link-preview metadata from. |
maxItems | integer | 100 | Maximum number of URLs to scrape. |
Example input
{"urls": ["https://github.com", "https://www.bbc.com/news"],"maxItems": 100}
Output
Each dataset record looks like this:
{"url": "https://github.com","finalUrl": "https://github.com/","title": "GitHub · Build and ship software on a single, collaborative platform","description": "Join the world's most widely adopted, AI-powered developer platform…","image": "https://github.githubassets.com/assets/campaign-social.png","siteName": "GitHub","type": "object","locale": "en","twitterCard": "summary_large_image","twitterSite": "@github","canonicalUrl": "https://github.com/","favicon": "https://github.com/favicon.ico","themeColor": "#1e2327"}
| Field | Description |
|---|---|
url | The URL exactly as requested. |
finalUrl | The URL after following any redirects. |
title | og:title, else the <title> text, else twitter:title. |
description | og:description, else <meta name="description">, else twitter:description. |
image | og:image (else twitter:image), resolved to an absolute URL. |
siteName | og:site_name. |
type | og:type (e.g. website, article). |
locale | og:locale. |
twitterCard | twitter:card. |
twitterSite | twitter:site. |
canonicalUrl | <link rel="canonical">, resolved absolute. |
favicon | Best <link rel="icon">, resolved absolute (falls back to <origin>/favicon.ico). |
themeColor | <meta name="theme-color">. |
Every metadata field is nullable — most pages only expose a subset of these tags.
If a URL can't be fetched (e.g. it times out or returns a non-2xx status), the row is { "url": "<url>", "error": "<message>" } instead.
Pricing
This actor uses the pay-per-event model: you are charged once per link that is successfully fetched and parsed (the link-scraped event). URLs that fail to fetch produce an error row and are never charged.
License
MIT © Assia Fadli