Giphy Scraper (keyless) avatar

Giphy Scraper (keyless)

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Giphy Scraper (keyless)

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

subimpact

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

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

modeendpointinput
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/randomrandomTags[]
translate/v1/gifs/translatetranslateText
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 (default search)
  • searchTerms[] — one API call per term (default ["funny cat"])
  • gifIds[], randomTags[], translateText — mode-specific payloads
  • limit — items per term/call, hard-capped at 150 by the API (200+ returns empty)
  • offset — pagination start (deepPagination walks offset += limit until an empty page or limit*3 pages, because Giphy deep pagination dies silently around ~250)
  • rating (g/pg/pg-13/r), lang
  • downloadMedia — download each file (GIF/WebP/MP4) into the run's default key-value store; records get localFilePath + kvsUrl (https://api.apify.com/v2/key-value-stores/{storeId}/records/{key})
  • downloadFormatpreview (preview_gif), downsized, original (default preview)
  • maxDownloadSizeMb — skip files larger than this (checked against images[].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 apiKey input in case Giphy rotates the embedded key
  • Empty data arrays and meta.status != 200 are logged and skipped, never fatal
  • Non-200 media downloads are skipped without killing the run

Local development

python -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt
python -m pytest tests/ -v # live-network tests (real API, default key)
apify push # push a new PRIVATE build