{
 "openapi": "3.1.0",
 "info": {
  "title": "Rat Radar API",
  "version": "1.0.0",
  "description": "Can an agent scrape this site, and how? Verdicts, robots.txt and AI-crawler policy, protections, machine-readable surfaces and recommended approach for hundreds of public sites. Free, read-only."
 },
 "servers": [
  {
   "url": "https://ratlabs.tech/radar/api/v1",
   "description": "Static files, updated weekly"
  },
  {
   "url": "https://rat-radar.github-a18.workers.dev",
   "description": "Live checks and MCP"
  }
 ],
 "paths": {
  "/index.json": {
   "get": {
    "summary": "Every site, one line each",
    "responses": {
     "200": {
      "description": "ok"
     }
    }
   }
  },
  "/sites.json": {
   "get": {
    "summary": "Every site, full records",
    "responses": {
     "200": {
      "description": "ok"
     }
    }
   }
  },
  "/site/{host}.json": {
   "get": {
    "summary": "One site, full record. Host without www, e.g. reddit.com",
    "parameters": [
     {
      "name": "host",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "ok",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "ratradar.site/v1 record. See /radar/llms.txt."
        }
       }
      }
     },
     "404": {
      "description": "Not in the dataset. Use the live check."
     }
    }
   }
  },
  "/summary.json": {
   "get": {
    "summary": "Headline numbers: verdict mix, AI-crawler blocks, protection vendors",
    "responses": {
     "200": {
      "description": "ok"
     }
    }
   }
  },
  "/categories.json": {
   "get": {
    "summary": "Category names",
    "responses": {
     "200": {
      "description": "ok"
     }
    }
   }
  },
  "/sites.csv": {
   "get": {
    "summary": "Flat CSV of every site",
    "responses": {
     "200": {
      "description": "ok"
     }
    }
   }
  },
  "/changes.json": {
   "get": {
    "summary": "What changed between weekly snapshots and still held a week later: verdicts, AI-crawler blocks, new protections. Unconfirmed changes are in pending",
    "responses": {
     "200": {
      "description": "ok"
     }
    }
   }
  },
  "/history.json": {
   "get": {
    "summary": "Score and verdict per site across every weekly snapshot",
    "responses": {
     "200": {
      "description": "ok"
     }
    }
   }
  },
  "/v1/check": {
   "get": {
    "servers": [
     {
      "url": "https://rat-radar.github-a18.workers.dev"
     }
    ],
    "summary": "A site record, from the dataset or a live probe",
    "parameters": [
     {
      "name": "domain",
      "in": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "ok"
     }
    }
   }
  },
  "/v1/search": {
   "get": {
    "servers": [
     {
      "url": "https://rat-radar.github-a18.workers.dev"
     }
    ],
    "summary": "Find sites by name, host, category, country or verdict",
    "parameters": [
     {
      "name": "q",
      "in": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "ok"
     }
    }
   }
  },
  "/v1/robots": {
   "get": {
    "servers": [
     {
      "url": "https://rat-radar.github-a18.workers.dev"
     }
    ],
    "summary": "Does robots.txt allow this URL for a user agent?",
    "parameters": [
     {
      "name": "url",
      "in": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "agent",
      "in": "query",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "ok"
     }
    }
   }
  },
  "/v1/xray": {
   "get": {
    "servers": [
     {
      "url": "https://rat-radar.github-a18.workers.dev"
     }
    ],
    "summary": "Ranked extraction plan for one page (ratradar.xray/v1)",
    "parameters": [
     {
      "name": "url",
      "in": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "code",
      "in": "query",
      "schema": {
       "type": "string",
       "enum": [
        "1"
       ]
      }
     }
    ],
    "responses": {
     "200": {
      "description": "ok"
     }
    }
   }
  },
  "/badge/{host}.svg": {
   "get": {
    "summary": "An SVG badge showing the site verdict, for READMEs",
    "parameters": [
     {
      "name": "host",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "image/svg+xml"
     }
    }
   }
  }
 }
}
