RedGifs Bulk Video Downloader avatar

RedGifs Bulk Video Downloader

Pricing

$9.00 / 1,000 saved videos

Go to Apify Store
RedGifs Bulk Video Downloader

RedGifs Bulk Video Downloader

Process public RedGifs links, iframe URLs, IDs, or one search query in bulk. Get structured video rows with direct MP4 links, source metadata, quality details, and optional hosted file or ZIP data.

Pricing

$9.00 / 1,000 saved videos

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

124

Total users

6

Monthly active users

14 days ago

Last modified

Share

📥 RedGifs bulk video downloader

For developers, researchers, and media teams who need public RedGifs videos in a usable dataset, this Actor turns watch URLs, iframe URLs, raw IDs, or one search query into structured rows. Each saved row can include direct MP4 links, source identity, quality details, and public video metadata. This gives you a repeatable way to review, export, or use video links in an Apify workflow.

📊 RedGifs video data

What you get

Each saved row represents one successfully resolved public RedGifs video. It can include the video ID, canonical and source URLs, title, description, duration, dimensions, audio flag, tags, niches, sexuality labels, thumbnails, poster, creator name, verification flag, views, likes, and publication data.

The row also shows whether it came from a direct target or search, the target type, the submitted target or search position, the requested and selected quality, the reason for the selection, the selected source link, and all available MP4 formats. Optional file and zipFile objects contain hosted file details when those fields are present.

First match only

If the same public video appears again through another URL, ID, or search result, the Actor saves the first eligible occurrence and ignores later copies. The saved row keeps the target or search context from that first match.

You can open the dataset in Apify, export it as JSON, CSV, Excel, XML, RSS, or HTML, call it from the Apify API, schedule recurring runs, or connect the output to webhooks and downstream tools.

▶️ Run a RedGifs batch

Steps

  1. Add public RedGifs watch URLs, iframe URLs, or raw video IDs in RedGifs URLs or IDs.
  2. Add one optional Search query. Use a separate run for each search query.
  3. Choose Preferred quality: best, hd, sd, or silent.
  4. Set Maximum results to limit the total number of saved videos. Leave it empty to save all available results until the sources are exhausted.
  5. Start the Actor, open the output dataset, and use directVideoUrl for the source link or downloadUrl for the row's best download link.

Only public, reachable RedGifs media is in scope. Private, deleted, unavailable, and login-only media is outside the product.

⚙️ Input

Input fields

FieldTypeWhat it does
targetsarray of stringsAdds one public RedGifs watch URL, iframe URL, or raw video ID per row.
searchQuerystringFinds matching public videos with one query for the run. Use a separate run for each query.
preferredQualitystringChooses best, hd, sd, or silent. If the preferred quality is unavailable, the output explains the available choice.
maxItemsintegerLimits total saved results across direct targets and search. Leave it empty to process all available results until the sources are exhausted.

Example input

This is the public input used by a successful current-beta default-input run.

{
"targets": [
"https://www.redgifs.com/watch/seashellverifiablenorwaylobster",
"welllitfavorablefulmar"
],
"searchQuery": "funny",
"preferredQuality": "best",
"maxItems": 10
}

The sample target list and search query are useful for a first run. Clear Maximum results when you want all available results until the sources are exhausted.

🧾 Output

Open the output dataset to inspect saved rows. Direct-target and search rows share the same base shape. Rows with hosted files add file, and rows with a hosted ZIP add both file and zipFile.

Dataset access

FieldTypeWhat it does
resultslink stringOpens the saved video rows in the default dataset overview.

Direct-link and search row

Nullable fields can be empty when RedGifs does not expose the value.

