What do buyers see when they look you up in sellers.json?
Buyers see a seller ID and type, plus your legal name and business domain unless you are confidential. Pull your entry from each exchange and fix the gaps.

Buyers see your seller ID, your seller type and, unless the entry is confidential, the legal name and business domain of whoever gets paid. They compare that with your ads.txt and the bid's supply chain. On 3 November 2026, 70.7% of the 951,949 entries in Google's file showed only an ID and a type.
You do not write this file. Each exchange publishes its own copy, so you have one entry per exchange, and those entries can disagree with each other.
What is in a sellers.json entry
An entry from an exchange's file looks like this (the values here are made up):
{
"seller_id": "12345",
"name": "Example Media Ltd",
"domain": "example-media.com",
"seller_type": "PUBLISHER"
}
The spec gives each field a narrow job. seller_id must match the ID on your ads.txt line and the sid in the OpenRTB supply chain object. name is the legal entity paid for the inventory. domain is a root domain, with no www and no scheme. seller_type is PUBLISHER, INTERMEDIARY or BOTH. Set is_confidential to 1 and the name and domain can go.
ads.txt says who may sell your inventory. sellers.json says who that seller is. The ads.txt 1.1 spec ties them together by recommending that OWNERDOMAIN carry the same value as domain in your sellers.json entries. We covered the ads.txt half in ads.txt 1.1 and the OWNERDOMAIN mistakes.
How many sellers are hidden in these files?
We downloaded six public files on 3 November 2026 and counted the entries:
| File | Entries | Confidential | Not confidential, no domain | With domain |
|---|---|---|---|---|
| 951,949 | 672,914 | 140,558 | 138,477 | |
| OpenX | 7,990 | 0 | 0 | 7,990 |
| TripleLift | 7,988 | 0 | 0 | 7,988 |
| PubMatic | 6,516 | 0 | 18 | 6,498 |
| Index Exchange | 4,038 | 0 | 0 | 4,038 |
| Magnite (rubiconproject.com) | 3,214 | 0 | 2 | 3,212 |
On the five smaller files nearly every entry shows a domain. On Google's, 14.5% do. Our reading of the gap is that Google makes publishers opt in to transparency, while intermediaries get it automatically. Google also issues a seller ID per product, so its count covers AdSense and AdMob accounts as well as Ad Manager, and the 70.7% says nothing about Ad Manager publishers alone.
Two more things showed up in Google's file. It carries a notice calling itself a beta and unverified. And no entry that day was typed INTERMEDIARY, only 951,366 PUBLISHER and 583 BOTH, even though Google's help page describes the type. Read your own line and do not assume from the help text what it says.
What buyers do with a confidential or mismatched entry
We found no public figure for what a confidential entry costs, and buyers rarely publish their rules. Ask anyone quoting a percentage for the source.
Two public statements point in different directions. Google tells its own buyers it does "not recommend making buying decisions based on confidentiality". Microsoft's publisher guide, written for sellers on its Monetize platform and last updated in February 2026, summarises The Trade Desk's inventory policy much more strictly. Its list includes:
- Direct integrations and intermediaries need non-confidential sellers.json files.
- Seller IDs, names, seller types and business domains must be listed.
- A seller uses one business domain across every exchange's file.
seller_typedepends on whether the seller is the final payee or hands payment to someone else.- OWNERDOMAIN must match the sellers.json domain unless a MANAGERDOMAIN is specified.
That is a second-hand summary. The Trade Desk's policy page sits in its partner portal, which we could not read, and Microsoft warns the policies can change. It is still the most concrete public list we found of what one large buyer looks for, and every item on it can be checked from outside in minutes.
How to find your entry on every exchange
This script reads the DIRECT lines from your ads.txt and looks up each seller ID in that exchange's file. It needs curl and jq. We ran it on 3 November 2026 against a public ads.txt with 47 DIRECT lines and it took about 40 seconds, with Google's file alone at about 106 MB.
#!/bin/sh
# usage: sh sellers-check.sh yoursite.com
dir=$(mktemp -d)
curl -sL "https://$1/ads.txt" | tr -d '\r ' | sed 's/#.*//' |
grep -iE '^[^,]+,[^,]+,DIRECT' | cut -d, -f1,2 | sort -u |
while IFS=, read -r sys id; do
case "$sys" in
google.com) url=https://realtimebidding.google.com/sellers.json ;;
*) url="https://$sys/sellers.json" ;;
esac
f="$dir/$sys.json"
[ -f "$f" ] || curl -sL -m 120 "$url" -o "$f"
printf '%s %s: ' "$sys" "$id"
jq -c --arg id "$id" '[.sellers[] | select((.seller_id|tostring)==$id)] | .[0] // "NOT LISTED"' "$f" 2>/dev/null || echo "file not readable, open it in a browser"
done
The five exchanges in the table other than Google all answered at the ad system domain from the ads.txt line, some through a redirect. Others may block scripts or publish elsewhere, so a "file not readable" line means look it up by hand and says nothing about your entry. RESELLER lines are left out on purpose: those entries belong to the partner.
How to fix each gap the lookup shows
Work down the output line by line. The file belongs to the exchange, so most fixes go through your account with it.
A Google line with is_confidential: 1 is the one fix you can make yourself. Verify your site with Google, then go to Admin, Global Settings, Ad Exchange account settings in Ad Manager. Enable "Sellers.json transparency", add your business domain and save. The status and domain are shared across AdSense, AdMob and Ad Manager, so a switch here changes all three. Check the name under Payments info first, because that is what goes public, and a change to the business name delays payment by two weeks.
Where a name appears with no domain, Google may be holding the domain back until it verifies you own the URL. Check the format too: example.co.uk is accepted, while www.example.co.uk, https://example.co.uk and a trailing slash are not.
Domains that differ between exchanges, or from OWNERDOMAIN, take more messages. An account opened by a parent company or under an old brand will do this. Pick the domain of the company that collects the money. That is often not the site carrying the ads, as Google's help page and Microsoft's guide both say. Put it in OWNERDOMAIN, then ask each exchange's account contact to bring its entry in line.
For seller_type, Google's definitions are the ones to test against. PUBLISHER means you own the inventory and are paid directly. INTERMEDIARY means you sell inventory you do not own, or someone else is the payee. BOTH covers the mix. A group that sells its own sites alongside third-party inventory under a single seller ID should be BOTH, and Microsoft's guide then expects OWNERDOMAIN on the owned sites. It also recommends separate seller IDs where you can split them.
NOT LISTED sends you back to your own line first. In IAB Europe's 2025 study of 2,054 European news publishers, about 79% of valid ads.txt lines matched a sellers.json entry and files could be collected on about 61% of attempts, a gap the authors put largely on ads.txt errors: misspelled ad system domains, wrong top-level domains, attributes in the wrong order. If the line is right, ask the exchange. Google notes that some publishers may not appear in its file at all.
What to do with the output tomorrow
Save the script's output with the date on it, next to your last good copy of ads.txt. Send one message per exchange where the domain or type is wrong, and ask for a date. Then re-run it after the changes go through: the spec tells systems reading these files to assume a seven-day cache when there is no other instruction, so a buyer may not see your fix on the day it publishes.
The spec is still version 1.0 from July 2019. IAB Tech Lab refreshed its sellers.json page on 7 October 2026 and links a new information sheet there, with no change to the spec, so these checks should hold for a while.
PubPilot does not read sellers.json; it validates your ads.txt and alerts you when the file changes, so a corrected OWNERDOMAIN that the next deploy overwrites comes to you as an alert.
Questions people ask
- Do publishers need to host their own sellers.json file?
- Usually no. The file belongs to the advertising system. Google, Magnite, PubMatic and the others each publish one listing their accounts. A publisher that sells only its own inventory appears in those files and edits its entry through each exchange. The spec asks for a file from any advertising system listed in ads.txt or named in a supply chain.
- Should a publisher stay confidential in Google's sellers.json?
- Decide by who the payee is. A company with a business domain has little to hide, and Microsoft's summary of The Trade Desk's policy asks for names and domains to be listed. An individual paid under a personal name may reasonably stay confidential, since the name field carries the payee's name. Google lets you choose, and the setting applies across AdSense, AdMob and Ad Manager together.
- How long does a sellers.json fix take to reach buyers?
- Neither Google's help page nor the spec gives a publishing time for an edit. The spec tells systems that read the file to honour its Expires header and to assume seven days when it has no cache directives. Allow at least a week before you judge the result, and re-run the lookup to confirm the entry itself changed.
Sources
- IAB Tech Lab, sellers.json specification 1.0
- IAB Tech Lab, sellers.json page (updated 7 October 2026)
- IAB Tech Lab, ads.txt 1.1 specification
- Google Ad Manager Help, provide seller information with sellers.json
- Google Authorized Buyers Help, identifying sellers through sellers.json
- Microsoft Learn, publisher best practices for The Trade Desk
- IAB Europe, adoption of supply chain transparency standards in Europe
- Google's sellers.json file
- Magnite's sellers.json file
- PubMatic's sellers.json file
- Index Exchange's sellers.json file
- OpenX's sellers.json file
- TripleLift's sellers.json file