Giphy Scraper (keyless)
Pricing
from $1.00 / 1,000 results
Giphy Scraper (keyless)
No API key needed. Scrape Giphy's official API: search, trending, stickers, clips, emoji, translate, random, by-id, categories. Deep pagination, direct GIF/WebP/MP4 download, optional user API key override.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
subimpact
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
Keyless Giphy Scraper
Scrape GIFs, stickers, clips and emoji from the official Giphy public API — no API key required.
Why keyless?
Giphy's public API officially requires a user API key: beta keys are rate-limited
(~100 calls/hour) and production keys need human review + paid pricing. This actor
reuses the same public web-client key that Giphy's own website embeds, so plain HTTP
calls work with no key, no browser, no proxy, no rate limiting. Users who have
their own key can override via the apiKey input (or GIPHY_API_KEY env var).
Modes
| mode | endpoint | input |
|---|---|---|
search | /v1/gifs/search (+ /v1/stickers/search, /v1/clips/search opt-in) | searchTerms[] |
trending | /v1/gifs/trending + /v1/stickers/trending | — |
byIds | /v1/gifs?ids= | gifIds[] |
random | /v1/gifs/random | randomTags[] |
translate | /v1/gifs/translate | translateText |
categories | /v1/gifs/categories | — |
emoji | /v1/emoji | — |
Search mode hits /v1/stickers/search for each term by default (includeStickers),
and /v1/clips/search when includeClips is on. Clips carry mp4_720 variants.
Inputs
mode— endpoint to hit (defaultsearch)searchTerms[]— one API call per term (default["funny cat"])gifIds[],randomTags[],translateText— mode-specific payloadslimit— items per term/call, hard-capped at 150 by the API (200+ returns empty)offset— pagination start (deepPaginationwalksoffset += limituntil an empty page orlimit*3pages, because Giphy deep pagination dies silently around ~250)rating(g/pg/pg-13/r),langdownloadMedia— download each file (GIF/WebP/MP4) into the run's default key-value store; records getlocalFilePath+kvsUrl(https://api.apify.com/v2/key-value-stores/{storeId}/records/{key})downloadFormat—preview(preview_gif),downsized,original(defaultpreview)maxDownloadSizeMb— skip files larger than this (checked againstimages[].size)
Output record
giphyId, gifType (gif/sticker/clip/emoji/category), url, gifTitle, altText, username,
userDisplayName, userVerified, userAvatarUrl, rating, source, tags[],
createDatetime, trendingDatetime, embedUrl, bitlyUrl,
variantUrls.{preview,downsized,original,mp4} (url + size + width + height; empty
variants kept as {url:""}), optional searchTerm, and localFilePath/kvsUrl
when media download is enabled.
Robustness
- 20 s per-request timeout, up to 3 retries with exponential backoff on 5xx/429/network errors
- Hard stop with a clear error if the key is rejected twice (401/403) — suggests the
apiKeyinput in case Giphy rotates the embedded key - Empty
dataarrays andmeta.status != 200are logged and skipped, never fatal - Non-200 media downloads are skipped without killing the run
Local development
python -m venv .venv && . .venv/bin/activatepip install -r requirements.txtpython -m pytest tests/ -v # live-network tests (real API, default key)apify push # push a new PRIVATE build