VOOZH about

URL: https://apify.com/crawlerbros/gif-scroll-animation

โ‡ฑ GIF Scroll Animation ยท Apify


Pricing

from $1.00 / 1,000 results

Go to Apify Store

GIF Scroll Animation

Generate an animated GIF that scrolls down a webpage.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

๐Ÿ‘ Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

2 months ago

Last modified

Share

Generate an animated GIF that scrolls down a webpage. The actor opens the URL in a headless Chromium browser, captures one frame per scroll step, then assembles the frames into a GIF using Pillow. The GIF is saved to the run's key-value store; a companion record with metadata + a public GIF URL is pushed to the dataset.

What it does

You provide a webpage URL; the actor:

  1. Renders the page in headless Chromium at the configured viewport size.
  2. Scrolls the page in scrollStepPx-sized increments, capturing a screenshot per step (up to maxFrames).
  3. Optionally downscales each frame, then encodes them as a single GIF with Pillow.
  4. Writes the GIF binary to the key-value store under output.gif.
  5. Pushes one dataset record with {url, gifUrl, frameCount, width, height, fileSizeBytes, frameDelayMs, scrapedAt}.

Input

FieldTypeDefaultDescription
urlstring (required)https://apify.comPage to capture. Must start with http:// or https://.
viewportWidthinteger1280 (320โ€“2560)Browser viewport width in pixels.
viewportHeightinteger720 (240โ€“1440)Browser viewport height in pixels.
scrollStepPxinteger250 (50โ€“2000)Pixels to scroll between captured frames. Smaller values โ†’ smoother animation but more frames.
frameDelayMsinteger200 (50โ€“5000)Per-frame delay encoded into the GIF.
maxFramesinteger60 (2โ€“300)Hard cap on captured frames so very tall pages don't run forever.
downscaleFactorinteger2 (1โ€“8)Resize each frame down by this integer factor before encoding. 1 = full resolution, 2 = half, 4 = quarter. Lower = sharper but bigger GIF.
cookieWindowSelectorstring (optional)โ€“CSS selector of a cookie-consent dismiss button (e.g. button#accept-all). Clicked after page load so the consent banner doesn't appear in every frame.
waitToLoadPageMsinteger0 (0โ€“30000)Extra wait (ms) after networkidle for async-loaded content (lazy images, animations) to settle before capture starts.

Example input

{
"url":"https://apify.com",
"viewportWidth":1280,
"viewportHeight":720,
"scrollStepPx":250,
"frameDelayMs":200,
"maxFrames":40,
"downscaleFactor":2
}

Output

The dataset receives a single record per run:

{
"url":"https://apify.com",
"gifUrl":"https://api.apify.com/v2/key-value-stores/<kvs-id>/records/output.gif",
"frameCount":28,
"width":640,
"height":360,
"aspectRatio":1.778,
"fileSizeBytes":482113,
"frameDelayMs":200,
"durationMs":5600,
"scrapedAt":"2026-04-26T14:23:11+00:00"
}

The GIF binary itself is stored under key output.gif in the run's default key-value store and is reachable at the public gifUrl shown above.

Output fields

  • url โ€” the source URL captured.
  • gifUrl โ€” public URL pointing to the rendered GIF in the key-value store.
  • frameCount โ€” how many frames were captured before reaching the bottom or maxFrames.
  • width / height โ€” final GIF dimensions in pixels (after downscaleFactor).
  • aspectRatio โ€” derived: width / height rounded to 3 decimal places.
  • fileSizeBytes โ€” encoded GIF size in bytes.
  • frameDelayMs โ€” per-frame delay used in the GIF.
  • durationMs โ€” derived: frameDelayMs * frameCount โ€” total GIF duration in milliseconds.
  • scrapedAt โ€” ISO-8601 UTC timestamp.

Use cases

  • Marketing previews โ€” generate a quick animated preview of a landing page for social media, slack messages, or PR demos.
  • Scroll-test recording โ€” visualise long pages for accessibility / visual-regression review.
  • Documentation screenshots โ€” capture a page-tour as a single embeddable GIF instead of multiple stills.
  • Visual diffs โ€” re-run on the same URL across deploys to compare scroll appearance over time.

FAQ

Does it need a proxy? No โ€” the actor uses the run's default network. If you need to capture a page that's geo- or IP-restricted, configure proxy at the run level via Apify's run-options panel.

How big can the GIF get? Pillow uses optimised palette quantisation and disposal=2 to keep frames small, but a 30-frame full-1280ร—720 capture is still ~8โ€“12 MB. Use downscaleFactor: 2 (default) to roughly quarter the size.

Why does the GIF stop early?

  • Reached the bottom of the page (scrollY + viewportHeight >= scrollHeight).
  • Hit maxFrames. Increase the limit if you have a very tall page.

Why isn't it perfectly smooth? GIF can only encode 1ร—, 2ร—, 5ร—, 10ร— hundredths-of-a-second, and Pillow rounds to the nearest. For motion-graphics quality, render to MP4 instead (this actor doesn't do video).

How do I get just the GIF without the dataset record? Run the actor and download output.gif from the run's key-value store (the URL is in the dataset record's gifUrl).

The page didn't render โ€” what happened? Some pages block headless Chromium with bot challenges. The actor emits a sentinel record {type: "gif_scroll_error", reason: "capture_failed", ...} rather than crashing. Try the page in a normal browser first to confirm it isn't paywalled or geo-blocked.

You might also like

GIF Scroll Animation

glenn/gif-scroll-animation

Free tool to automatically create an animated GIF of any scrolling web page. Useful for testing UX, showcasing your work, and capturing any website as a GIF, including clickable elements and animations. Includes settings to adjust speed, wait before scrolling, slow down on-page animations, and more.

๐Ÿ‘ User avatar

Glenn Goossens

5.4K

2.0

Giphy Api

alizarin_refrigerator-owner/giphy-api

Access the world's largest GIF library through the official Giphy API. Search millions of GIFs and stickers, get trending content, translate text to the perfect GIF, fetch random GIFs, and search animated emoji.

Website GIF Generator

powerful_bachelor/website-gif-generator

๐ŸŽฅ Website GIF Generator: Capture dynamic, high-quality GIFs of any website with automated scrolling! ๐Ÿš€ Features timestamps, customizable quality, and batch processing. Perfect for demos, documentation, and marketing. Transform web experiences into engaging visuals with just a URL! โœจ

๐Ÿ‘ User avatar

Powerful Bachelor

53

Web Images Scraper

jupri/web-images-scraper

Scrape Images from a Webpage

Ultimate Screenshot

dz_omar/ultimate-screenshot

๐Ÿš€ Capture ANY website as HD screenshots, videos, or PDFs! ๐Ÿ“ธ 100+ device presets (iPhone, Android, tablets). Perfect for web scraping, monitoring, testing & marketing. Export as PNG/JPEG/PDF/MP4/GIF. Fast, reliable, proxy-ready. Try FREE now!

๐Ÿ‘ User avatar

FlowExtract API

248

5.0

URL to Screenshot

hulkscrape/url-to-screenshot

An easy way to capture a screenshot of a full webpage

Twitter ( X ) Comment Scraper

datapilot/twitter-x-comment-scraper

Twitter/X Comment Scraper is an Apify Actor that extracts replies from a tweet URL using . It captures comment text, user info, likes, retweets, replies, and timestamps. Uses residential proxies, auto-scrolls to load more comments, and outputs clean, structured data.

50

4.0