Cloudflare API: Get domain rank
Gets a website's worldwide popularity bucket, exact rank when shown, categories, and recent weekly rank history from Cloudflare Radar. Historical rank points are available only for top-100 domains; other ranked domains have an empty history.
Unofficial. Not affiliated with or endorsed by Cloudflare.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Website, required
website Website domain or URL, for example notion.so or https://notion.so/help.
https://google.com/search
Input as JSON
{ "website": "https://google.com/search" }Output
{ "domain": "google.com", "categories": [ "Search Engines" ], "exact_rank": 1, "radar_link": "https://radar.cloudflare.com/domains/domain/google.com" , "rank_history": [ { "date": "2026-09-29", "rank": 1, "bucket": "Top 100" }, { "date": "2026-09-22", "rank": 1, "bucket": "Top 100" }, { "date": "2026-09-15", "rank": 1, "bucket": "Top 100" } ], "popularity_rank_bucket": "Top 100"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"radar.cloudflare.com/get_domain_rank","input":{"website":"https://google.com/search"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "radar.cloudflare.com/get_domain_rank" , "input": { "website": "https://google.com/search" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "radar.cloudflare.com/get_domain_rank" , "input": { "website": "https://google.com/search" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run radar.cloudflare.com/get_domain_rank# with {"website":"https://google.com/search"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "website" ], "properties": { "website": { "type": "string", "description": "Website domain or URL, for example notion.so or https://notion.so/help." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "domain", "popularity_rank_bucket", "exact_rank", "categories", "rank_history", "radar_link" ], "properties": { "domain": { "type": "string" }, "categories": { "type": "array", "items": { "type": "string" } }, "exact_rank": { "type": [ "integer", "null" ] }, "radar_link": { "type": "string", "format": "uri" }, "rank_history": { "type": "array", "items": { "type": "object", "required": [ "date", "bucket", "rank" ], "properties": { "date": { "type": "string", "format": "date" }, "rank": { "type": "integer" }, "bucket": { "type": "string" } }, "additionalProperties": false }, "description": "Weekly rank points when the domain is in the top 100." }, "popularity_rank_bucket": { "type": "string" } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
radar.cloudflare.com/get_domain_rank- Returns
- domain, popularity bucket, exact rank, categories, weekly rank history, Radar link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method radar.cloudflare.com/get_domain_rank with the inputs above.
Ask your agent
- How popular is notion.so globally? I'd like its popularity bucket and its exact rank if one is available.
- Check Cloudflare Radar for where youtube.com ranks worldwide and show its weekly rank trend over recent weeks.
- What categories does https://www.reddit.com/r/programming fall under, and what top-N bucket is it in?
- Pull the worldwide traffic ranking for figma.com from Cloudflare, with a link to its Radar page.
- Is duolingo.com in the top 1,000 or the top 10,000 sites on the internet? Include any recent rank history.
See more
All Cloudflare methodsLists recent and ongoing internet outages from Cloudflare Radar's Outage Center, optionally for one country. Countries and scope are null when the Outage Center does not identify them.
radar.cloudflare.com/list_internet_outagesGets a website's monthly traffic estimate, rankings, engagement and top countries from Similarweb's free public overview. Traffic-source percentages withheld by the site are null; the site may limit anonymous views.
similarweb.com/get_website_trafficGets the technologies shown in a website's free BuiltWith profile, grouped in the order BuiltWith displays them. A company name is matched to its official website through a public web search.
builtwith.com/get_website_technologiesLists Similarweb's most visited websites for a category and country, with rankings and engagement figures for the reported month. Anonymous view limits may restrict results, especially for country rankings.
similarweb.com/list_top_websitesChecks a website's HTTPS setup with SSL Labs: overall grade, per-server grades, certificate issuer and expiry, supported protocols and known weaknesses. Reuses cached reports from the last 72 hours unless a fresh test is requested.
ssllabs.com/check_ssl_certificateLooks up DNS records for a domain or pasted website link and summarizes its SPF record, DMARC policy and mail servers. A missing record type yields an empty records list.
dns.google/get_dns_recordsGets a company's Trustpilot rating summary from its name or website: TrustScore, rating label, total reviews, star breakdown, categories, claimed status, reply statistics and location when shown.
trustpilot.com/get_company_ratingChecks whether an app or website has current problems in a country on Downdetector: its status, reports in the latest 15-minute interval, the usual report count, the most reported problem types and the most affected locations when shown. The service must have a public Downdetector page in that country.
downdetector.com/check_service_status