Ads.txt Checker
Pricing
Pay per event
Ads.txt Checker
This actor checks websites for ads.txt and app-ads.txt files. It parses authorized digital sellers, identifies DIRECT and RESELLER relationships, extracts unique ad exchange domains, and validates entry formatting. Essential for programmatic advertising compliance.
Pricing
Pay per event
Rating
0.0
(0)
Developer

Stas Persiianenko
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Check websites for ads.txt and app-ads.txt compliance. Parse ad exchange entries, relationships, and domains.
What does Ads.txt Checker do?
This actor checks websites for ads.txt and app-ads.txt files. It parses authorized digital sellers, identifies DIRECT and RESELLER relationships, extracts unique ad exchange domains, and validates entry formatting. Essential for programmatic advertising compliance and supply chain transparency across the digital ad ecosystem.
The actor fetches both /ads.txt and /app-ads.txt from each domain, parses every entry according to the IAB Tech Lab specification, and returns structured data ready for analysis or integration into your ad-ops workflows.
Use cases
- Ad fraud prevention -- verify authorized sellers for your domains and detect unauthorized resellers siphoning revenue
- Programmatic compliance -- ensure ads.txt meets IAB Tech Lab standards before ad exchange onboarding
- Publisher monitoring -- track ad partners across publisher sites to understand the supply chain
- Competitive intelligence -- discover which ad networks and SSPs competitors use for monetization
- Supply chain transparency -- audit ad exchange relationships for ads.txt/sellers.json alignment
Why use Ads.txt Checker?
- Batch processing -- check hundreds of domains in a single run instead of visiting each site manually
- Structured output -- get clean JSON with entry counts, relationship types, and unique domains ready for analysis
- API access -- integrate ads.txt monitoring into your ad-ops platform or compliance dashboard
- Fast execution -- lightweight HTTP requests mean results in seconds, not minutes
- Pay-per-event pricing -- only pay for what you use with no monthly subscription
- Dual file support -- checks both ads.txt and app-ads.txt in one pass
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
urls | array | Yes | -- | List of website URLs or domains to check for ads.txt. URLs are automatically cleaned to extract the domain. |
Example input
{"urls": ["https://www.nytimes.com","https://www.bbc.com","https://www.cnn.com"]}
Output fields
Each domain produces one record with the following fields:
| Field | Description |
|---|---|
url | The original URL provided in the input |
domain | The extracted domain name |
hasAdsTxt | Whether an ads.txt file was found |
hasAppAdsTxt | Whether an app-ads.txt file was found |
adsTxtUrl | The full URL of the ads.txt file |
entryCount | Total number of parsed entries |
directCount | Number of DIRECT relationship entries |
resellerCount | Number of RESELLER relationship entries |
uniqueDomains | Array of unique ad exchange domains found |
variables | Parsed variable declarations (e.g., contact, subdomain) |
issues | Array of formatting or compliance issues |
error | Error message if the check failed, null otherwise |
checkedAt | ISO 8601 timestamp of the check |
Output example
{"url": "https://www.bbc.com","domain": "www.bbc.com","hasAdsTxt": true,"hasAppAdsTxt": false,"adsTxtUrl": "https://www.bbc.com/ads.txt","entryCount": 45,"directCount": 12,"resellerCount": 33,"uniqueDomains": ["google.com", "appnexus.com", "rubiconproject.com"],"variables": { "contact": "ads@bbc.com" },"issues": [],"error": null,"checkedAt": "2026-03-01T12:00:00.000Z"}
How much does it cost?
Ads.txt Checker uses Apify's pay-per-event pricing. You only pay for what you use.
| Event | Price | Description |
|---|---|---|
| Start | $0.035 | One-time per run |
| Domain checked | $0.001 | Per domain checked |
Cost examples:
- 10 domains: $0.035 + 10 x $0.001 = $0.045
- 100 domains: $0.035 + 100 x $0.001 = $0.135
- 1,000 domains: $0.035 + 1,000 x $0.001 = $1.035
Using the Apify API
You can start Ads.txt Checker programmatically using the Apify API. Replace YOUR_TOKEN with your Apify API token.
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('automation-lab/ads-txt-checker').call({urls: ['https://www.nytimes.com', 'https://www.bbc.com'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('automation-lab/ads-txt-checker').call(run_input={'urls': ['https://www.nytimes.com', 'https://www.bbc.com'],})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Integrations
Connect Ads.txt Checker with other tools using Apify integrations. You can pipe results directly into Google Sheets, send Slack alerts when unauthorized sellers appear, trigger workflows in Make or Zapier, push data to n8n automations, or set up webhooks for real-time notifications when ads.txt files change.
Tips and best practices
- Schedule weekly runs to monitor ads.txt changes across your publisher portfolio and catch unauthorized modifications early.
- Compare directCount vs resellerCount to understand the balance of direct and reseller relationships for each domain.
- Check the issues array for formatting errors or entries that do not comply with the IAB specification.
- Combine with competitive analysis by running the checker on top publisher domains in your vertical to benchmark your own ads.txt coverage.
- Filter by uniqueDomains to quickly see which ad exchanges a publisher works with without parsing raw text files.
FAQ
What is ads.txt and why does it matter? Ads.txt (Authorized Digital Sellers) is an IAB Tech Lab standard that lets publishers declare which companies are authorized to sell their ad inventory. It helps prevent ad fraud by allowing buyers to verify seller legitimacy.
Does this actor check both ads.txt and app-ads.txt?
Yes. The actor checks both /ads.txt (for web inventory) and /app-ads.txt (for in-app inventory) in every run and reports results for each file separately.
Can I use domain names instead of full URLs?
Yes. You can pass bare domains like nytimes.com or full URLs like https://www.nytimes.com. The actor automatically extracts the domain and fetches the correct file path.