{
  "name": "Live paid destinations, fetched as a phone from a cloud IP: one day, 211 URLs",
  "description": "Aggregate results of fetching 211 live paid-search destination URLs from five advertisers through the VampireAI landing-page checker on 1 October 2026: how many answered, how many refused a datacenter request, how many were hard 404s, soft 404s or arrived off the requested path. No population rate is claimed.",
  "creator": "VampireAI",
  "url": "https://vampireai.io/wasted-ad-spend#study",
  "documentation": "https://vampireai.io/landing-page-monitoring",
  "relatedDataset": "https://vampireai.io/failure-modes.json",
  "id": "destination-study-2026-10-01",
  "version": "1.0.0",
  "date": "2026-10-01",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "method": {
    "corpus": "Live paid destination URLs from Ahrefs paid-pages for five advertisers, one per vertical, deduplicated by path; URLs still carrying an unexpanded ad macro excluded.",
    "fetch": "Each URL posted once to this site's /api/check on a Vercel preview — the production probe code (lib/probe.ts), a mobile user agent, a cloud egress — one URL every seven seconds, shuffled so consecutive requests rarely hit one host.",
    "verdicts": "Status and verdicts exactly as /api/check returns them. \"Refused\" is HTTP 401, 403, 407, 429 or 503. \"Hard 404\" is HTTP 404 or 410. \"Soft 404\" is a 2xx whose title or first 4,000 bytes carry a not-found phrase. \"Off path\" is an arrival whose path differs from the one requested, by the same rule the paid monitor uses (scheme, host and query are not the page; a trailing slash is).",
    "reproduce": "https://vampireai.io/destination-study.json documents the method; scripts/destination-study.mjs in the repository is the harness."
  },
  "caveats": [
    "One day, one pass, one vantage point. Nothing here says what a page did yesterday or will do tomorrow.",
    "No population rate is published and none should be derived: 80 of 211 destinations refused the probe, one vertical entirely, and refusals follow host policy about datacenter traffic rather than page health.",
    "Verticals stand in for advertiser names on purpose.",
    "Five advertisers is five advertisers. The file describes them, not the market."
  ],
  "columns": {
    "urls": "destinations in the corpus",
    "answered": "answered with any status that is not a refusal",
    "refused": "HTTP 401, 403, 407, 429 or 503",
    "hard404": "HTTP 404 or 410",
    "soft404": "2xx with not-found wording in the title or first 4,000 bytes",
    "offPath": "answered, and arrived at a different path from the one requested",
    "trailingSlashOnly": "of offPath, those whose only change was a trailing slash"
  },
  "totals": {
    "urls": 211,
    "answered": 131,
    "refused": 80,
    "refusedBy": {
      "403": 28,
      "429": 52
    },
    "hard404": 5,
    "soft404": 0,
    "offPath": 22,
    "trailingSlashOnly": 6
  },
  "byVertical": [
    {
      "vertical": "insurance",
      "urls": 31,
      "answered": 31,
      "refused": 0,
      "hard404": 3,
      "soft404": 0,
      "offPath": 7,
      "trailingSlashOnly": 6
    },
    {
      "vertical": "personal finance",
      "urls": 75,
      "answered": 47,
      "refused": 28,
      "hard404": 2,
      "soft404": 0,
      "offPath": 14,
      "trailingSlashOnly": 0
    },
    {
      "vertical": "travel",
      "urls": 40,
      "answered": 0,
      "refused": 40,
      "hard404": 0,
      "soft404": 0,
      "offPath": 0,
      "trailingSlashOnly": 0
    },
    {
      "vertical": "home retail",
      "urls": 54,
      "answered": 42,
      "refused": 12,
      "hard404": 0,
      "soft404": 0,
      "offPath": 1,
      "trailingSlashOnly": 0
    },
    {
      "vertical": "B2B SaaS",
      "urls": 11,
      "answered": 11,
      "refused": 0,
      "hard404": 0,
      "soft404": 0,
      "offPath": 0,
      "trailingSlashOnly": 0
    }
  ],
  "finding": "Of the 131 destinations that answered, 5 were hard 404s and 0 were soft 404s. Three of the five were in one vertical and each still had live ads pointing at it the same day. A status-code monitor would have reported those five; it would not have reported the 301 in front of three of them."
}