Link Preview Scraper — TikTok, X, Instagram, Pinterest & More avatar

Link Preview Scraper — TikTok, X, Instagram, Pinterest & More

Pricing

from $1.20 / 1,000 preview extracteds

Go to Apify Store
Link Preview Scraper — TikTok, X, Instagram, Pinterest & More

Link Preview Scraper — TikTok, X, Instagram, Pinterest & More

Get title, description, image, favicon and site name for any URL, with dedicated extractors for TikTok, X, Instagram, Threads, Pinterest, Facebook, Reddit, Etsy and YouTube. You only pay for previews that worked.

Pricing

from $1.20 / 1,000 preview extracteds

Rating

0.0

(0)

Developer

kelvin lab

kelvin lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Categories

Share

Turn any list of URLs into link previews: title, description, image, favicon and site name, the same card a chat app shows when you paste a link. It works as a bulk Open Graph scraper and URL metadata extractor for any website, and it also reads the social links that generic scrapers get wrong.

Most Open Graph scrapers fail on social links. They get a login wall, an empty app shell or a generic "TikTok – Make Your Day". This Actor has dedicated extractors for TikTok, X (Twitter), Instagram, Threads, Pinterest, Facebook, Reddit, Etsy and YouTube, plus Wikipedia. It only charges for previews that worked.

  • Real previews for social links. Each platform has its own extractor. For example, you get the TikTok caption and cover, the text of an X post, the real Pinterest pin title instead of a keyword list, and the Reddit post title instead of "From the r/... community".
  • Pay only for results. Failed URLs, login walls, bot-challenge pages, title-only results, invalid URLs and duplicates are free. Each row says if it was charged and why not.
  • Fast and light. No browser. 100 mixed URLs take about 15–25 seconds on the default 1 GB of memory.
  • Clear quality flags. Every row has quality (full, partial, weak or fallback) and an error message when something went wrong, so you can filter before you show a card.

What you can use it for

  • Show rich link cards (link unfurling) in your app, CMS, newsletter or chat bot.
  • Enrich a spreadsheet of links (bookmarks, social mentions, product links) with titles, descriptions and images.
  • Get the og:image, og:title and og:description of many pages at once.
  • Check which pages expose usable Open Graph and Twitter Card tags.

Supported platforms

PlatformWhat you getNotes
Any websiteOpen Graph, Twitter Card, JSON-LD and HTML tagsRetried as the link-preview bots of Google, Facebook and LinkedIn when a site blocks normal browsers. App shells that show homepage tags on every page are detected and not charged.
YouTubeVideos, Shorts, playlists (including Mix/Radio) and channelsOfficial oEmbed
TikTokVideos, photo posts and vm.tiktok.com short links: caption, cover image, authorProfiles return the creator name; the avatar is not always available.
X / TwitterPosts (also long-form articles) with author and media image; profiles with name, bio and avatar
InstagramProfiles (name, avatar, follower counts), posts and reels with the caption kept intactInstagram refuses many data-center IP addresses. A refused page is retried through up to six new Apify Proxy sessions, each from another IP, at no extra cost to you. Rows that still fail are free and say so in error.
ThreadsPosts and profilesRetried like Instagram when refused. Posts that are hidden from logged-out visitors are flagged restricted and not charged.
PinterestPins and pin.it short links, with the real pin title; boards and profiles
FacebookPublic pages, posts, videos and share linksFacebook often redirects data-center IP addresses to its login page. Results vary from run to run; failed rows are free.
RedditPosts and subreddits
EtsyListings, shops, categories and etsy.me short linksEtsy sometimes shows a bot-challenge page; those rows are free.
WikipediaArticles in any language: lead paragraph and lead imageWikipedia pages have no meta description; this Actor reads the article summary.

Input

