First 200 users get the Growth plan for $19/mo.

Claim

Competitor numbersyou can actually cite.

See what your rivals put out, which of their posts did better than their own average, and the day their prices change. Where a number would be a guess, you get a blank that says why.

Landing and pricing pages are watched today. Instagram and the ad archive are waiting on access from Meta.

What you get, and what you do not

Numbers you can defend in a meeting

What your rivals put out, which of it did better than their own average, and an honest blank wherever a number would be invented.

Observed

What they posted

Likes and comments exactly as Instagram returns them. Hide the likes and there is no rate, not a rate of zero.

@rival.one · last 30 days104k followers
Reel · founder skit4,1023.9%
Carousel · 5 tips1,8801.8%
Photo · product shotHiddenNo rate

This account hides its likes. No rate, not a zero.

Their better days

Above par

The posts that beat that account's own usual, so you compare them against themselves and not against you.

Sample size

Who you watch

How many accounts a figure came from travels with it, so three posts never look like thirty behind a number.

Tracked profiles
@rival.one104k
Median engagement 2.8%n=24
@rival.two48k
Median engagement 1.4%n=31
@rival.threeWithheld
Median engagement No mediann=0

No guesses

What we will not print

Spend, views and click rates are not published for ordinary advertisers, so you get a labelled blank, never a guess.

Competitor performance
SpendNot published
ImpressionsNot published
CTRNot published
ROASNot published

Meta publishes these for political, issue and social ads only.

Sources

What we may read

TikTok has no route that permits commercial use, so it is absent here rather than quietly scraped in behind you.

Where the data comes from
Instagram professional accountsYour own connection
Meta Ad LibraryPublic archive
Competitor websitesOur own crawler
TikTokNo commercial API exists

The blanks

Say why

Every field we cannot fill names the reason, so you can repeat it to a client without checking first.

Their pages, re-read

See it when their offer changes.

Pin the pages you care about and re-read them any time, with a daily sweep wherever it is switched on. Headlines, buttons, body copy, prices. You get the old wording beside the new one and draw your own conclusion.

Hero headline · changedToday

Before

Try it free for 14 days

After

Book a demo with our team

Countdown and visitor counter ignored by the headline and button check

Change detection

Before and after, verbatim

The old string beside the new one, with no summary in between, because the sentence a summary would write is the part most likely to be wrong.

Prices differ
Starter$29/mo$29/mo
Pro$99/mo$89/mo
Business$249/mo$249/mo

Strings as published. No direction, no percentage.

Pricing pages

Two strings, no direction

The plan and both prices, never a direction and never a percentage: a currency switch, a country variant and a real cut all look identical from outside.

Watched pages
rival-one.com/pricingChanged
rival-two.comServes different versions
rival-three.io/plansRobots says no
rival-four.coNo readable text
Honest crawling

What we could not read, said plainly

Blocked, built in JavaScript, or the server never answered. Each gets its own sentence, so a page we could not read never reads as a page that did not change.

Where the numbers come from

Three sources, and no invented fourth.

Their Instagram through your own connection, Meta’s public ad archive, and their website read by our crawler. A model labels what those said, and every label is marked as one.

Sources
Instagram, Meta archive, their site
Every number
Observed, or left blank
Every label
Marked inferred, opens to source
InstagramMeta Ad LibraryTheir websiteAI taggingAlerts & API
overads Competitors
Meta’s ad archive

How long an ad ran. Not how well it did.

Which ads a rival is running, and how long each one lasted against their own same-month median. It covers ads that reached the EU or the UK, so a US-only advertiser comes back empty. Meta’s API needs an identity-confirmed credential and ours is in review, so this is built and not yet collecting.

Ran vs cohort median
Founder story, 30s2.4x
Bundle offer, static1.1x
Testimonial carousel0.6x

Duration only. The archive never publishes what an ad cost.

Longevity

Ran vs cohort median

Each ad's run against the ads that advertiser launched the same month. The archive publishes how long an ad ran and never what it cost, so read it as staying power, not as return.

Meta ad archive · commercial ads
EU 27 and the United KingdomArchived