FieldTypeWhat it does
idstringStable RedGifs video ID.
rowOriginstringSays whether the first saved match came from a direct target or a search result.
inputstring or nullOriginal URL or ID submitted for a direct target, or null for a search result.
inputIndexinteger or nullZero-based position of the direct target, or null for a search result.
searchQuerystring or nullSearch text that produced the row, or null for a direct target.
searchPositioninteger or nullOne-based position in search results, or null for a direct target.
targetTypestringNormalized source type: watchUrl, iframeUrl, rawId, or searchResult.
canonicalUrlstringCanonical public RedGifs watch page.
sourceUrlstringSource URL used to fetch the public video data.
titlestring or nullVideo title when RedGifs provides one.
descriptionstring or nullPublic video description when available.
durationSecondsnumber or nullVideo duration in seconds.
widthinteger or nullVideo width in pixels.
heightinteger or nullVideo height in pixels.
hasAudioboolean or nullWhether RedGifs marks the video as having audio.
tagsarray of stringsPublic RedGifs tags.
nichesarray of stringsPublic RedGifs niche labels.
sexualityarray of stringsPublic RedGifs sexuality labels.
thumbnailUrlstring or nullThumbnail image URL when available.
posterUrlstring or nullPoster image URL when available.
requestedQualitystringQuality preference from the input.
selectedQualitystringQuality used for the direct video link.
selectedQualityReasonstringPlain-English reason for the selected quality or fallback.
downloadUrlstringBest source link for this row.
directVideoUrlstringDirect source-hosted RedGifs MP4 link.
availableFormatsarray of objectsAll source-exposed MP4 formats for the video.
availableFormats[].qualitystringQuality label for the format: hd, sd, or silent.
availableFormats[].urlstringDirect MP4 URL for the format.
availableFormats[].mimeTypestringMedia type for the format.
userNamestring or nullPublic RedGifs username when available.
verifiedboolean or nullWhether RedGifs marks the user as verified.
viewsinteger or nullPublic view count when available.
likesinteger or nullPublic like count when available.
publishedboolean or nullWhether RedGifs marks the video as published.
createdAtstring or nullSource creation timestamp when available.

Direct-link example

This is a genuine row from current beta build 1.0.2. It shows a raw ID resolved to a public video with source MP4 links.

{
"rowOrigin": "directTarget",
"inputIndex": 0,
"input": "potablepassionatebovine",
"searchQuery": null,
"searchPosition": null,
"targetType": "rawId",
"id": "potablepassionatebovine",
"canonicalUrl": "https://www.redgifs.com/watch/potablepassionatebovine",
"sourceUrl": "https://www.redgifs.com/ifr/potablepassionatebovine",
"title": "Barely Legal Big Tits Busty College Exposed Nude Nudes Pawg TikTok White Girl Porn GIF by darkshogunate",
"description": null,
"durationSeconds": 60.033,
"width": 1080,
"height": 1920,
"hasAudio": true,
"tags": [
"Barely Legal",
"Big Tits",
"Busty",
"College",
"Exposed",
"Nude",
"Nudes",
"Pawg",
"TikTok",
"White Girl"
],
"niches": [
"bigger-than-you-thought",
"curvy-chicks",
"pale-girls",
"phat-ass-white-girls",
"tik-tok"
],
"sexuality": [
"straight"
],
"thumbnailUrl": "https://media.redgifs.com/PotablePassionateBovine-mobile.jpg",
"posterUrl": "https://media.redgifs.com/PotablePassionateBovine-poster.jpg",
"selectedQuality": "hd",
"requestedQuality": "best",
"selectedQualityReason": "Best available selected HD.",
"downloadUrl": "https://media.redgifs.com/PotablePassionateBovine.mp4",
"directVideoUrl": "https://media.redgifs.com/PotablePassionateBovine.mp4",
"availableFormats": [
{
"quality": "hd",
"url": "https://media.redgifs.com/PotablePassionateBovine.mp4",
"mimeType": "video/mp4"
},
{
"quality": "sd",
"url": "https://media.redgifs.com/PotablePassionateBovine-mobile.mp4",
"mimeType": "video/mp4"
},
{
"quality": "silent",
"url": "https://media.redgifs.com/PotablePassionateBovine-silent.mp4",
"mimeType": "video/mp4"
}
],
"userName": "darkshogunate",
"verified": false,
"views": 309438,
"likes": 1821,
"published": true,
"createdAt": "2026-09-12T09:06:00.000Z"
}

Hosted-file row

When a row has hosted file details, its complete shape includes every base field above plus these fields.

