Engineering

How We Built Swipe Collection — and Why It Runs on ScrapeCreators

Swipe Collection is a free, community-ranked library of social ads that people can actually search — by copy, hook, advertiser or niche. Underneath it is a capture pipeline built around one unavoidable constraint: Instagram and TikTok hand you creatives on URLs that expire. Here is how it works, and the ScrapeCreators details that shaped every decision.

  • Zapier
  • mikkellerbeer
  • JetBrains
  • Tandem Health
  • Factorial
  • Shine | Compte Pro · Facturation · Comptabilité
  • Démarquez-vous.
  • Cut Grind, Not Corners - Duda's AI Stack
  • What separates AI doers from stallers.
  • Alan
  • EGIA
The most-kept ads in the collectionOpen the collection

Someone pastes an Instagram post, a TikTok, or a Meta Ad Library link into the web app or the Telegram bot. The pipeline resolves share-sheet indirection links first — instagram.com/share/… and TikTok vm./vt. short links redirect to a canonical URL — then checks whether we already hold that exact ad. If we captured it within the last seven days, we re-link the existing copy and skip the fetch entirely: a re-share costs nothing, and only once engagement has drifted do we pay to refresh it.

When ScrapeCreators returns a post, the media comes back as signed CDN URLs that stop working — Instagram drops them after roughly four and a half days. That kills any naive caching: a cached snapshot is a list of links that mirror into nothing but 403s. Their cache_max_age is an enum — 1d, 3d, 7d, 14d, 30d — and 1d is the only value that fits under that expiry, so that is what we use. It is also why we download every asset into our own storage the moment we capture it: a creative only stays viewable because we copied it, not because anyone's URL is still alive.

There is a second, subtler reason we copy media out of the source. Meta and Instagram serve creatives with a cross-origin resource policy that stops a browser rendering them from a different origin — so even a live URL is not enough. We download the image, the video and the thumbnail into object storage at ingest, guard against assets that come back blank or truncated (a reel will sometimes answer as a white ~600-byte JPEG), and serve everything from our own origin. An ad that fails to download is still kept — the capture is worth more than the tile.

After an ad is stored, we classify it — niche, markets, topics, visual style, a one-line scene — and embed it for semantic search. That runs on a vision model, so it is deliberately not a gate: a classification outage must never fail someone's save. Untagged ads are simply swept up in the next batch. The result is a library you can ask what an ad is selling and who runs it, rather than one you can only scroll.

The API underneath: ScrapeCreatorsscrapecreators.com

Free, no card. Create an account, then link Telegram in one tap — that is the whole setup.

Keep reading