Network score API
Every website ClickedAds protects reports the ad fraud it catches. The API lets you check an IP address or an ad placement against that shared record before you serve, bid on or pay for it, and see how well AI agents' ad clicks convert compared with people.
Nothing comes from a single advertiser: an IP is only flagged when fraud from it was seen by two or more of our customers, and a placement is only rated when three or more have data. Advertisers are never named.
Plans
$0
1,000 lookups a month. For trying it out.
$99 / month
100,000 lookups a month, then $1 per 1,000. Billed monthly, cancel any time.
Each IP or placement checked is one lookup; a batch of 50 IPs is 50. Create keys and upgrade in your ClickedAds account (a free account is all you need). Higher volumes: hello@clickedads.com.
Authentication
Send your key in the Authorization header. Keys start with cak_. Keep them on your servers; don't put them in web pages or apps.
curl https://clickedads.com/v1/network/ip/203.0.113.7 \ -H "Authorization: Bearer cak_your_key"
Check an IP
GET /v1/network/ip/{ip}
{
"ip": "203.0.113.7",
"risk": "high", // high (score 70+), medium (40+), low, or unknown
"score": 82, // 0-100
"signals": ["network_fraud", "datacenter"],
"network": {
"flagged": true, // fraud seen from this IP by 2+ ClickedAds customers
"advertisers": "2-4", // bucketed: 2-4, 5-9, 10+
"lastSeen": "2026-10-11",
"windowDays": 30
},
"datacenter": true, // hosting / cloud address, not a home or phone network
"agent": null // or the AI company whose published range this IP is in
}
If the IP belongs to an AI company's published agent range (for example ChatGPT's), agent says so and the signal is ai_agent_range. It isn't scored as fraud: that's a person's assistant, and whether you want it is your call.
Many IPs at once
POST /v1/network/ips with up to 100 addresses.
curl https://clickedads.com/v1/network/ips \
-H "Authorization: Bearer cak_your_key" -H "Content-Type: application/json" \
-d '{"ips": ["203.0.113.7", "198.51.100.20"]}'
{ "results": [ { "ip": "203.0.113.7", ... }, { "ip": "198.51.100.20", ... } ] }
Check a placement
GET /v1/network/placement?p={site or app}. Use a domain (example.com) or Google's app format (mobileapp::2-com.example.app).
{
"placement": "flashlight-free.example",
"known": true, // false until 3+ ClickedAds customers have data
"risk": "high",
"fraudRate": 0.8, // share of ad clicks from it that scored as fraud
"advertisers": "2-4",
"clicks": "100-999",
"windowDays": 30,
"recommendExclude": true
}
AI agent conversion index
GET /v1/network/agents: for each AI agent, how often its ad clicks convert relative to people on the same websites, over 90 days (agents with data from 3+ customers and 200+ clicks).
{ "days": 90, "agents": [ { "agent": "ChatGPT", "accounts": 14, "clicks": 5120, "rate": 0.031, "ratio": 0.74 } ], "collecting": ["Claude"] }
Limits and errors
- Up to 20 requests a second per key, with bursts of 50. Over that:
429. - Monthly lookups: Free stops at 1,000 (
429with a message). Pro keeps working past 100,000 and bills extra lookups, up to a safety limit of 1,000,000 a month. - Every response has
X-Lookups-Used,X-Lookups-IncludedandX-Planheaders. - Errors are JSON:
{"error": "…"}, with400for bad input and401for a missing or revoked key.
Fair use
Use the API to prevent ad fraud and to judge traffic quality: deciding whether to serve, bid on, pay for or exclude traffic. Don't use it to identify, profile or make decisions about individual people, and don't resell the data. The full terms are in our terms of service.