FieldTypeWhat it does
idstringStable RedGifs video ID.
rowOriginstringSays whether the first saved match came from a direct target or a search result.
inputstring or nullOriginal URL or ID submitted for a direct target, or null for a search result.
inputIndexinteger or nullZero-based position of the direct target, or null for a search result.
searchQuerystring or nullSearch text that produced the row, or null for a direct target.
searchPositioninteger or nullOne-based position in search results, or null for a direct target.
targetTypestringNormalized source type: watchUrl, iframeUrl, rawId, or searchResult.
canonicalUrlstringCanonical public RedGifs watch page.
sourceUrlstringSource URL used to fetch the public video data.
titlestring or nullVideo title when RedGifs provides one.
descriptionstring or nullPublic video description when available.
durationSecondsnumber or nullVideo duration in seconds.
widthinteger or nullVideo width in pixels.
heightinteger or nullVideo height in pixels.
hasAudioboolean or nullWhether RedGifs marks the video as having audio.
tagsarray of stringsPublic RedGifs tags.
nichesarray of stringsPublic RedGifs niche labels.
sexualityarray of stringsPublic RedGifs sexuality labels.
thumbnailUrlstring or nullThumbnail image URL when available.
posterUrlstring or nullPoster image URL when available.
requestedQualitystringQuality preference from the input.
selectedQualitystringQuality used for the direct video link.
selectedQualityReasonstringPlain-English reason for the selected quality or fallback.
downloadUrlstringBest link for the row. With a hosted file, this is the hosted file link.
directVideoUrlstringDirect source-hosted RedGifs MP4 link.
availableFormatsarray of objectsAll source-exposed MP4 formats for the video.
availableFormats[].qualitystringQuality label for the format: hd, sd, or silent.
availableFormats[].urlstringDirect MP4 URL for the format.
availableFormats[].mimeTypestringMedia type for the format.
userNamestring or nullPublic RedGifs username when available.
verifiedboolean or nullWhether RedGifs marks the user as verified.
viewsinteger or nullPublic view count when available.
likesinteger or nullPublic like count when available.
publishedboolean or nullWhether RedGifs marks the video as published.
createdAtstring or nullSource creation timestamp when available.
fileobjectHosted file details for this row.
file.storageKeystringApify storage key for the hosted file.
file.downloadUrlstringLink for downloading the hosted file.
file.contentTypestring or nullMedia type of the hosted file when available.
file.fileSizeBytesintegerHosted file size in bytes.

Hosted-file example

This is a genuine row from current beta build 1.0.2 with hosted file details.

{
"rowOrigin": "directTarget",
"inputIndex": 0,
"input": "https://www.redgifs.com/watch/seashellverifiablenorwaylobster",
"searchQuery": null,
"searchPosition": null,
"targetType": "watchUrl",
"id": "seashellverifiablenorwaylobster",
"canonicalUrl": "https://www.redgifs.com/watch/seashellverifiablenorwaylobster",
"sourceUrl": "https://www.redgifs.com/ifr/seashellverifiablenorwaylobster",
"title": "Amateur OnlyFans Teen Porn GIF by embermoccha",
"description": null,
"durationSeconds": 6.433,
"width": 1080,
"height": 2068,
"hasAudio": true,
"tags": [
"Amateur",
"OnlyFans",
"Teen"
],
"niches": [],
"sexuality": [
"straight"
],
"thumbnailUrl": "https://media.redgifs.com/SeashellVerifiableNorwaylobster-mobile.jpg",
"posterUrl": "https://media.redgifs.com/SeashellVerifiableNorwaylobster-poster.jpg",
"selectedQuality": "hd",
"requestedQuality": "best",
"selectedQualityReason": "Best available selected HD.",
"downloadUrl": "https://api.apify.com/v2/key-value-stores/fr59vXQYYCj9yFHli/records/redgifs-seashellverifiablenorwaylobster-hd.mp4?disableContentDisposition=true",
"directVideoUrl": "https://media.redgifs.com/SeashellVerifiableNorwaylobster.mp4",
"availableFormats": [
{
"quality": "hd",
"url": "https://media.redgifs.com/SeashellVerifiableNorwaylobster.mp4",
"mimeType": "video/mp4"
},
{
"quality": "sd",
"url": "https://media.redgifs.com/SeashellVerifiableNorwaylobster-mobile.mp4",
"mimeType": "video/mp4"
},
{
"quality": "silent",
"url": "https://media.redgifs.com/SeashellVerifiableNorwaylobster-silent.mp4",
"mimeType": "video/mp4"
}
],
"userName": "embermoccha",
"verified": false,
"views": 3096,
"likes": 0,
"published": true,
"createdAt": "2026-05-09T14:22:03.000Z",
"file": {
"storageKey": "redgifs-seashellverifiablenorwaylobster-hd.mp4",
"downloadUrl": "https://api.apify.com/v2/key-value-stores/fr59vXQYYCj9yFHli/records/redgifs-seashellverifiablenorwaylobster-hd.mp4?disableContentDisposition=true",
"contentType": "video/mp4",
"fileSizeBytes": 5110596
}
}

