# Website Traffic Rank Estimator - Tranco Rank by Domain (`mambalabs/website-traffic-rank-estimator`) Actor

Returns a research grade popularity RANK for any company domain from the public Tranco list, with a 40 day trend and an honest band. Ranks are not visit counts and this actor never invents one. Optional Cloudflare Radar and Chrome UX Report with your own keys. One flat row per company.

- **URL**: https://apify.com/mambalabs/website-traffic-rank-estimator.md
- **Developed by:** [Mamba Labs](https://apify.com/mambalabs) (community)
- **Categories:** SEO tools, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 1,000 company checkeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### 🔎 What can Website Traffic Rank Estimator do?

Give it a company domain. It returns that domain's position on the Tranco list, the date of that position, an honest band, and whether it has been rising or falling over the last 40 days. One flat row per company.

**These are RANKS, not traffic.** Tranco rank 238 does not convert to visits, sessions or a monthly number, and this actor will never hand you one that pretends otherwise.

| 📦 What you get | ⚙️ Features and integrations |
|---|---|
| 📊 **Tranco popularity rank** for any company domain<br>📈 **40 day trend** and direction of travel<br>🎚️ **Honest band**, such as `top_1k`, rather than a false precision<br>🧾 **20 flat fields**, `snake_case`, one row per company | 🔬 **Research grade list**, Tranco is built to resist manipulation<br>🔑 **Optional Cloudflare Radar and Chrome UX Report** with your own keys<br>🚫 **Never invents a visit count**, which is the whole point<br>⬇️ **Export** to JSON, CSV, Excel, HTML or XML |

Bought by teams sizing accounts before outreach, marketplace and partnership analysts, and anyone who needs a defensible popularity signal rather than a vendor's modeled estimate.

> 🚫 **A rank is not a visit count, and this actor will never sell you one.** Tools that quote monthly visits are modeling them from panel data. This returns a rank position from a published research list, plus a band and a trend. If you need visit estimates, buy a tool that models them and know that is what you bought.

### 💡 Why use Website Traffic Rank Estimator?

**The provenance is defensible.** Tranco is a research list built by combining several crawler rankings specifically to be harder to manipulate than any single one of them. If you have to justify a number to somebody, that is the property you want behind it.

**The band is the honest unit.** Rank 238 and rank 244 are the same fact about a company. Sorting a list on raw rank makes noise look like signal, so `rank_band` gives you the precision the data actually supports.

**The trend is free.** Tranco returns 40 days of history in the same response as the current rank, so `rank_trend` costs no extra request and no extra money.

**A skipped source says skipped.** If you did not give a Cloudflare key, the Radar column says `skipped`, not `not_found`. You will never mistake "we did not look" for "there is nothing there".

#### 🧭 Three sources, one free and two bring your own key

1. **Tranco**, the default and the primary. Free, public, no key, and it is the one with research grade provenance.
2. **Cloudflare Radar**, optional, with your own free Cloudflare token. It measures a different population from Tranco, so the numbers differ and neither is wrong.
3. **Chrome UX Report**, optional, with your own free Google API key. It reports real user performance rather than rank, and its most useful output is whether Chrome has enough real user data on the origin at all.

### 📋 What data can Website Traffic Rank Estimator extract?

Every row carries **20 flat fields**. These are the ones a buyer
actually filters and sorts on.

| Field | Type | Meaning |
|---|---|---|
| `degraded` | boolean | True when this row could not be produced normally, for example the company site was unreachable and no discovery could run. A degraded row is never charged. |
| `degradation_reason` | string | null | Why the row is degraded, in plain words. Null on a normal row. |
| `company_domain` | string | null | The company domain this row is about, normalized. Null when only a handle or a name was supplied. This is the join key across the whole Mamba Labs fleet. |
| `company_name` | string | null | The company name as supplied or derived. Improves search accuracy and is what the identity gate matches against. |
| `tranco_rank` | integer | null | Position on the Tranco list, where 1 is the most popular domain on the internet. This is a RANK and not a visit count: rank 238 does not convert to any number of visitors. Null when the domain is not on the list, which is true of most company domains and is a real answer. |
| `tranco_rank_date` | string | null | The date of the rank above. Tranco publishes daily, so a rank without a date is a number with no shelf life. |
| `rank_band` | string | null | top\_1k, top\_10k, top\_100k, top\_1m or beyond\_1m. This is the field to sort and filter on: rank 238 and rank 244 are the same fact about a company and look like different numbers, and the band is honest at the precision the data supports. |
| `rank_trend` | string | null | rising, falling or stable over the observation window. A LOWER rank is BETTER, so a domain whose rank number falls is rising in popularity. The field is a word rather than a signed number precisely because that inversion is easy to read backwards. |
| `rank_change` | integer | null | Newest rank minus oldest rank across the window. NEGATIVE means the domain became more popular. Read rank\_trend if you do not want to hold that inversion in your head. |
| `rank_observations` | integer | null | How many daily observations the trend was computed over. Tranco returns roughly 40. A trend computed over two points is not a trend, and this column is how you tell. |
| `rank_meets_threshold` | boolean | null | True when the rank is at or above the minRank threshold you set. FALSE means checked and below it. Null when you set no threshold or when the domain has no rank. |
| `radar_rank` | integer | null | Cloudflare Radar rank, when you supplied a Cloudflare token and asked for that source. Radar measures a different population from Tranco, so the two numbers will differ and neither is wrong. |
| `radar_bucket` | string | null | Radar publishes a bucket rather than an exact position for most domains. It is passed through as published rather than converted into a precise looking rank it is not. |
| `radar_status` | string | null | ok, not\_found, auth\_failed, blocked or skipped. SKIPPED means you did not ask for this source or supplied no key, and it must never be read as "there is nothing there". |
| `crux_has_data` | boolean | null | True when Chrome has enough real user data on this origin to report at all. FALSE is the interesting one: it means the site is visited too little for Chrome to publish a record, which is a stronger statement about real usage than any rank. Null when the source was skipped. |
| `crux_lcp_p75_ms` | integer | null | The 75th percentile largest contentful paint in milliseconds, from real Chrome users. This is a PERFORMANCE measurement, not traffic. |
| `crux_status` | string | null | ok, not\_found, auth\_failed, blocked or skipped. Skipped means you did not ask for this source or supplied no key. |
| `coverage` | number | null | How much of what this actor can return actually came back on this row, from 0 to 1. Computed over this actor value fields only, never over the identity or status columns. Null on a degraded row, where nothing was attempted. This is a reporting field: nothing is dropped for low coverage and no event fires on it. |
| `fetch_status` | string | ok, not\_found, not\_extractable, blocked, identity\_mismatch, auth\_failed or skipped. Read this before reading any value on the row. not\_found means we looked and there is nothing there; blocked and not\_extractable mean we could not look, and they must never be read as an absence. |
| `run_date` | string | ISO 8601 timestamp of this run. Social counts move, so a row without a date is a number with no shelf life. |

> ⚠️ **How to read these values.** `rank_change` is negative when a domain became MORE popular, because a lower rank is better. If you would rather not hold that in your head, read `rank_trend`, which says `rising` or `falling` in plain words.

### 🛠️ How to check how popular a company website is

1. Put a company domain in `company_domain`. That is the whole setup for the free source.
2. Set `minRank` if you want a ready made filter column, for example `10000` to mark everything in the top ten thousand.
3. Add your own Cloudflare or Google keys only if you want the optional sources.
4. For a list, pass an array of objects with the same fields.

#### 🧪 Using it in Clay

Add an **Enrichment > Apify** column, pick this actor, and map `company_domain` to your domain column.

The single most useful pattern: filter on `rank_band`, not on `tranco_rank`. Most B2B company domains are not on the Tranco list at all, and `tranco_rank: null` on a good prospect is normal rather than disqualifying. A rank is evidence of consumer scale reach, which is not the same as company quality.

### 💵 How much does it cost?

Pay per event. You are charged for output, never for input.

| Event | Fires when | Price |
|---|---|---|
| `company-checked` | 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.0025 |
| `rank-resolved` | 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. | $0.0020 |

> 💳 **What you are billed for.** `rank-resolved` fires only when a numeric rank came back. A domain absent from every source queried charges the check event and nothing else.
>
> The trend costs nothing: the history arrives in the same response as the rank.

**What the same coverage costs bought a la carte:** The obvious comparison is Similarweb, which the work order excludes and which is a paid subscription rather than a per lookup product. On the Apify Store the nearest actors are Similarweb scrapers, which are priced per result and are scraping a vendor that forbids it. Tranco is a published research list, so this actor charges for the lookup, the banding and the trend rather than for access to something that is free.

### ⌨️ Input

| Field | Type | Required | Meaning |
|---|---|---|---|
| `company_domain` | string | 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. |
| `company_name` | string | 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. |
| `sources` | string | 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. |
| `includeTrend` | string | 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. |
| `minRank` | string | 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. |
| `cloudflareApiToken` | string | 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. |
| `cruxApiKey` | string | 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. |
| `skipCache` | string | 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. |

```json
{
  "company_domain": "stripe.com",
  "company_name": "Stripe",
  "sources": "tranco",
  "includeTrend": "true"
}
```

### 📤 Output

Exports to **JSON, CSV, Excel, HTML or XML**. One flat, snake\_case row per
company. No nested objects, so it drops straight into Clay, a spreadsheet or a
warehouse table without a flattening step.

```json
{
  "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"
}
```

#### false versus null, and why the difference matters

`false` means we looked and the answer is no. `null` means we could not look,
or the platform withheld it. They are never interchangeable in this output. If
you filter for companies with no presence on this platform, filter on `false`,
because `null` rows are unknown rather than absent and including them will
overstate your list.

### 💡 Tips

- **Do not disqualify on a null rank.** Most B2B companies are nowhere near the top million, and that says nothing about whether they can buy from you.
- **Use `rank_band` for filtering and `tranco_rank` for display.**
- **`crux_has_data: false` is the strongest real usage signal here**, stronger than any rank: it means Chrome sees too few real visitors to publish anything.
- **A `falling` trend on a top 10k domain is worth a look.** It is one of the few signals here that suggests a change in a company's situation rather than its size.

### ⚠️ Known limits

- **Ranks are not traffic and cannot be converted into traffic.** There is no multiplier. Anyone offering one is guessing.
- **Most company domains are not ranked.** Tranco covers the top million or so; the great majority of B2B companies fall outside it and return `not_found`, correctly.
- **A rank measures consumer scale reach**, which correlates poorly with company revenue, headcount or buying power. A regional manufacturer with real money can rank nowhere.
- **Radar and CrUX need your own keys.** Without them those columns say `skipped`.
- **Tranco updates daily and ranks move**, which is why every row carries `tranco_rank_date`.

### ❓ FAQ

**How many visitors does rank 238 mean?**
There is no answer to that question and this actor will not invent one. Rank is a position, not a volume.

**Why is the rank null for my prospect?**
Because the domain is not on the Tranco list. That is normal for the large majority of B2B companies and is not a data quality problem.

**Do I need any API key?**
Not for Tranco, which is the default. Cloudflare Radar and Chrome UX Report need your own free keys.

**Why does `rank_change` go negative when things improve?**
Because rank 1 is the top. A number going down means moving up the list. `rank_trend` says it in words.

**Is Similarweb used?**
No. Never. The sources are Tranco, Cloudflare Radar and the Chrome UX Report, all of which publish for reuse.

### 🧩 Want other GTM data?

Mamba Labs builds a fleet of GTM enrichment actors that share one flat,
Clay-ready output convention, so their rows join on `company_domain` with no
cleaning step:

| | |
|---|---|
| 🕵️ [Agent Accessibility Auditor](https://apify.com/mambalabs/agent-accessibility-auditor) | 🤖 [AI Tooling Detector](https://apify.com/mambalabs/ai-tooling-detector) |
| 📡 [B2B Buying Signals Aggregator](https://apify.com/mambalabs/b2b-buying-signals-hiring-tech-stack-intent-for-clay) | 🚀 [Prospect Engine](https://apify.com/mambalabs/b2b-prospect-engine) |
| 📝 [Publishing Frequency Tracker](https://apify.com/mambalabs/blog-publishing-frequency) | ⏩ [Sequencer Lead Push](https://apify.com/mambalabs/clay-to-instantly-smartlead-push) |
| 🔄 [Company Change-Event Feed](https://apify.com/mambalabs/company-change-event-feed) | 🧭 [Company Discovery List Builder](https://apify.com/mambalabs/company-discovery-list-builder) |
| 🏢 [Company Firmographic Enricher](https://apify.com/mambalabs/company-firmographic-enricher) | 🪪 [Company Identity Resolver](https://apify.com/mambalabs/company-identity-resolver) |
| 🌐 [Company Social Presence Mapper](https://apify.com/mambalabs/company-social-presence-mapper) | 🏷️ [Contact Classifier](https://apify.com/mambalabs/contact-classifier) |
| 📬 [Domain Deliverability Checker](https://apify.com/mambalabs/domain-deliverability-checker) | 🔗 [Domain to LinkedIn URL Resolver](https://apify.com/mambalabs/domain-to-linkedin-url-resolver) |
| ✉️ [Work Email Waterfall Finder](https://apify.com/mambalabs/email-waterfall-orchestrator) | 🎪 [Event Presence Index](https://apify.com/mambalabs/event-presence-index) |
| 💰 [Funding and Press Signal Scanner](https://apify.com/mambalabs/funding-press-signal-scanner) | 🧑‍💼 [GTM Hiring Signal Scraper](https://apify.com/mambalabs/gtm-hiring-signal-scraper) |
| 📋 [Job Posting Monitor](https://apify.com/mambalabs/gtm-job-discovery) | 🧱 [Tech Stack Detector](https://apify.com/mambalabs/gtm-tech-stack-signal-scraper) |
| 🎯 [ICP Fit Scorer](https://apify.com/mambalabs/icp-account-lead-scoring-fit-scorer-0-100-for-clay) | 🔑 [Job Board Keyword Scanner](https://apify.com/mambalabs/job-board-keyword-signal-scanner) |
| ⚖️ [Legal Entity Resolver](https://apify.com/mambalabs/legal-entity-resolver) | 💼 [LinkedIn Company Page Mapper](https://apify.com/mambalabs/linkedin-company-presence-mapper) |
| 💬 [LinkedIn Post Tracker and Comment Capture](https://apify.com/mambalabs/linkedin-post-engager-capture) | 📸 [Instagram and Facebook Brand Mapper](https://apify.com/mambalabs/meta-brand-presence-mapper) |
| 📮 [Outbound Stack Detector](https://apify.com/mambalabs/outbound-infrastructure-fingerprint) | 📄 [Page Finder and Extractor](https://apify.com/mambalabs/page-finder-extractor) |
| 👤 [People Finder and Email Verifier](https://apify.com/mambalabs/people-finder) | 📌 [Pinterest Brand Presence Mapper](https://apify.com/mambalabs/pinterest-brand-presence-mapper) |
| 🏛️ [Government Contract Award Monitor](https://apify.com/mambalabs/public-award-monitor) | 📅 [Public Company Reporting Window Finder](https://apify.com/mambalabs/public-company-reporting-window-finder) |
| 👥 [Team Page People Extractor](https://apify.com/mambalabs/team-page-people-extractor) | 🎵 [TikTok Brand Presence Mapper](https://apify.com/mambalabs/tiktok-brand-presence-mapper) |
| 🏅 [Workplace Program Detector](https://apify.com/mambalabs/workplace-program-detector) | ▶️ [YouTube Channel Stats Extractor](https://apify.com/mambalabs/youtube-channel-transcript-extractor) |

> 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.

> 🛠️ **Need something custom built for you or your team?** Tell us what you are
> trying to find and we will build it. [Talk to Mamba Labs](https://mambabuilt.com/contact).

### 🆘 Support

Issues, field requests and bug reports: open an issue on the actor's Issues tab.
Mamba Labs reads every one.

> ℹ️ **Sourcing and legal.** Ranks come from the public Tranco research list, which publishes its methodology and its daily files. Optional Cloudflare Radar and Chrome UX Report fields require your own keys and are governed by your agreements with those providers. A rank measures relative popularity, not traffic, revenue or quality.

Built by [Mamba Labs](https://apify.com/mambalabs).

# Actor input Schema

## `company_domain` (type: `string`):

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.

## `company_name` (type: `string`):

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` (type: `string`):

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.

## `includeTrend` (type: `string`):

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.

## `minRank` (type: `string`):

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.

## `cloudflareApiToken` (type: `string`):

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.

## `cruxApiKey` (type: `string`):

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.

## `skipCache` (type: `string`):

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.

## `source_tag` (type: `string`):

Internal attribution tag set by Mamba Labs on published task examples. Not required, and nothing depends on it. Leave it empty.

## Actor input object example

```json
{
  "company_domain": "stripe.com",
  "company_name": "Stripe",
  "sources": "tranco",
  "includeTrend": "true",
  "minRank": "none",
  "skipCache": "false"
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset of one flat row per company, with per platform status so a blocked fetch never reads as a zero.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "company_domain": "stripe.com",
    "company_name": "Stripe"
};

// Run the Actor and wait for it to finish
const run = await client.actor("mambalabs/website-traffic-rank-estimator").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "company_domain": "stripe.com",
    "company_name": "Stripe",
}

# Run the Actor and wait for it to finish
run = client.actor("mambalabs/website-traffic-rank-estimator").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "company_domain": "stripe.com",
  "company_name": "Stripe"
}' |
apify call mambalabs/website-traffic-rank-estimator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mambalabs/website-traffic-rank-estimator"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/GnOFUzlNVIoXgeJjH/builds/aZLRswx6ibDPzuytg/openapi.json
