
sellers.json is a public file that each ad platform (an SSP, exchange or network) posts at its own domain, listing every seller it pays and whether each one is a publisher or an intermediary. Buyers match it against your ads.txt to see who really sells your inventory.
Here's the catch. You don't host this file, so it's easy to ignore, but your entry in it is still about you. If it's confidential, missing or doesn't match your ads.txt, some buyers can't trace the impression back to your site, and they'd rather bid on supply they can trace. This guide shows what the file holds, how to find your own entry and how to fix the common problems. It's the companion to our guide to setting up ads.txt, and if you'd like someone to review your whole setup, our web monetization service covers it.
What is sellers.json?
sellers.json is an IAB Tech Lab standard that lets buyers discover who the direct sellers and intermediaries are behind an ad platform's inventory. The IAB Tech Lab standard page describes it as a way for buyers to discover "who the entities are" selling digital advertising.
It closes a gap ads.txt leaves open. Your ads.txt says which accounts may sell your inventory, but an account ID like pub-1234567890123456 means nothing on its own. The platform's file says which company that ID belongs to.
The ad platform publishes the file, not you. The version 1.0 specification says every advertising system listed in an ads.txt file should publish one at /sellers.json on its root domain. Google's file, for example, covers AdSense, AdMob and Ad Manager accounts and sits at realtimebidding.google.com/sellers.json.
sellers.json fields, with a sellers.json example
Each file is a JSON object with a version, optional contact details and a sellers list. Every seller the platform pays must be in that list, even confidential ones. Here's a short example with made-up IDs:
{
"version": "1.0",
"contact_email": "adops@example-ssp.com",
"sellers": [
{
"seller_id": "pub-1234567890123456",
"name": "Example Media Ltd",
"domain": "examplemedia.com",
"seller_type": "PUBLISHER"
},
{
"seller_id": "00000001",
"seller_type": "INTERMEDIARY",
"is_confidential": 1
}
]
}
These are the fields you'll see in each seller entry and what they tell a buyer about you.
| Field | What it means | Required? |
|---|---|---|
seller_id | Your account ID in that platform. The spec says it's the same ID that appears in your ads.txt line and in the SupplyChain object | Yes |
seller_type | PUBLISHER if you own the site or app and the platform pays you directly, INTERMEDIARY if not, BOTH if the account does both | Yes |
name | The legal entity that gets paid for this seller_id | Yes, unless confidential |
domain | That company's business root domain, such as examplemedia.com | If it has a web presence and isn't confidential |
is_confidential | 1 hides the name and domain; 0 (the default) shows them | No |
is_passthrough | 1 marks a seller that passes inventory through under an account-control relationship | No |
comment | A note explaining what this seller_id covers, useful when one company has several IDs | No |
One rule matters more than the rest. The spec says a seller_id must map to a single entity that gets paid. A company can hold several IDs on one platform, but one ID can't stand for several companies.
At the top level, a file can also carry an identifiers list with business IDs for the platform itself. The spec names two: TAG-ID from the Trustworthy Accountability Group and DUNS from Dun & Bradstreet. The only valid version value today is 1.0.
Why sellers.json matters, and what it can't do
sellers.json matters because it puts a company name behind every account ID, so buyers can see whether they're paying the publisher or a middleman. It's one of the first things a DSP checks in how programmatic media buying reaches your site. The IAB Tech Lab finalised it together with the SupplyChain object on July 31, 2019, to close the identity gap ads.txt left open.
The buyers here are mostly demand-side platforms. If the split between the platforms that buy and the ones that sell is still fuzzy, our DSP vs SSP explainer for publishers lays it out. For buyers, the file does three jobs:
- Identity: it turns an ID in a bid request into a named business with a domain.
- Direct vs resold supply:
seller_typeshows whether the account belongs to the owner of the site or app, or to an intermediary. - Speed: buyers download the file and look sellers up offline, instead of the platform sending names with every bid request.
That traceability is one of the few things open-web sellers can offer that closed platforms get for free, which is why it comes up in how publishers compete with walled gardens.
The file has limits, and it helps to know them. It only identifies the final seller when that seller is already authorised in your ads.txt. It says who gets paid, not whether the traffic is real, so invalid traffic still needs its own checks (our compliance and IVT support covers that side). And a confidential entry is allowed by the spec, so a buyer can see that an entry exists without seeing who it is.
sellers.json vs ads.txt and the SupplyChain object
ads.txt, sellers.json and the SupplyChain object are three parts of one check: who may sell, who those sellers are, and which path one bid took. You control the first one, ad platforms control the other two.
| File or object | Who publishes it | What a buyer learns |
|---|---|---|
| ads.txt | You, at the root of your domain | Which accounts on which platforms may sell your inventory |
| sellers.json | Each ad platform, at its own domain | Which company owns each of those accounts, and whether it's the publisher or an intermediary |
| SupplyChain object (schain) | Each platform, inside every bid request | Every seller the request passed through, one node per seller, using the same seller IDs |
So it isn't a choice between them. A buyer reads the seller ID in a bid request, checks that your ads.txt authorizes it, then looks it up in the platform's list of sellers. Google's guide to bid transparency with the SupplyChain object shows the same seller ID used across all three.
What about DIRECT and RESELLER? The spec doesn't define a mapping to seller_type. In practice, though, buyers expect a DIRECT line to lead to an entry that is you or your company, and a RESELLER line to lead to the partner selling for you. When those don't line up, it's the first thing we look at.
How to check your own sellers.json entry
To check your entry, take each line of your ads.txt, open that platform's file and search it for the seller ID on the line. It takes about ten minutes for a short file, and you only need a browser.
Step 1. List the IDs from your ads.txt
Open yourdomain.com/ads.txt and note the platform domain and seller ID on each line. If you run an app, use the app-ads.txt on your developer website instead; our app-ads.txt setup guide shows where it lives.
Step 2. Open each platform's file
Go to https:// plus the platform domain plus /sellers.json. Some platforms publish the file on a subdomain, like Google's. If you can't find it, ask your account manager for the link. Large files can be slow in a browser, so download the file and search it with Ctrl+F (Cmd+F on a Mac).
Step 3. Read your entry against the table below
| What you find | What a buyer sees | What to do |
|---|---|---|
Your ID, your company name, PUBLISHER, on a DIRECT line | A clean, traceable seller | Nothing. This is the goal |
Your ID with is_confidential: 1 | A seller with no name or domain | Switch to transparent in your account settings (next section) |
| Your ID isn't in the file at all | An ID the platform doesn't vouch for | Check for a typo in ads.txt, then ask the platform why the ID is missing |
A partner's ID on a DIRECT line | A mismatch between your file and theirs | Ask the partner which line and relationship they want |
A RESELLER line whose ID belongs to a company you've never heard of | A seller you may not have approved | Ask the partner who gave you the line, or remove it |
Watch out for old lines. When we review a publisher's setup, the most common find isn't a broken entry. It's ads.txt lines for partners the publisher stopped using months ago, still pointing at live IDs.
How to fix a confidential or missing entry
A confidential entry is a setting, so you fix it in your account. A missing entry is usually a wrong ID or an account that isn't eligible yet, so you fix it in ads.txt or with the platform.
AdSense and AdMob: seller information visibility
In AdSense, go to Account, then Settings, then Account information, find "Seller information visibility" and select Transparent. You can also add your business domain. Google's AdSense sellers.json help says your name, domain and publisher ID appear in Google's file within 24 hours.
Two details catch people out. Your name comes from your payments profile, and changing that name brings an automatic two-week payment delay. And the setting is shared, so you can't be confidential in one of AdSense, AdMob or Ad Manager and transparent in another.
Google Ad Manager and MCM
In Ad Manager, click Admin, then Global settings, then Ad Exchange account settings, and select Enable next to "Sellers.json transparency". Add your business domain and save. Google's Ad Manager seller information page says your site must be verified by Google first, unless you're a child publisher in Multiple Customer Management (MCM).
MCM changes who sits in the chain. Google says intermediaries, which includes MCM parent publishers, are set to transparent automatically. Under Manage Inventory, the parent passes the child's seller ID in the SupplyChain object, and Google treats the child's ads.txt as needing a DIRECT line for the parent. If you're joining a partner through MCM, our guide on how to get Google AdX access covers that path.
Other platforms
Every platform runs its own file and its own rules. Ask your account manager three things: is my ID in your file, is it marked confidential, and is the seller_type right? Keep the answer in writing. Platforms usually update their file on their own schedule, and the spec tells buyers to cache it for 7 days when no cache rule is set, so a fix may not show up the same day.
Frequently asked questions
Do publishers need a sellers.json file?
No. Ad platforms host these files, not publishers. A publisher's job is to keep ads.txt accurate and to make sure their entry in each platform's file is correct and, ideally, transparent.
Where is the sellers.json file located?
The spec puts it at /sellers.json on the ad platform's root domain, served as JSON. Some platforms use a subdomain. Google's file is at realtimebidding.google.com/sellers.json.
What does seller_type BOTH mean?
BOTH means the account sells inventory the company owns and inventory it sells on behalf of others. Most single-site publishers should see PUBLISHER, and networks or MCM parents usually show INTERMEDIARY or BOTH.
Should I make my sellers.json entry confidential?
Usually not. Google warns that if your information isn't transparent, advertisers can't see your name, which might affect your revenue. Choose confidential only when you have a clear reason to hide the business name, and accept that trade-off.
What if an ad platform doesn't publish the file?
Then buyers have no way to put a name behind the IDs in your ads.txt for that platform. The spec says every advertising system listed in an ads.txt file should publish one. If a partner can't give you the link, ask why, and treat it as a gap in that partner's setup.
Can sellers.json stop ad fraud on its own?
No. The file shows who sells and gets paid, which makes spoofing and hidden reselling harder to hide. It doesn't check whether the visits or clicks are real, so it works alongside ads.txt, the SupplyChain object and invalid traffic filtering, not instead of them.
How long does a change take to show?
For AdSense, Google says your details appear in its file within 24 hours. Other platforms vary, and buyers may keep a cached copy for up to 7 days by default, so give it a week before you chase it.
Next step: match your ads.txt to every sellers.json
Pull up your ads.txt, open each platform's file and check that every ID leads to the company you expect. Then set your Google account to transparent if it isn't already. That ten-minute check shows buyers a supply chain they can trace from your page to the company that sold it. If you'd like us to run the check with you, or you're lining up new partners and want the ads.txt and seller listings right from day one, see our partner onboarding support or contact MH AdX.


