mcp-website-traffic-rank-estimator
Look up a research-grade Tranco popularity rank for any company domain, with optional Cloudflare Radar and CrUX sources, returning one flat Clay-ready row per company.
Get a domain's Tranco rank plus the date of that rank (lower number = better).
Get an honest popularity band from
top_1kthroughbeyond_1m.Get a word-based trend (
rising,falling,stable) over ~40 daily observations, optionally skipped viaincludeTrend.Query extra sources with your own free keys: Cloudflare Radar (
cloudflareApiToken) and Chrome UX Report (cruxApiKey); sources without keys reportskipped, notnot_found.Set
minRank(1000–1000000ornone) to populaterank_meets_thresholdfor filtering, without dropping rows or altering ranks.Carry a
company_namethrough for joining; lookup is keyed oncompany_domainonly.Reuse a 7-day cache by default, or set
skipCacheto force a fresh fetch.Cap spend per call with
max_charge_usd.Read-only, idempotent, runs on Apify, requires
APIFY_TOKEN, and consumes Apify credits per call.Cannot return visit counts, sessions, or traffic numbers — ranks are not traffic.
Allows using Cloudflare Radar as an additional website traffic rank source when a Cloudflare API token is provided, returning radar rank, bucket, and status in the output.
Allows using Google Chrome UX Report as an additional data source when a Google API key is provided, returning CrUX metrics such as LCP and data availability in the output.
Website Traffic Rank Estimator MCP Server
An MCP server that returns a research grade Tranco popularity rank and trend for any company domain. It wraps the Mamba Labs Website Traffic Rank Estimator actor on Apify and returns a Clay-ready flat JSON row to any MCP client.
What's Inside
Related MCP server: mcp-github-organization-signal-scanner
What it does
Give it a company domain and it returns that domain's position on the public Tranco list, the date of that position, a band from top_1k through beyond_1m, and whether the domain has been rising, falling or stable over roughly forty daily observations. One flat row per company.
These are ranks, not traffic. A Tranco rank does not convert to visits, sessions or a monthly number, and this tool will never return a visit count. A lower rank number is better, so the trend is given in words rather than as a signed number. Most B2B domains are not on the list at all and return not_found, which is normal rather than disqualifying. Cloudflare Radar and Chrome UX Report are available as extra sources with your own free keys, and a source you did not supply a key for reports skipped rather than not_found, because nobody looked.
All of the lookup runs on Apify. This package is a thin client that calls the actor and hands back the result unchanged.
Quick start
You need Node.js 18 or newer and an Apify account with an API token.
Add this to your Claude Desktop config:
{
"mcpServers": {
"mamba-website-traffic-rank-estimator": {
"command": "npx",
"args": ["-y", "@mambalabsdev/mcp-website-traffic-rank-estimator"],
"env": {
"APIFY_TOKEN": "your-apify-token"
}
}
}
}Get your token at https://console.apify.com/account/integrations, paste it in, and restart Claude Desktop. The estimate_website_traffic_rank tool will be available.
Prerequisites
Node.js 18 or newer
An Apify account with an API token
Optional: your own Cloudflare API token, free at dash.cloudflare.com, if you want the Radar source
Optional: your own Google API key with the Chrome UX Report API enabled, free at console.cloud.google.com, if you want the CrUX source
Example prompts
"What is the Tranco rank for stripe.com, and is it rising or falling?"
"Give me the popularity band for this domain and skip the trend."
"Rank these domains and flag the ones inside the top 100,000."
"Look up figma.com on Tranco and Cloudflare Radar. Here is my Cloudflare token."
Inputs
company_domain(optional): bare company domain, for examplestripe.com. This is the lookup key and the join key for every other actor in the fleet.company_name(optional): carried through to the output row for joining. Rank lookup is keyed on the domain alone, so the name does not change the answer.sources(optional): which rank sources to query. One oftranco,tranco_radar,tranco_cruxorall. Tranco is free and needs no key. Cloudflare Radar and Chrome UX Report each need your own free key, and a source you did not supply a key for reportsskippedrather thannot found.includeTrend(optional): when true (the default) the rank history Tranco already returns is used to say whether the domain is rising, falling or stable. It costs nothing extra, because the history arrives in the same response.minRank(optional): one ofnone,1000,10000,100000or1000000. It setsrank_meets_thresholdon the row, so you can filter a list to established sites without writing the comparison yourself. It never drops a row and never changes the rank returned.cloudflareApiToken(optional): your own Cloudflare API token, free to create at dash.cloudflare.com. Used only whensourcesincludes Radar.cruxApiKey(optional): your own Google API key with the Chrome UX Report API enabled, free at console.cloud.google.com. Used only whensourcesincludes CrUX.skipCache(optional): when false (the default) a successful lookup is cached for seven days and reused. Set true to force a fresh fetch.max_charge_usd(optional): spending cap for this call, in USD. The actor stops before any charge that would take the run past this amount and keeps every row already charged.
Output
The tool returns the actor's flat JSON row for the company, with 20 snake_case fields and no nested objects. tranco_rank comes with tranco_rank_date, because a rank without a date has no shelf life. rank_band gives an honest band rather than false precision, rank_trend is a word, and radar_status and crux_status say whether those sources ran. See the Apify Store page for the full output schema.
Example output
{
"degraded": false,
"degradation_reason": null,
"company_domain": "stripe.com",
"company_name": "Stripe",
"tranco_rank": 238,
"tranco_rank_date": "2026-08-21",
"rank_band": "top_1k",
"rank_trend": "stable",
"rank_change": 1,
"rank_observations": 40,
"rank_meets_threshold": null,
"radar_rank": null,
"radar_bucket": null,
"radar_status": "skipped",
"crux_has_data": null,
"crux_lcp_p75_ms": null,
"crux_status": "skipped",
"coverage": 0.67,
"fetch_status": "ok",
"run_date": "2026-08-22T19:23:52.998Z"
}Features
Tranco popularity rank for any company domain, with the date of that rank
Trend over roughly forty daily observations, given as rising, falling or stable
An honest band such as
top_1k, rather than false precisionOptional Cloudflare Radar and Chrome UX Report sources with your own keys
Never returns a visit count, because a rank is not traffic
20 flat snake_case fields, one row per company
Pricing
You pay per event on Apify, billed to your own Apify account. Prices from the live pricing record, read 2026-10-16:
Event | Price per event (USD) | Fires when |
| $0.00005 | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |
| $0.0025 on the Free plan, down to $0.00175 on higher Apify plans | Once per company for which the rank lookup completed and a non degraded row was produced, whether or not anything was found. A not_found row fires this event, because looking and finding nothing is a real answer and it is the work you asked for. A degraded row, where the lookup could not run at all, fires nothing. |
| $0.002 on the Free plan, down to $0.0014 on higher Apify plans | Once per company where a numeric rank was returned by at least one source and banded. Does not fire when the domain is absent from every source queried, which is a real answer and is covered by the check event. |
The actor's Apify page carries the current prices. Running this server consumes Apify credits.
Full actor documentation
This server is a thin client and holds no lookup logic. For the complete input and output reference, pricing, and run history, see the Apify Store page:
https://apify.com/mambalabs/website-traffic-rank-estimator
Mamba Labs GTM Suite
This server is one of the Mamba Labs GTM Suite MCP servers. Every actor in the suite takes a domain or a company and returns one flat row, so they stack in the same Clay table without reshaping anything. The actor behind this server is the Website Traffic Rank Estimator, immutable Apify actor ID GnOFUzlNVIoXgeJjH.
Built by Mamba Labs | npm | Apify Store
License
MIT
Built by Mamba Labs. https://apify.com/mambalabs
Available Tools
1 toolestimate_website_traffic_rankEstimate Website Traffic RankARead-onlyIdempotent
Return a research grade popularity RANK for a company domain from the public Tranco list, with the date of that rank, an honest band (top_1k through beyond_1m) and a rising, falling or stable trend over roughly forty daily observations. Returns one flat Clay ready row. THESE ARE RANKS, NOT TRAFFIC: a rank does not convert to visits and this tool will never return a visit count. A lower rank number is better, so the trend is given in words rather than as a signed number. Most B2B domains are not on the list at all and return not_found, which is normal rather than disqualifying. Read only; requires an APIFY_TOKEN and consumes Apify credits per call.
| Name | Required | Description | Default |
|---|---|---|---|
| minRank | No | Sets rank_meets_threshold on the row, so you can filter a list to established sites without writing the comparison yourself. It never drops a row and never changes the rank returned. Sent as a string for Clay compatibility. | |
| sources | No | Which rank sources to query. Tranco is free and needs no key. Cloudflare Radar and Chrome UX Report each need your own free key, and a source you did not supply a key for reports "skipped" rather than "not found", because we did not look. Sent as a string for Clay compatibility. | |
| skipCache | No | When "false" (default) a successful lookup is cached for seven days and reused, which costs you nothing on a repeated run. Set "true" to force a fresh fetch. Sent as a string for Clay compatibility. | |
| cruxApiKey | No | YOUR OWN Google API key with the Chrome UX Report API enabled, free at console.cloud.google.com. OPTIONAL and only used when sources includes CrUX. Marked secret, so the value never renders on this page. | |
| company_name | No | Optional. Carried through to the output row for joining. Rank lookup is keyed on the domain alone, so the name does not change the answer. | |
| includeTrend | No | When "true" (default) the rank history Tranco already returns is used to say whether the domain is rising, falling or stable. It costs nothing extra: the history arrives in the same response. Sent as a string for Clay compatibility. | |
| company_domain | No | Bare company domain, for example stripe.com. This is the only required input and it is the join key for every other actor in the fleet. | |
| cloudflareApiToken | No | YOUR OWN Cloudflare API token, free to create at dash.cloudflare.com. OPTIONAL and only used when sources includes Radar. Marked secret, so the value never renders on this page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent/openWorld annotations by disclosing credit consumption per call, seven-day caching behavior, that unsupplied sources report 'skipped' rather than 'not_found', and that the trend is rendered in words because a lower rank number is better. These are exactly the non-obvious behaviors an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core deliverable and its key caveat (ranks, not traffic) are front-loaded, and nearly every sentence carries information an agent could not infer. It is dense and slightly repetitive in restating the Clay compatibility and caching themes already covered in the schema, which keeps it short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter tool with no output schema, the description fully specifies the return shape (one flat Clay-ready row with rank, date, band, and trend), the not_found outcome, and the auth/credit requirements. An agent can call and interpret this correctly with no further information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already carries full parameter semantics, including the minRank threshold, source skipping, and caching flags. The description adds interpretive context (rank is not traffic, lower is better, not_found is normal) but no per-parameter detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return a research grade popularity RANK for a company domain from the public Tranco list') and explicitly delimits scope by declaring what it is not ('THESE ARE RANKS, NOT TRAFFIC... will never return a visit count'). An agent knows exactly what this tool produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: read only, requires APIFY_TOKEN, consumes credits per call, and that most B2B domains legitimately return not_found rather than indicating an error. There are no sibling tools to route against, so no explicit alternatives are needed, but it stops short of stating when a caller should prefer this over simply skipping the check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.1.1- Changed
estimate_website_traffic_rank2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / minRank / enumPrevious value: -[ - "none", - "1000", - "10000", - "100000", - "1000000" -]New value: +[ + "1000", + "10000", + "100000", + "1000000", + "none" +]
1 tool update
v1.0.0- First observed
estimate_website_traffic_rank
TDQS
Scored across 1 tool
There is only one tool, so no misselection is possible. Its purpose is stated precisely and even disambiguates itself from a common confusion (ranks vs. visit counts).
The single tool uses a clear snake_case verb_noun pattern (estimate_website_traffic_rank) that matches the server name. No competing conventions exist to conflict with it.
One tool is defensible for a deliberately narrow, single-operation microservice (fetch a rank for a domain). It is slightly thin in that there is no batch or multi-domain variant, which would be natural for research use.
The single operation returns everything the stated domain requires: rank, observation date, band, trend, and an explicit not_found outcome, with read-only scope acknowledged. The only gap is bulk/batch lookup for comparing many domains at once.
Maintenance
Related MCP Connectors
- IndicesOAuthio.indices
Official Indices MCP server. Turn any website into a reliable API.
MCP server for 500+ pay-per-call web scraping, search, social, business, and financial data tools.
Official SerpApi MCP server for Google, Bing, and other search engines.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for the Mamba Labs Company Contact Details Extractor actor on Apify. Find a company contact page and extract role emails, a phone number and a postal address.1103 npmMIT
- AlicenseAqualityAmaintenanceMCP server for the Mamba Labs GitHub Organization Signal Scanner actor on Apify. Resolve a company domain to its GitHub organization with repo, language and activity signals.194 npmMIT
- AlicenseAqualityAmaintenanceMCP server for the Mamba Labs Reddit Brand Presence and Mention Monitor actor on Apify. Resolve a company domain to its subreddit and sample public mentions of the brand.197 npmMIT
- AlicenseAqualityAmaintenanceMCP server for the Mamba Labs X Twitter Brand Presence Mapper actor on Apify. Resolve a company domain to its X handle, profile URL and follower metrics.1106 npmMIT