Hosted ZIP row

When a hosted ZIP is present, its complete shape includes every base field, every file field, and these additional fields.

FieldTypeWhat it does
idstringStable RedGifs video ID.
rowOriginstringSays whether the first saved match came from a direct target or a search result.
inputstring or nullOriginal URL or ID submitted for a direct target, or null for a search result.
inputIndexinteger or nullZero-based position of the direct target, or null for a search result.
searchQuerystring or nullSearch text that produced the row, or null for a direct target.
searchPositioninteger or nullOne-based position in search results, or null for a direct target.
targetTypestringNormalized source type: watchUrl, iframeUrl, rawId, or searchResult.
canonicalUrlstringCanonical public RedGifs watch page.
sourceUrlstringSource URL used to fetch the public video data.
titlestring or nullVideo title when RedGifs provides one.
descriptionstring or nullPublic video description when available.
durationSecondsnumber or nullVideo duration in seconds.
widthinteger or nullVideo width in pixels.
heightinteger or nullVideo height in pixels.
hasAudioboolean or nullWhether RedGifs marks the video as having audio.
tagsarray of stringsPublic RedGifs tags.
nichesarray of stringsPublic RedGifs niche labels.
sexualityarray of stringsPublic RedGifs sexuality labels.
thumbnailUrlstring or nullThumbnail image URL when available.
posterUrlstring or nullPoster image URL when available.
requestedQualitystringQuality preference from the input.
selectedQualitystringQuality used for the direct video link.
selectedQualityReasonstringPlain-English reason for the selected quality or fallback.
downloadUrlstringBest link for the row. With a hosted file, this is the hosted file link.
directVideoUrlstringDirect source-hosted RedGifs MP4 link.
availableFormatsarray of objectsAll source-exposed MP4 formats for the video.
availableFormats[].qualitystringQuality label for the format: hd, sd, or silent.
availableFormats[].urlstringDirect MP4 URL for the format.
availableFormats[].mimeTypestringMedia type for the format.
userNamestring or nullPublic RedGifs username when available.
verifiedboolean or nullWhether RedGifs marks the user as verified.
viewsinteger or nullPublic view count when available.
likesinteger or nullPublic like count when available.
publishedboolean or nullWhether RedGifs marks the video as published.
createdAtstring or nullSource creation timestamp when available.
fileobjectHosted file details for this row.
file.storageKeystringApify storage key for the hosted file.
file.downloadUrlstringLink for downloading the hosted file.
file.contentTypestring or nullMedia type of the hosted file when available.
file.fileSizeBytesintegerHosted file size in bytes.
zipFileobjectHosted ZIP details for the run.
zipFile.storageKeystringApify storage key for the ZIP.
zipFile.downloadUrlstringLink for downloading the ZIP.
zipFile.fileSizeBytesinteger or nullZIP size in bytes when available.

Hosted ZIP example

This is a genuine row from current beta build 1.0.2 with hosted file and ZIP details.