FieldDescription
urlsThe pages to preview. A bare domain like github.com gets https://. Duplicates are fetched and charged once.
maxUrlsStop after this many unique URLs (default 1,000, maximum 10,000).
maxConcurrencyURLs fetched at the same time (default 5, maximum 20).
timeoutSecsTime limit per URL (default 15 s, 5–30 s). A URL that times out is not charged.
proxyConfigurationOptional Apify datacenter proxy or your own proxy URLs, used for every request. Residential proxy is not supported. Without it, only Instagram and Threads pages that refuse the run's IP go through Apify datacenter proxy.
linkPreviewApiKeyOptional key for linkpreview.net, used as a last resort when a site blocks every direct request. LinkPreview bills its usage to your key.
{
"urls": [
"https://github.com/apify/crawlee",
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://x.com/jack/status/20",
"https://www.tiktok.com/@scout2015/video/6718335390845095173",
"https://www.pinterest.com/pin/99360735500167749/",
"https://en.wikipedia.org/wiki/Open_Graph_protocol"
]
}

Output

One row per unique URL:

{
"inputUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"description": "By Rick Astley",
"image": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg",
"favicon": "https://www.youtube.com/favicon.ico",
"siteName": "YouTube",
"platform": "youtube",
"source": "youtube-oembed",
"quality": "full",
"billable": true,
"notChargedReason": null,
"error": null,
"fetchedAt": "2026-10-19T13:32:47.915Z"
}
  • platform: web, youtube, tiktok, x, reddit, facebook, instagram, threads, whatsapp, pinterest or etsy. Wikipedia articles are web.
  • source: which extractor produced the row, for example open-graph-scraper, tiktok-embed, fxtwitter or wikipedia-summary.
  • quality: full (image and description), partial (one of them), weak (title only) or fallback (nothing usable).
  • billable: whether the row was charged. notChargedReason says why not: fallback, restricted, challenge-page, title-only, site-shell, redirected-to-homepage or invalid-url.
  • error: why no preview could be extracted, e.g. 403 Forbidden or Instagram returned a login page (IP blocked).
  • Image URLs from TikTok and Instagram are signed by their CDN and expire after some hours or days. Download them soon if you need to keep them.

You can download the dataset as JSON, CSV, Excel or HTML, or read it through the Apify API. The run's key-value store also has a SUMMARY record with counts per platform.

Pricing

Pay per event. You pay only for previews with billable: true, plus Apify's standard start fee.

EventFree and Starter plansScale planBusiness plan
Preview extracted (rows with billable: true)$0.002 ($2.00 per 1,000)$0.0016 ($1.60 per 1,000)$0.0012 ($1.20 per 1,000)
Actor start$0.00005 per run$0.00005 per run$0.00005 per run

The start fee is charged once per GB of memory, so a run at the default 1 GB pays it once. Failed URLs, login walls, bot-challenge pages, title-only results, invalid URLs and duplicates are free.

To cap your spending, set a maximum cost per run in the run options. The Actor stops cleanly when the cap is reached, and it never charges for a row you cannot see in the dataset.

Memory and speed

  • Default memory is 1 GB, which is the best value. 512 MB also works, but a run takes about twice as long; 2 GB is the maximum.
  • maxConcurrency sets how many URLs are fetched in parallel. The default of 5 handles 100 URLs in about 15–25 seconds.
  • Runs that migrate to another server continue where they stopped. No URL is charged twice.

Limits

  • Only public pages: private, logged-in or age-gated content is not available.
  • Pages are fetched without a browser. A page that builds all of its tags with JavaScript can return a free fallback row.
  • Local network and cloud metadata addresses are always blocked.
  • Only the first 5 MB of a page is read. Preview tags are near the top, so very large pages still work.
  • Platforms change their pages without notice. A temporary drop in success rate is fixed in the Actor, not in your input.

FAQ

How is this different from an Open Graph scraper? For normal websites it reads the same Open Graph and Twitter Card tags. For social platforms, those tags are often missing, generic or behind a login, so this Actor uses each platform's own public endpoints instead.

Do I pay for URLs that fail? No. Only rows with billable: true are charged. The row still appears in the dataset with error and notChargedReason, so you know what happened.

Why did an Instagram profile or a Facebook page fail? Both sites often block data-center IP addresses. Instagram pages are already retried through new proxy IPs; if all of them are refused, the row is free. You can run the failed URLs again later or pass your own proxy in proxyConfiguration.

Can I call it from my app? Yes. Use the Apify API or one of the Apify clients to start a run with a list of URLs, then read the dataset. For one or a few URLs, the "run synchronously and get dataset items" endpoint returns the previews in a single request.