CA

Competitive Ads

First account to register becomes the admin. Everyone else waits for approval.

Minimum 8 characters for new accounts.

⏳

Waiting for approval

Your account is registered. The admin has to approve it before you can run analyses.
CA
Competitive AdsAd Library console

Dashboard

Run competitor analyses and browse your reports.
Your runs
–
Last run
–
Ads analyzed
–

New analysis

Non-EU codes (GB, IN) often return only political ads — use IE, NL, or EU for all 27 states.

Past runsYour runs only.

  • None yet.

Check what your competitors are running.

Name a run, add competitors (names, Facebook URLs, domains, or page IDs), and hit Run — you'll get their most-repeated hooks, offer structures, CTA styles, and the emotional angles nobody in your market is using. Every run is saved to your account and downloadable as a PDF.

Download PDF report Markdown Hooks CSV Raw ads JSON View in browser

Angle mapThe 10 emotional angles, sized by competitor usage — green territory is yours to test.

Saturated — 2+ competitors Contested — one owner Open — click for hooks to test

Top hooksFrequency counts folded-in near-duplicate variants.

#Representative hookTypeFreqUsed by

Hook types

Offer matrixVariant-weighted ad counts per offer pattern.

CTAs

Market-wide CTAFreqStyle

Admin

Team access, all users' data, and server settings.

TeamApprove new accounts, or disable access. Members only ever see their own runs.

UserStatusJoinedActions

All runsEvery run on this server, by every user. Open loads it on the dashboard.

RunOwnerDateAds keptTypeActions

SettingsServer status. Values are read from the server environment.

Meta access token
Stored in .env on the server; shared by all approved users' runs. Never shown or exposed via the API.
Accounts
Password hashes and sessions live in data/ (gitignored). Delete data/ to reset all accounts — first new registration becomes admin.
Run storage
Each run is a self-contained folder in output/; the index in data/runs-index.json maps runs to owners.