{
"rowOrigin": "directTarget",
"inputIndex": 0,
"input": "https://www.redgifs.com/watch/seashellverifiablenorwaylobster",
"searchQuery": null,
"searchPosition": null,
"targetType": "watchUrl",
"id": "seashellverifiablenorwaylobster",
"canonicalUrl": "https://www.redgifs.com/watch/seashellverifiablenorwaylobster",
"sourceUrl": "https://www.redgifs.com/ifr/seashellverifiablenorwaylobster",
"title": "Amateur OnlyFans Teen Porn GIF by embermoccha",
"description": null,
"durationSeconds": 6.433,
"width": 1080,
"height": 2068,
"hasAudio": true,
"tags": [
"Amateur",
"OnlyFans",
"Teen"
],
"niches": [],
"sexuality": [
"straight"
],
"thumbnailUrl": "https://media.redgifs.com/SeashellVerifiableNorwaylobster-mobile.jpg",
"posterUrl": "https://media.redgifs.com/SeashellVerifiableNorwaylobster-poster.jpg",
"selectedQuality": "hd",
"requestedQuality": "best",
"selectedQualityReason": "Best available selected HD.",
"downloadUrl": "https://api.apify.com/v2/key-value-stores/agxBP1siqLlTwn7tg/records/redgifs-seashellverifiablenorwaylobster-hd.mp4?disableContentDisposition=true",
"directVideoUrl": "https://media.redgifs.com/SeashellVerifiableNorwaylobster.mp4",
"availableFormats": [
{
"quality": "hd",
"url": "https://media.redgifs.com/SeashellVerifiableNorwaylobster.mp4",
"mimeType": "video/mp4"
},
{
"quality": "sd",
"url": "https://media.redgifs.com/SeashellVerifiableNorwaylobster-mobile.mp4",
"mimeType": "video/mp4"
},
{
"quality": "silent",
"url": "https://media.redgifs.com/SeashellVerifiableNorwaylobster-silent.mp4",
"mimeType": "video/mp4"
}
],
"userName": "embermoccha",
"verified": false,
"views": 3096,
"likes": 0,
"published": true,
"createdAt": "2026-05-09T14:22:03.000Z",
"file": {
"storageKey": "redgifs-seashellverifiablenorwaylobster-hd.mp4",
"downloadUrl": "https://api.apify.com/v2/key-value-stores/agxBP1siqLlTwn7tg/records/redgifs-seashellverifiablenorwaylobster-hd.mp4?disableContentDisposition=true",
"contentType": "video/mp4",
"fileSizeBytes": 5110596
},
"zipFile": {
"storageKey": "redgifs-videos-1789457349980.zip",
"downloadUrl": "https://api.apify.com/v2/key-value-stores/agxBP1siqLlTwn7tg/records/redgifs-videos-1789457349980.zip?disableContentDisposition=true",
"fileSizeBytes": null
}
}

💳 Pricing

Charge

This Actor uses pay-per-event pricing. You pay $0.009 for each public video saved to the dataset. A run that saves no video does not create a video charge.

Use Maximum results to set a smaller result count for a test or to limit spend.

🔌 Integrations

Ways to use the data

  • Start runs and read output datasets with the Apify API.
  • Schedule repeat runs for known targets or one search query.
  • Export the dataset as JSON, CSV, Excel, XML, RSS, or HTML.
  • Send run output to webhooks or downstream tools.

❓ FAQ

What happens when the same RedGifs video appears more than once?

The Actor saves the first eligible occurrence and ignores later copies. The row keeps the URL, ID, or search context from that first match.

Can I use a watch URL, iframe URL, or raw ID?

Yes. Add one of those public target types in each targets row. You can combine target types in one run.

Can I use direct targets and a search query together?

Yes. Add one search query with direct targets. Use a separate run for each search query.

What does Maximum results control?

It limits total saved results from direct targets and the search query. Leave it empty to process all available results until the sources are exhausted.

What happens if my preferred quality is not available?

The Actor uses another available quality and writes the reason in selectedQualityReason. availableFormats lists the source formats it found.

directVideoUrl is the source-hosted RedGifs MP4 link. In a standard row, downloadUrl is the best source link. When hosted file details are present, downloadUrl and file.downloadUrl point to the hosted file.

Why is a file or ZIP field missing?

file and zipFile are optional objects. They appear only in rows that include those hosted details. Standard rows still include the source links and metadata.

Do I need a RedGifs account?

No RedGifs account is needed for public videos. The Actor does not bypass private, deleted, unavailable, or login-only media.

Can I use private or deleted videos?

No. The Actor is for public, reachable RedGifs media only.

📝 Changelog

v1.0 (13-09-2026)

  • Remove the run timestamp from saved video rows.
  • Keep normal startup logs focused on the run while preserving warnings and results.
  • Use the public Actor link in the final run log.

v0.2 (10-09-2026)

  • Process all available results when Maximum results is empty.
  • Include titles for direct video targets when RedGifs provides them.
  • Retry temporary RedGifs access failures.
  • Open saved rows in the RedGifs videos overview.

v0.1

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré