Ad inspiration
What this is
Ad inspiration is where you collect external ad references for creative research. Search the Meta Ad Library or TikTok, review the results, and save useful examples to your library. Start with a keyword or the source details you already have.
Common questions
Which sources can I search?
Use the Meta Ad Library tab or the TikTok tab. Each tab searches its own source.
How can I narrow a Meta search?
Search by keyword or Facebook page URL, then set the country, media type, active status, and number of ads to return.
Can I save an ad for later?
Yes. Use the save control on an ad card. Saved items are kept separately for each source.
What does the maximum ad count do?
It limits how many ads the search returns. The default is 40.
Does running a search cost anything?
Each search runs a paid job behind the scenes. Keeping the maximum ad count low keeps the cost of each search down.
How to use it
- Choose Meta Ad Library or TikTok.
- Enter your search terms or source details and set the available filters.
- Run the search and review the ad cards.
- Open a source ad when you need more context, or save it to your library for later.
Screenshot

For developers — routes, guards, and internals
- Route:
/inspiration - Guard: authenticated session +
view_creative_labpermission +flag.enable_ad_inspirationplatform flag (src/app/inspiration/layout.tsx). No session →/login?callbackUrl=/inspiration, missing permission →/portal, flag off →/marketing. Scrape APIs are fail-closed on a missingAPIFY_TOKEN.
Competitive-research surface — the V2 port of legacy Launchpad's
/ad-inspiration + /meta-inspiration pages. Pulls live competitor ads from
the Meta Ad Library and TikTok via Apify actors. Capture shows the initial
state (no scrape executed).
Features
- Two tabs: Meta Ad Library / TikTok. Tab strip at the top switches
between the two source panes; each pane posts to its own API route
(
/api/inspiration/meta,/api/inspiration/tiktok). - Meta pane inputs. Free-text keyword OR a newline-separated list of
Facebook page URLs; 2-letter country code (uppercased, default
US); media typeALL | IMAGE | VIDEO | MEME; active statusactive | inactive | all; max-ads count (default 40). These map 1:1 onto the scrape request body (country,media_type,active_status,max_ads). - TikTok pane. Equivalent controls targeting TikTok's Creative Center /
Ads Library sources via
/api/inspiration/tiktok. A separate/api/inspiration/tiktok/creative-center-cookieroute exists for supplying the Creative Center session cookie the scraper needs. UNVERIFIED: exact TikTok pane field set not re-checked against the component beyond the tab and endpoints. - Result grid with proxied images. Ad cards render creative thumbnails
through
/api/inspiration/proxy-image?url=...— every external Meta/TikTok CDN asset is routed through this same-origin proxy so the browser never hitsfbcdn.net/tiktokcdn.comdirectly (avoids CORS and hotlink blocking); already-relative URLs are passed through untouched. Cards link out to the source platform. - Save-to-library toggle. Per-card save keyed by
apify_item_id, with separate collections per source:POST /api/inspiration/meta/saves/POST /api/inspiration/tiktok/saves, unsave viaDELETE ...?apify_item_id=..., item management via the[id]routes. Saved/saving state is tracked client-side per session. - Server-side token. All Apify calls run in the route handlers; the
APIFY_TOKENnever ships to the browser, and the routes error explicitly when it is unset rather than returning fake data. - App chrome. Shared
AdminSidebarShell, grouped with the Creative Studio surfaces under theview_creative_labpermission; the nav entry follows the flag viagetDisabledSidebarFlags. - Session-local save state. Like the Reddit page, saved/saving flags live
in component state keyed by
apify_item_id(useSaveshook, one instance per source endpoint); the library rows persist server-side but the toggles reset on reload. - Cost note for the client. Each scrape runs a paid Apify actor job under the platform token; the max-ads input (default 40) bounds per-search cost.
Key files
| Kind | Path |
|---|---|
| Layout guard | src/app/inspiration/layout.tsx |
| Page | src/app/inspiration/page.tsx |
| View | src/components/inspiration/InspirationView.tsx |
| API | /api/inspiration/meta, /api/inspiration/meta/saves, /api/inspiration/tiktok, /api/inspiration/tiktok/saves, /api/inspiration/tiktok/creative-center-cookie, /api/inspiration/proxy-image |