Roughly the last year, no backfill

US, India, Canada, Brazil, elsewherePolitical ads only

A US-only advertiser returns nothing here

Instagram and landing-page tracking work in every market.

Coverage

The EU and the UK, and that is it

Commercial ads are archived on EU or UK delivery, and kept about a year with no backfill. A US-only advertiser returns nothing because the archive never held them, not because they run no ads.

Inferred from the ad text
Hook: fear of missing outAngle: pricePersona: agency ownerFunnel: consideration

“Last 40 seats at this price. Doors close Friday.”

Source text · what the model read

12 image-only ads: not read yet, not untagged
AI tagging

Every label opens to its source

Hooks, angles, personas, offers and funnel stage, inferred from the ad's own words. Each label is marked inferred and opens to the exact text it came from.

Where the findings land

Out of the tab, into your week.

One batched daily alert when a tracked rival does something outside their own normal on Instagram, plus a Monday brief across every brand you watch. The brief names the brands we could not reach, so a failed read never looks like a quiet week. Alerts land next to the ones you already get from your cross-platform ads manager.

Today’s batch · 1 email
@rival.oneBeats its own baseline

A Reel well clear of their trailing median

@rival.twoFollowers moved

Up 4,120 since the last reading we got

EmailSlackDiscordTeamsTelegram
Alerts

One batched email, not a firehose

A rival posts well past their own normal, or their followers jump, and you get one email that day. Five channels. Landing-page changes are not emailed: those you read in the app.

Monday brief · 4 tracked
Rival One9 new posts, one well past their median
Rival TwoQuiet week, nothing changed
Rival ThreeNot read: the permission is pending review
Rival FourNot read: Instagram withheld followers
Monday brief

Including the ones we missed

Every tracked rival, once a week. Brands we failed to reach are named with the reason attached, so a quiet week and a failed read never look the same in your inbox.

Workspace keys
Reporting botread only

oa_live_••••••••••••3f9c

MCP serverBeta program

Scoped to this workspace, revocable at any time

API and MCP

Your data, in your own tools

Scoped, revocable workspace keys over your own ad accounts and our own landing-page crawl, included on Growth and Scale. The Meta-derived competitor reads are not exposed through it yet.

Competitors FAQ

Before you track anyone

Anything else? Email hello@overads.io and a human will reply within a business day.

Where do the Instagram numbers come from?
Your own connected Instagram professional account, and only for a rival whose own account is a professional one too. Meta denied instagram_basic beyond our own app roles, so most accounts see a notice instead of a number today. Engagement rate is likes plus comments over followers.
Why can I not see a rival's ad spend, impressions, CTR or ROAS?
Because nobody can. Meta publishes those for political, issue and social ads only, so for a commercial advertiser they do not exist at any access level. Likes and comments on a specific archived ad do not exist either. Every tool showing you them is modelling or scraping.
Does the ad archive cover my market?
Only if your rivals advertise into the EU or the UK. Meta archives a commercial ad where it reached the EU or the UK and keeps it about a year with no backfill; everywhere else it holds political, issue and social ads only. Instagram and landing-page tracking have no geographic limit.
Is the longevity number a performance score?
No, and the column says so: it reads Ran vs cohort median, never Performance. It compares an ad's run against the median run of that advertiser's same-month ads, and reports nothing until enough of them have finished. Duration, not return. None of it is collecting yet.
Do you track TikTok?
No. There is no sanctioned commercial route into TikTok data and its Research API bars commercial use, so TikTok is absent from every competitor source rather than quietly scraped into one. Connecting your own TikTok ad account is a separate roadmap item.
How does landing-page tracking avoid false alarms?
Countdown timers and visitor counters move on every visit, so they never count as a changed headline, button or price. Pages serving different content on different visits are flagged as variants. A page we could not read says so, rather than reading as a page that did not change.
What does competitor tracking cost?
It is part of the overads superapp and included on every plan: Starter $49/mo, Growth $149/mo, Scale $299/mo. Programmatic access through the public API is included on Growth and Scale.