Going Stellar

Home/Research

Competitive research

Zero ads is not an answer

Searched by domain, an ad transparency archive returned zero ads for three subjects. Their owners were running 17 and 13 ads at the time. Here is the check that works, and the recommendation it killed.

Published

A confident false negative

The check we ran was the obvious one. Ad transparency archives have a search box, so we typed a domain into it. Three subjects came back with zero ads. Zero is a clean result. It looks like evidence rather than the absence of evidence, and we read it that way.

It was wrong. At the time of that search, two of the owners behind them were running 17 and 13 ads. The archive was answering a different question from the one we thought we had asked.

A false negative of this shape is worse than a missing dataset. A missing dataset announces itself. An empty result that matches what you expected to find gets accepted without argument, and then it gets built on.

Why a domain search cannot find an advertiser

The reasons are structural, and none of them is a bug. First, an advertiser is registered in these archives under the legal name of the company or person paying for the ads. The domain is a property that advertiser happens to own. It is not the key of the record, so it is not what the index is keyed on.

Second, an app-install advert does not point at the advertiser's domain at all. Its destination is the app's store listing.

Put together: a domain search is looking for something that was never there. The empty result is a correct literal answer and a useless answer to the question actually being asked, which is whether a competitor is buying its traffic. Any question you can only settle through an index has to be asked in that index's key.

Start at the trader disclosure

Step one. Open the app's store listing and read the About the developer disclosure. Under EU rules the trader's legal name and address are published there. That is the key the domain search was missing, and it is public, on the same page as the app you are already looking at.

Step two. Search that legal name in the ad transparency centre, filtered to the region you care about. The result gives you an advertiser identifier, the number of ads running, and a customer identifier. Record all of them. The identifiers are what let you come back to the same record later, and what let someone else reproduce your result without repeating your search.

At this point, be precise about what you have. You know a specific legal entity is advertising in that region, and how many ads it is running. You do not yet know what those ads are selling.

The destination and the chronology are the proof

Step three. Open one of the creatives and read its destination. The proof is a destination URL pointing at that exact app package, together with the install call-to-action markers. Skip this step and you have only established that a company advertises somewhere, which settles nothing.

Step four. Read the chronology: first shown and last shown, per creative. This is where the account stops being a snapshot and becomes a history. Campaign migration is the hardest pattern to fake. Old creatives stop on exactly the day a new package launches, and new campaigns start days later. The alignment of start and stop dates across a set of creatives would have to have been staged before anyone asked.

Note the direction of the inference. The destination proves where the money pointed. The chronology proves when it was pointing there. Neither proves how much of it there was.

The recommendation we withdrew

We had recommended entering a category. The case rested on two apps that appeared to be growing organically. Growth with no visible paid acquisition suggests demand pulling a product along, and a category where demand pulls is a category worth entering.

We ran the method above on both. Both were running install campaigns across the entire growth window, alongside all of the growth we had been reading as organic.

The organic growth we were about to copy did not exist. The recommendation was withdrawn. The uncomfortable part is that we had not misread the evidence, because we had never collected any. The domain search had reported the absence of its own key, and we had recorded that as a finding about the world.

Running the same check

Order matters, and the cheap steps come first. Open the store listing, take the legal name from the trader disclosure, search that name in the transparency archive with the region filter set, then open a creative and read its destination. If you stop before the destination, stop describing the result as proof of anything.

When a search under the correct legal name genuinely returns nothing, that is a real result and worth writing down. It is still weaker than a positive: it says you found no ads in that archive, in that region, at that moment.

Limitations

This method works only where both of these exist: a transparency archive for the ad platform, and a trader-disclosure requirement on the store listing. Remove either and the chain breaks. Without the disclosure you have no legal name to search; without the archive you have a name and nowhere to search it.

What it proves is bounded. It shows that ads ran and where they pointed. It does not tell you how much was spent. Treating ad counts as a proxy for spend would put back the same kind of unsupported inference this check exists to remove.

It is also blind by construction to any channel that publishes no archive at all. A finding of zero ads is a statement about the archives you searched, never about the total advertising a company does.

Questions and answers

Why does an ad transparency search by domain show no ads for a company that advertises?

An ad transparency search by domain shows no ads because advertisers are registered under the legal name of the company or person paying for the ads. The domain is just a property the advertiser owns, not the key the archive is indexed on. App-install adverts also point at the app's store listing rather than the advertiser's domain, so a domain search looks for something that was never there.

How can I check if a competitor's app is running install ads?

Checking whether a competitor's app runs install ads starts on the app's store listing: read the developer disclosure, where EU rules require the trader's legal name and address. Search that legal name in the ad transparency centre with the region filter set, and record the identifiers. Then open a creative and confirm its destination URL points at that exact app package.

What proves that an app's growth is paid rather than organic?

Proof that an app's growth is paid comes from the destination and the chronology of its ads. A creative whose destination URL points at that exact app package, with install call-to-action markers, shows where the money pointed. First-shown and last-shown dates per creative show when, and install campaigns running across the whole growth window mean the growth was not purely organic.

Does a high number of ads in a transparency archive mean high ad spend?

A high number of ads in a transparency archive does not show how much was spent. The method shows that ads ran and where they pointed, but not the spend behind them. Treating ad counts as a proxy for spend reintroduces exactly the kind of unsupported inference the check is meant to remove. The archive also cannot see channels that publish no archive at all.

What does it mean when a search under the correct legal name returns no ads?

A search under the correct legal name that returns no ads is a real result and worth writing down. It is still weaker than a positive finding: it only says no ads were found in that archive, in that region, at that moment. It says nothing about channels without a public archive or about the company's total advertising.

How to cite this

Going Stellar (2026). Zero ads is not an answer. GOING STELLAR S.R.L..
https://goingstellar.ro/research/zero-ads-is-not-an-answer/

Read as Markdown

All research

Contact

Tell us what is not working

Write in English or Romanian. A person reads it — usually the same person who would do the work — and answers within one business day.