
GIF Scroll Animation
No credit card required

GIF Scroll Animation
No credit card required
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.
You can access the GIF Scroll Animation programmatically from your own applications by using the Apify API. You can choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in Integrations settings in Apify Console.
1{
2 "openapi": "3.0.1",
3 "info": {
4 "version": "0.0",
5 "x-build-id": "q5nrH49RS6XtdLWGM"
6 },
7 "servers": [
8 {
9 "url": "https://api.apify.com/v2"
10 }
11 ],
12 "paths": {
13 "/acts/glenn~gif-scroll-animation/run-sync-get-dataset-items": {
14 "post": {
15 "operationId": "run-sync-get-dataset-items-glenn-gif-scroll-animation",
16 "x-openai-isConsequential": false,
17 "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
18 "tags": [
19 "Run Actor"
20 ],
21 "requestBody": {
22 "required": true,
23 "content": {
24 "application/json": {
25 "schema": {
26 "$ref": "#/components/schemas/inputSchema"
27 }
28 }
29 }
30 },
31 "parameters": [
32 {
33 "name": "token",
34 "in": "query",
35 "required": true,
36 "schema": {
37 "type": "string"
38 },
39 "description": "Enter your Apify token here"
40 }
41 ],
42 "responses": {
43 "200": {
44 "description": "OK"
45 }
46 }
47 }
48 },
49 "/acts/glenn~gif-scroll-animation/runs": {
50 "post": {
51 "operationId": "runs-sync-glenn-gif-scroll-animation",
52 "x-openai-isConsequential": false,
53 "summary": "Executes an Actor and returns information about the initiated run in response.",
54 "tags": [
55 "Run Actor"
56 ],
57 "requestBody": {
58 "required": true,
59 "content": {
60 "application/json": {
61 "schema": {
62 "$ref": "#/components/schemas/inputSchema"
63 }
64 }
65 }
66 },
67 "parameters": [
68 {
69 "name": "token",
70 "in": "query",
71 "required": true,
72 "schema": {
73 "type": "string"
74 },
75 "description": "Enter your Apify token here"
76 }
77 ],
78 "responses": {
79 "200": {
80 "description": "OK",
81 "content": {
82 "application/json": {
83 "schema": {
84 "$ref": "#/components/schemas/runsResponseSchema"
85 }
86 }
87 }
88 }
89 }
90 }
91 },
92 "/acts/glenn~gif-scroll-animation/run-sync": {
93 "post": {
94 "operationId": "run-sync-glenn-gif-scroll-animation",
95 "x-openai-isConsequential": false,
96 "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
97 "tags": [
98 "Run Actor"
99 ],
100 "requestBody": {
101 "required": true,
102 "content": {
103 "application/json": {
104 "schema": {
105 "$ref": "#/components/schemas/inputSchema"
106 }
107 }
108 }
109 },
110 "parameters": [
111 {
112 "name": "token",
113 "in": "query",
114 "required": true,
115 "schema": {
116 "type": "string"
117 },
118 "description": "Enter your Apify token here"
119 }
120 ],
121 "responses": {
122 "200": {
123 "description": "OK"
124 }
125 }
126 }
127 }
128 },
129 "components": {
130 "schemas": {
131 "inputSchema": {
132 "type": "object",
133 "required": [
134 "url",
135 "proxyOptions"
136 ],
137 "properties": {
138 "url": {
139 "title": "Website URL",
140 "type": "string",
141 "description": "Website URL"
142 },
143 "proxyOptions": {
144 "title": "Proxy configuration",
145 "type": "object",
146 "description": "Select proxies to be used by your actor."
147 },
148 "frameRate": {
149 "title": "Frame rate",
150 "type": "integer",
151 "description": "Number of frames per second (fps)",
152 "default": 7
153 },
154 "scrollDown": {
155 "title": "Scroll down",
156 "type": "boolean",
157 "description": "When selected the actor will scroll down the page and capture it to create the gif.",
158 "default": true
159 },
160 "scrollPercentage": {
161 "title": "Scroll percentage",
162 "type": "integer",
163 "description": "Amount to scroll down determined as a percentage of the vierport height.\n\nFor example, if viewport height is 1000 pixels and scroll percentage is set to 10%.\nThen scroll down by 10% of viewport height: 1000 px = 100 px",
164 "default": 10
165 },
166 "recordingTimeBeforeAction": {
167 "title": "Capture before action",
168 "type": "integer",
169 "description": "Amount of time to capture the screen before doing any action like scrolling down or clicking.",
170 "default": 1000
171 },
172 "clickSelector": {
173 "title": "Click selector",
174 "type": "string",
175 "description": "Used to click an element and record it."
176 },
177 "recordingTimeAfterClick": {
178 "title": "Time to record after click",
179 "type": "integer",
180 "description": "Amount of time to record the screen after clicking an element with the click selector."
181 },
182 "waitToLoadPage": {
183 "title": "Wait to load",
184 "type": "integer",
185 "description": "Set time to wait in the beginning so that page is fully loaded.\nFor example when there is loading bar in the beginning that you don't want in the recording.",
186 "default": 0
187 },
188 "cookieWindowSelector": {
189 "title": "Cookie window selector",
190 "type": "string",
191 "description": "<a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors\" target=\"_blank\">CSS selector</a> for the cookie pop-up window that will be used to remove the element from the DOM."
192 },
193 "slowDownAnimations": {
194 "title": "Slow down animations",
195 "type": "boolean",
196 "description": "When selected it slows down animations on the page so they can be properly captured.",
197 "default": false
198 },
199 "lossyCompression": {
200 "title": "Lossy",
201 "type": "boolean",
202 "description": "Lossy LZW compression of GIF using <a href=\"https://kornel.ski/lossygif/\" target=\"_blank\">Giflossy</a> (part of Gifsicle now).",
203 "default": true
204 },
205 "loslessCompression": {
206 "title": "Losless",
207 "type": "boolean",
208 "description": "Losless compression of GIF using <a href=\"https://www.lcdf.org/gifsicle/\" target=\"_blank\">Gifsicle.</a>",
209 "default": false
210 },
211 "viewportWidth": {
212 "title": "Viewport width",
213 "type": "integer",
214 "description": "Inner width of browser window",
215 "default": 1366
216 },
217 "viewportHeight": {
218 "title": "Viewport height",
219 "type": "integer",
220 "description": "Inner height browser window",
221 "default": 768
222 }
223 }
224 },
225 "runsResponseSchema": {
226 "type": "object",
227 "properties": {
228 "data": {
229 "type": "object",
230 "properties": {
231 "id": {
232 "type": "string"
233 },
234 "actId": {
235 "type": "string"
236 },
237 "userId": {
238 "type": "string"
239 },
240 "startedAt": {
241 "type": "string",
242 "format": "date-time",
243 "example": "2025-01-08T00:00:00.000Z"
244 },
245 "finishedAt": {
246 "type": "string",
247 "format": "date-time",
248 "example": "2025-01-08T00:00:00.000Z"
249 },
250 "status": {
251 "type": "string",
252 "example": "READY"
253 },
254 "meta": {
255 "type": "object",
256 "properties": {
257 "origin": {
258 "type": "string",
259 "example": "API"
260 },
261 "userAgent": {
262 "type": "string"
263 }
264 }
265 },
266 "stats": {
267 "type": "object",
268 "properties": {
269 "inputBodyLen": {
270 "type": "integer",
271 "example": 2000
272 },
273 "rebootCount": {
274 "type": "integer",
275 "example": 0
276 },
277 "restartCount": {
278 "type": "integer",
279 "example": 0
280 },
281 "resurrectCount": {
282 "type": "integer",
283 "example": 0
284 },
285 "computeUnits": {
286 "type": "integer",
287 "example": 0
288 }
289 }
290 },
291 "options": {
292 "type": "object",
293 "properties": {
294 "build": {
295 "type": "string",
296 "example": "latest"
297 },
298 "timeoutSecs": {
299 "type": "integer",
300 "example": 300
301 },
302 "memoryMbytes": {
303 "type": "integer",
304 "example": 1024
305 },
306 "diskMbytes": {
307 "type": "integer",
308 "example": 2048
309 }
310 }
311 },
312 "buildId": {
313 "type": "string"
314 },
315 "defaultKeyValueStoreId": {
316 "type": "string"
317 },
318 "defaultDatasetId": {
319 "type": "string"
320 },
321 "defaultRequestQueueId": {
322 "type": "string"
323 },
324 "buildNumber": {
325 "type": "string",
326 "example": "1.0.0"
327 },
328 "containerUrl": {
329 "type": "string"
330 },
331 "usage": {
332 "type": "object",
333 "properties": {
334 "ACTOR_COMPUTE_UNITS": {
335 "type": "integer",
336 "example": 0
337 },
338 "DATASET_READS": {
339 "type": "integer",
340 "example": 0
341 },
342 "DATASET_WRITES": {
343 "type": "integer",
344 "example": 0
345 },
346 "KEY_VALUE_STORE_READS": {
347 "type": "integer",
348 "example": 0
349 },
350 "KEY_VALUE_STORE_WRITES": {
351 "type": "integer",
352 "example": 1
353 },
354 "KEY_VALUE_STORE_LISTS": {
355 "type": "integer",
356 "example": 0
357 },
358 "REQUEST_QUEUE_READS": {
359 "type": "integer",
360 "example": 0
361 },
362 "REQUEST_QUEUE_WRITES": {
363 "type": "integer",
364 "example": 0
365 },
366 "DATA_TRANSFER_INTERNAL_GBYTES": {
367 "type": "integer",
368 "example": 0
369 },
370 "DATA_TRANSFER_EXTERNAL_GBYTES": {
371 "type": "integer",
372 "example": 0
373 },
374 "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
375 "type": "integer",
376 "example": 0
377 },
378 "PROXY_SERPS": {
379 "type": "integer",
380 "example": 0
381 }
382 }
383 },
384 "usageTotalUsd": {
385 "type": "number",
386 "example": 0.00005
387 },
388 "usageUsd": {
389 "type": "object",
390 "properties": {
391 "ACTOR_COMPUTE_UNITS": {
392 "type": "integer",
393 "example": 0
394 },
395 "DATASET_READS": {
396 "type": "integer",
397 "example": 0
398 },
399 "DATASET_WRITES": {
400 "type": "integer",
401 "example": 0
402 },
403 "KEY_VALUE_STORE_READS": {
404 "type": "integer",
405 "example": 0
406 },
407 "KEY_VALUE_STORE_WRITES": {
408 "type": "number",
409 "example": 0.00005
410 },
411 "KEY_VALUE_STORE_LISTS": {
412 "type": "integer",
413 "example": 0
414 },
415 "REQUEST_QUEUE_READS": {
416 "type": "integer",
417 "example": 0
418 },
419 "REQUEST_QUEUE_WRITES": {
420 "type": "integer",
421 "example": 0
422 },
423 "DATA_TRANSFER_INTERNAL_GBYTES": {
424 "type": "integer",
425 "example": 0
426 },
427 "DATA_TRANSFER_EXTERNAL_GBYTES": {
428 "type": "integer",
429 "example": 0
430 },
431 "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
432 "type": "integer",
433 "example": 0
434 },
435 "PROXY_SERPS": {
436 "type": "integer",
437 "example": 0
438 }
439 }
440 }
441 }
442 }
443 }
444 }
445 }
446 }
447}
Create animated GIFs of any scrolling web page OpenAPI definition
OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for GIF Scroll Animation from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients:
Actor Metrics
69 monthly users
-
22 bookmarks
95% runs succeeded
29 days response time
Created in Jul 2019
Modified 23 days ago