{
  "title": "One-query Google Organic parser and destination check",
  "observedDateUtc": "2026-11-08",
  "query": "roof repair denver",
  "method": "Use one Google Organic response per provider. For each organic row, check for a positive rank, a nonempty title and an HTTP URL. Classify the URL returned in the response, then use a separate HTTP client to follow redirects and record the terminal status.",
  "resultSets": [
    {
      "provider": "DataForSEO",
      "operation": "Google Organic Live Regular",
      "requestSettings": {
        "requestedMarket": "United States",
        "language": "en",
        "device": "desktop",
        "depth": 10,
        "requestedPages": 1
      },
      "capturedPages": 1,
      "organicRows": 8,
      "directUrls": 0,
      "googleRedirects": 8,
      "terminalHttpStatusCounts": {
        "200": 7,
        "403": 1
      },
      "rows": [
        {
          "organicRank": 1,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "google-redirect",
          "redirectHops": 2,
          "terminalHttpStatus": 200
        },
        {
          "organicRank": 2,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "google-redirect",
          "redirectHops": 2,
          "terminalHttpStatus": 200
        },
        {
          "organicRank": 3,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "google-redirect",
          "redirectHops": 2,
          "terminalHttpStatus": 200
        },
        {
          "organicRank": 4,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "google-redirect",
          "redirectHops": 2,
          "terminalHttpStatus": 403
        },
        {
          "organicRank": 5,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "google-redirect",
          "redirectHops": 2,
          "terminalHttpStatus": 200
        },
        {
          "organicRank": 6,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "google-redirect",
          "redirectHops": 2,
          "terminalHttpStatus": 200
        },
        {
          "organicRank": 7,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "google-redirect",
          "redirectHops": 2,
          "terminalHttpStatus": 200
        },
        {
          "organicRank": 8,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "google-redirect",
          "redirectHops": 2,
          "terminalHttpStatus": 200
        }
      ]
    },
    {
      "provider": "MCP Scraper",
      "operation": "Google Search Light",
      "requestSettings": {
        "searchLocationConfirmed": false,
        "requestedPages": 1
      },
      "capturedPages": 1,
      "organicRows": 10,
      "directUrls": 10,
      "googleRedirects": 0,
      "terminalHttpStatusCounts": {
        "200": 6,
        "403": 4
      },
      "rows": [
        {
          "organicRank": 1,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "direct",
          "redirectHops": 0,
          "terminalHttpStatus": 200
        },
        {
          "organicRank": 2,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "direct",
          "redirectHops": 0,
          "terminalHttpStatus": 200
        },
        {
          "organicRank": 3,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "direct",
          "redirectHops": 0,
          "terminalHttpStatus": 200
        },
        {
          "organicRank": 4,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "direct",
          "redirectHops": 0,
          "terminalHttpStatus": 200
        },
        {
          "organicRank": 5,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "direct",
          "redirectHops": 0,
          "terminalHttpStatus": 403
        },
        {
          "organicRank": 6,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "direct",
          "redirectHops": 0,
          "terminalHttpStatus": 403
        },
        {
          "organicRank": 7,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "direct",
          "redirectHops": 0,
          "terminalHttpStatus": 403
        },
        {
          "organicRank": 8,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "direct",
          "redirectHops": 0,
          "terminalHttpStatus": 403
        },
        {
          "organicRank": 9,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "direct",
          "redirectHops": 0,
          "terminalHttpStatus": 200
        },
        {
          "organicRank": 10,
          "titlePresent": true,
          "httpUrlPresent": true,
          "returnedUrlFormat": "direct",
          "redirectHops": 0,
          "terminalHttpStatus": 200
        }
      ]
    }
  ],
  "sharedFinalUrls": 0,
  "sharedDestinationHosts": 0,
  "limits": [
    "Both responses used the same query and one requested page. Equivalent search location was not confirmed.",
    "The HTTP check used different destination sets. These counts do not compare provider access rates, coverage or ranking.",
    "A direct URL can return an error. HTTP 200 records the response status and does not establish that a supporting passage was available.",
    "This public receipt records derived row checks. It omits raw provider responses, destination URLs, and account metadata."
  ]
}
