Chrome extension · MV3
AdLib
Makes Meta's Ad Library usable — sortable, filterable, exportable. The most technically demanding thing on this site.
In store review
The problem
Meta's Ad Library holds every ad running on Facebook and Instagram and is close to unusable. You cannot sort it. You cannot filter it properly. You cannot export it. Finding which of an advertiser's two thousand ads has been running longest means scrolling, by hand, for a very long time.
Every commercial tool in this space solves it by scraping Meta from their own servers. That is the easy path and it is the one I deliberately did not take.
What I built
- Everything happens in the user's own browser. The extension reads the data the page has already loaded on the user's own session. No server ever contacts Meta. That is a legal posture, chosen up front, and the architecture is built around it rather than bolted on.
- Sort, filter, search across an advertiser's entire catalogue, including sorting by how long an ad has been running — the signal that actually indicates a competitor is spending money.
- Creative reuse detection — which creatives appear in more than one ad set, which is how you tell what is being scaled from what is being tested.
- CSV export and bulk media download, throttled deliberately, because the requests are spent on the user's own session and a rate-limited account is a lost customer.
The part that was actually hard
The data comes from intercepting the page's own GraphQL responses, which means running code in two isolated JavaScript contexts and bridging them, with reconciliation counters so a dropped message can never look like an advertiser simply having fewer ads.
Meta's field names change without warning. Every one of them is quarantined in a single adapter file, and an 878-case fixture suite built from real captured traffic gates every change — so when the schema drifts, exactly one file needs editing and the tests say which line.
One measurement changed the whole product. Reach data exists only in a per-ad request, one ad at a time, so bulk reach estimation is not honestly possible on a user's own session. I measured that before building the feature and cut it, rather than shipping a number I could not stand behind.
Where it is now
In review at the Chrome Web Store, launching free.