# outseo.lol Scraper — Organic Clicks Leaderboard & Benchmarks (`haketa/outseo-scraper`) Actor

Scrape the outseo.lol organic-traffic leaderboard — every ranked website with its real Google Search Console click volume and rank — plus benchmarks: the Organic Index, biggest movers, CTR by Google position and visibility. Export as JSON, CSV or Excel; schedule to track it over time.

- **URL**: https://apify.com/haketa/outseo-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** SEO tools, Developer tools
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.50 / 1,000 leaderboard sites

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Searchange Scraper (formerly outseo.lol) — Organic Clicks Leaderboard & SEO Benchmarks 📈🔍

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-00b04f?style=flat-square\&logo=apify)](https://apify.com/haketa/outseo-scraper)
[![Platform](https://img.shields.io/badge/Platform-Searchange.com%20\(outseo.lol\)-blueviolet?style=flat-square)](https://www.searchange.com/)
[![Verified Data](https://img.shields.io/badge/Traffic-Real%20Search%20Console%20Clicks-brightgreen?style=flat-square)](https://apify.com/haketa/outseo-scraper)
[![Change Tracking](https://img.shields.io/badge/Change%20Tracking-Rank%20%26%20Clicks%20Diff-orange?style=flat-square)](https://apify.com/haketa/outseo-scraper)
[![Enrichment](https://img.shields.io/badge/Enrichment-Contact%20Emails%20Opt--in-blue?style=flat-square)](https://apify.com/haketa/outseo-scraper)
[![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-2b7489?style=flat-square)](https://apify.com/haketa/outseo-scraper)
[![Maintenance](https://img.shields.io/badge/Maintained-Active-brightgreen?style=flat-square)](https://apify.com/haketa/outseo-scraper)

**Extract real Google Search Console organic click volume and aggregate SEO benchmarks from [searchange.com](https://www.searchange.com/) (formerly outseo.lol) into clean structured datasets.** This **Searchange scraper** (a.k.a. the **outseo.lol scraper**) captures the full **organic-clicks leaderboard** — every ranked domain with its **verified Google Search Console monthly click volume** (never a modelled estimate) — alongside aggregate macro benchmarks: the **Organic Index**, **biggest momentum movers**, **Google position CTR curve**, impression **visibility segments**, and dated **weekly search pulse snapshots**.

Export every record directly to **JSON, CSV, Excel, or API** in seconds.

> Built for **SEO consultants, performance marketing agencies, growth leads, indie hackers, SaaS founders, and venture analysts** who need ground-truth organic traffic numbers and historical ranking volatility.

***

### ⚡ At a glance

| Feature | Details |
|---|---|
| **Target Website** | [searchange.com](https://www.searchange.com/) (formerly outseo.lol) |
| **Output Formats** | JSON, CSV, Excel (XLSX), XML, HTML Table, RSS, API |
| **Data Scope** | Ranked Leaderboard, Weekly Reports, Macro SEO Stats |
| **Click Accuracy** | 100% First-Party (Verified Google Search Console data) |
| **Change Tracking** | Automatic diffing vs previous runs (`new`, `up`, `down`, `gone`) |
| **Enrichment Mode** | Optional contact email discovery on ranked domains |
| **CTR Curve** | Real CTR-by-Google-position averages across verified sites |
| **Speed** | Full extraction in under 10–15 seconds |
| **Proxy Requirement** | Apify Datacenter Proxy (lightweight and ultra-fast) |
| **Pricing Model** | Usage-based transparent pay-per-event |

***

### 🔎 Why scrape Searchange (outseo.lol)?

[Searchange](https://www.searchange.com/) (the former **outseo.lol**) is the web's primary public leaderboard of websites ranked by their **actual organic search clicks**, pulled directly from **verified Google Search Console** accounts across participating companies. Unlike traditional SEO intelligence suites (such as Ahrefs, Semrush, or Sistrix) that generate algorithmic traffic estimates based on third-party keyword search volumes and estimated click-through rates, Searchange publishes **genuine, first-party Search Console clicks**.

Key data assets available on Searchange:

- **Verified Organic Clicks Leaderboard:** Discover which indie products, media sites, and SaaS platforms generate millions of monthly organic visits.
- **Empirical CTR Curve:** Access real, impression-weighted CTR percentages for Google organic positions 1 through 10+.
- **Macro Organic Index:** Track median growth rates across the entire portfolio of verified websites to monitor broader Google core update impacts.
- **Biggest Movers:** Spot breakout websites gaining 50% to 300%+ month-over-month click growth.

Manually recording these shifts from dynamic Next.js dashboards is cumbersome. This **Searchange data extractor** automates snapshots: it captures the full leaderboard, computes ranking and traffic deltas against previous runs, extracts macro CTR metrics, and outputs normalized datasets ready for reporting and BI modeling.

***

### 🎯 Key Use Cases & Industry Applications

#### 1. High-Precision Organic CTR Modeling

Traditional SEO forecasting relies on outdated static CTR assumptions (e.g. "Position 1 always gets 30%"). By scraping Searchange's empirical `ctrByPosition` table, growth teams and agency strategists can model expected traffic gains using live, verified cohort click-through benchmarks.

#### 2. Emerging Product & Competitor Intelligence

Spot fast-scaling indie projects, AI web applications, and niche content portals before they appear on venture radars. Observing sudden momentum spikes on the leaderboard highlights effective content strategies and programmatic SEO architectures.

#### 3. B2B Sales & Agency Lead Generation

Turn on `enrichEmails: true` to automatically extract verified executive and contact emails directly from ranked domains. High-traffic websites scaling organic clicks represent prime prospects for conversion optimization, infrastructure hosting, ad networks, and monetization tools.

#### 4. Google Algorithm Update Impact Analysis

Schedule the actor weekly to build a historical time-series database. Measuring shifts in the `Organic Index` (percentage of sites growing vs. declining) reveals whether Google core updates are penalizing or rewarding programmatic and niche publishers.

#### 5. Automated Client Reporting & Benchmarking

SEO agencies can stream macro benchmarks into client slide decks and dashboards, proving whether a client's performance trends align with broader organic search industry movements.

***

### ✨ Key Features & Capabilities

- ✅ **First-Party Organic Click Volume:** Extracts `organicClicks` derived from actual Google Search Console data (ranging from 100 to 1.8M+ monthly visits).
- ✅ **Stateful Change Tracking:** Automatically compares results against the previous run stored in persistent key-value memory, tagging sites as `new`, `up`, `down`, `clicks-changed`, `unchanged`, or `gone`.
- ✅ **Rank & Traffic Deltas:** Calculates exact numerical deltas (`rankDelta` and `clicksDelta`) to quantify weekly momentum.
- ✅ **Complete Google CTR Curve:** Extracts average click-through rate percentages and sample size counts for every organic SERP rank.
- ✅ **Macro SEO Metrics:** Scrapes the **Organic Index**, median cohort growth percentage, and the ratio of expanding versus contracting websites.
- ✅ **Optional Email Discovery:** Scans ranked domains across root and contact pages (`/contact`, `/about`) to identify direct outreach emails with automated junk filtering.
- ✅ **Device & Market Breakdown:** Captures device click shares (Desktop vs. Mobile vs. Tablet) and geographical search market visibility distributions.
- ✅ **Fast, Lightweight Architecture:** Direct HTTP extraction requires under 15 seconds per execution without heavy browser overhead.

***

### 📊 Macro Benchmark Data Assets

Beyond the domain leaderboard, Searchange aggregates first-party search telemetry across participating websites into several valuable analytical datasets:

#### 1. The Organic Index

The Organic Index serves as a macro barometer for Google search volatility:

- **Index Value:** Composite momentum score representing total indexed search activity.
- **Median Growth Percentage:** Baseline expansion rate for participating websites over a trailing 30-day window.
- **Growing vs. Declining Split:** The exact percentage of websites experiencing positive organic traffic growth versus traffic contraction.
- **Active Website Cohort:** Total verified domains currently benchmarked in the calculation.

#### 2. Empirical Google Position CTR Curve (`ctrByPosition`)

Rather than relying on theoretical click curves, Searchange calculates the weighted click-through rate across millions of real impressions:

- **Position 1:** Top-ranking average CTR (~28–35%).
- **Position 2–3:** Strong commercial intent CTR brackets (~14–22%).
- **Position 4–10:** Page-one lower tier click-through dynamics (~2–8%).
- **Impression Volume & Cohort Sample:** Every position bracket discloses the number of benchmarked sites contributing to the data.

#### 3. Biggest Momentum Movers (`biggestMovers`)

Identifies the top 10 fastest-growing domains in search:

- **Surge Percentage:** Month-over-month click growth (frequently exceeding +100% to +500%).
- **Rank Trajectory:** Historical ranking climb inside the leaderboard.
- **Direct Domain Mapping:** Clean destination URLs to audit emerging content structures.

#### 4. Device & Geographical Search Distribution (`segments`)

Analyzes macro audience distributions:

- **Device Shares:** Desktop vs. Mobile vs. Tablet traffic percentages across the aggregate cohort.
- **Country Market Rankings:** Top search markets (e.g. United States, United Kingdom, Germany, India) with total impression shares and pooled CTR rates.

***

### 📥 Input Configuration

Configure your extraction via the Apify Console graphical interface or pass JSON directly through the Apify API. Every parameter is optional — running with default settings collects the full published leaderboard and benchmark snapshots.

| Parameter | Type | Default | Description |
|---|---|---|---|
| `includeLeaderboard` | Boolean | `true` | Scrape the public leaderboard — one row per ranked website with its rank, domain, URL, and verified click volume. |
| `maxItems` | Integer | `100` | Maximum leaderboard sites to collect. Leave empty or set to `100` to capture all published rows. |
| `trackChanges` | Boolean | `true` | Compare against the previous run in persistent storage to calculate rank and click deltas. |
| `enrichEmails` | Boolean | `false` | Visit each leaderboard website to extract direct business contact emails. |
| `maxConcurrency` | Integer | `10` | Maximum parallel worker threads when email enrichment is active (1 to 20). |
| `includeStats` | Boolean | `true` | Scrape `/stats` (Organic Index, CTR by position curve, biggest movers, visibility bands). |
| `includeWeeklyReport` | Boolean | `true` | Scrape `/reports/weekly` (dated State of Organic Search editorial summary and signals). |
| `proxyConfiguration` | Object | `{ "useApifyProxy": true }` | Proxy configuration. Apify Datacenter proxies provide instant response times. |

#### Example Input JSON

```json
{
  "includeLeaderboard": true,
  "maxItems": 100,
  "trackChanges": true,
  "enrichEmails": false,
  "includeStats": true,
  "includeWeeklyReport": true
}
```

***

### 📊 Output Data Structure

The actor outputs two distinct record types: individual **site** rows from the leaderboard, and aggregate **benchmark** snapshot objects.

#### Sample CSV Export Preview (Leaderboard Sites)

| recordType | rank | domain | organicClicks | changeType | rankDelta | clicksDelta | url |
|---|---|---|---|---|---|---|---|
| site | 1 | youtubetotranscript.com | 1720000 | unchanged | 0 | 0 | https://youtubetotranscript.com |
| site | 2 | docsketch.com | 845000 | up | +2 | +42000 | https://docsketch.com |
| site | 3 | summarize.tech | 780000 | down | -1 | -15000 | https://summarize.tech |
| site | 4 | pdfgeneratorapi.com | 610000 | new | null | null | https://pdfgeneratorapi.com |

***

#### Field Dictionary & Quality Indicators

##### 🏷️ Leaderboard Site Records (`recordType: "site"`)

| Field Name | Type | Quality | Description |
|---|---|---|---|
| `recordType` | String | 🟢 High | Constant identifier: `"site"` |
| `rank` | Integer | 🟢 High | Current leaderboard position (1 being highest clicks) |
| `domain` | String | 🟢 High | Clean root domain of the ranked website |
| `url` | String | 🟢 High | Canonical website URL (referral tracking stripped) |
| `organicClicks` | Integer | 🟢 High | Actual Google Search Console monthly organic click volume |
| `description` | String | 🟢 High | Published website summary or project tagline |
| `isLuckyDuck` | Boolean | 🟢 High | Spotlight / featured homepage badge indicator |
| `changeType` | String | 🟢 High | Delta classification: `new`, `up`, `down`, `clicks-changed`, `unchanged`, or `gone` |
| `rankDelta` | Integer | 🟡 Conditional | Positions gained (+) or lost (-) since previous scrape |
| `clicksDelta` | Integer | 🟡 Conditional | Click volume difference compared to last run baseline |
| `previousRank` | Integer | 🟡 Conditional | Numerical position during previous crawl |
| `previousClicks` | Integer | 🟡 Conditional | Click count recorded during previous crawl |
| `emails` | Array | 🟡 Conditional | Discovered contact emails (when `enrichEmails: true`) |
| `scrapedAt` | String | 🟢 High | ISO 8601 timestamp of extraction |

##### 📊 Benchmark Snapshot Records (`recordType: "benchmark"`)

| Field Name | Type | Quality | Description |
|---|---|---|---|
| `recordType` | String | 🟢 High | Constant identifier: `"benchmark"` |
| `source` | String | 🟢 High | Origin path: `"stats"` or `"weekly"` |
| `week` | String | 🟡 Conditional | Official editorial report date (e.g. "Week of October 26, 2026") |
| `organicIndex` | Object | 🟢 High | Macro index: `{ value, medianGrowthPct, websites, growingPct, decliningPct }` |
| `ctrByPosition` | Array | 🟢 High | Array of SERP positions with `avgCtrPct` and sample `sites` |
| `biggestMovers` | Array | 🟢 High | Top surging domains with percentage click growth |
| `visibility` | Array | 🟢 High | Impression visibility distribution brackets |
| `segments` | Array | 🟢 High | Structured device and country market click distributions |
| `narrative` | String | 🟡 Conditional | Editorial headline analysis of current search conditions |

***

#### Sample Output Record (JSON)

```json
{
  "recordType": "site",
  "rank": 3,
  "domain": "summarize.tech",
  "url": "https://www.summarize.tech",
  "organicClicks": 782410,
  "description": "AI-powered YouTube video summarizer using GPT-4",
  "isLuckyDuck": false,
  "changeType": "up",
  "rankDelta": 1,
  "clicksDelta": 34100,
  "previousRank": 4,
  "previousClicks": 748310,
  "emails": [
    "contact@summarize.tech"
  ],
  "source": "leaderboard",
  "scrapedAt": "2026-11-10T12:00:00.000Z"
}
```

#### Sample Benchmark Record (JSON)

```json
{
  "recordType": "benchmark",
  "source": "stats",
  "url": "https://www.searchange.com/stats",
  "visitors": 1420500,
  "websitesBenchmarked": 284,
  "organicIndex": {
    "value": 114.2,
    "medianGrowthPct": 4.8,
    "websites": 284,
    "growingPct": 58.2,
    "decliningPct": 41.8
  },
  "ctrByPosition": [
    { "position": "Position 1", "avgCtrPct": 31.4, "sites": 284 },
    { "position": "Position 2", "avgCtrPct": 17.8, "sites": 284 },
    { "position": "Position 3", "avgCtrPct": 11.2, "sites": 284 },
    { "position": "Position 4-10", "avgCtrPct": 4.1, "sites": 284 }
  ],
  "biggestMovers": [
    { "rank": 1, "site": "ai-transcript.io", "changePct": 142.5 }
  ],
  "scrapedAt": "2026-11-10T12:00:00.000Z"
}
```

***

### 💻 Programmatic Usage & Code Examples

Automate your SEO benchmarking pipeline via the official Apify Client libraries.

#### Python SDK Example

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "includeLeaderboard": True,
    "trackChanges": True,
    "includeStats": True
}

run = client.actor("haketa/outseo-scraper").call(run_input=run_input)

## Print leaderboard sites
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    if item.get("recordType") == "site":
        print(f"#{item.get('rank')} {item.get('domain')} - {item.get('organicClicks'):,} clicks ({item.get('changeType')})")
```

#### Node.js Example

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('haketa/outseo-scraper').call({
    includeLeaderboard: true,
    trackChanges: true,
    includeStats: true
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Retrieved ${items.length} Searchange leaderboard and benchmark items!`);
```

***

### 🔄 Automated Workflows & Integrations

- **Google Sheets & Airtable Sync:** Schedule weekly runs to log organic rank shifts, click totals, and movement deltas directly into your tracking sheets.
- **Slack / Discord Outbound Alerts:** Trigger automated messages whenever a site moves into the top 10 or logs over 1M organic clicks.
- **Data Warehouse Ingestion:** Load dated snapshots into BigQuery, Snowflake, or PostgreSQL to calculate historical volatility curves.
- **Lead Generation Webhooks:** Send newly discovered domains and contact emails straight into Apollo or HubSpot for outbound outreach.

***

### 🚀 Step-by-Step Quick Start Guide

1. **Open the Actor:** Navigate to [Searchange Scraper](https://apify.com/haketa/outseo-scraper) in the Apify Console.
2. **Review Default Settings:** The default configuration automatically scrapes the Leaderboard, Stats, and Weekly Report with change tracking enabled.
3. **Optional Customization:** If you want contact discovery, toggle `enrichEmails: true`. If you only want the top 20 domains, set `maxItems: 20`.
4. **Run the Scraper:** Click the **Start** button. The extraction will complete in approximately 10 to 15 seconds.
5. **Download Your Dataset:** Navigate to the **Dataset** tab and export your records as JSON, CSV, or Excel.
6. **Automate Weekly Runs:** Go to the **Schedules** tab and create a weekly cron job to build your ongoing time-series database.

***

### 💡 Practical Scraping Tips & Best Practices

- **Build Long-Term Time Series:** Schedule the actor to run once a week. Because each crawl records an immutable `scrapedAt` timestamp, you can graph historical growth trajectories over months.
- **Model SERP Valuation with CTR Curve:** Multiply your target keyword search volume by Searchange's empirical `avgCtrPct` for position 1 vs. position 5 to forecast financial uplift before investing in content campaigns.
- **Monitor the Organic Index:** An `Organic Index` median growth below 0% signals broad SERP volatility or search volume contractions across the web.
- **Target Surging Competitors:** Review `biggestMovers` on the stats snapshot to analyze the content strategy of sites gaining 100%+ click velocity.

***

### ❓ Frequently Asked Questions (FAQ)

##### Are these click numbers estimates or real data?

The click numbers published on Searchange are **100% real, first-party data** derived from verified Google Search Console integrations across participating websites. They are not modeled or estimated.

##### Is this the outseo.lol scraper?

Yes! The website originally launched as outseo.lol and subsequently rebranded to searchange.com. This actor directly queries the canonical searchange.com platform.

##### How does stateful change tracking work?

The actor maintains a persistent Named Key-Value store on Apify (`outseo-leaderboard-state`). On each run, it compares the freshly scraped leaderboard against the stored baseline, automatically labeling sites as `new`, `up`, `down`, `clicks-changed`, or `gone` with exact rank and click deltas.

##### How fast does a complete scrape take?

A full run covering the entire leaderboard, Stats page, and Weekly report completes in approximately 10 to 15 seconds.

##### Does email enrichment slow down the run?

Yes. When `enrichEmails: true` is enabled, the actor visits each ranked website to detect contact emails. This adds 30–60 seconds depending on concurrency settings. Leave it disabled if you only need traffic metrics.

##### Can I export to CSV or Excel?

Yes. All datasets can be exported directly from the Apify Console as CSV, Excel (XLSX), JSON, XML, or HTML tables.

##### How does email enrichment handle Cloudflare-obfuscated emails?

Many modern websites encode contact emails using Cloudflare email protection (`data-cfemail` hex blocks). The actor features a built-in XOR decoder that reverses this obfuscation in memory, ensuring you capture valid email addresses that standard scrapers miss.

##### What happens if a domain drops off the leaderboard?

When `trackChanges: true` is enabled, any domain that appeared in the previous crawl but no longer appears in the top rankings is emitted as a distinct record with `changeType: "gone"`. This ensures your historical database accurately reflects market turnover.

##### Can I query the dataset via REST API?

Yes! Every Apify dataset has a dedicated REST endpoint. You can request items formatted as JSON or CSV using standard HTTP GET calls, or use client libraries in Python, JavaScript, and Go.

##### Are proxies required to scrape Searchange?

The site runs on Next.js on Vercel without aggressive anti-bot gates. Standard Apify Datacenter proxies are enabled by default and are more than sufficient for fast, reliable extraction.

##### How frequently should I schedule this actor?

Because Searchange updates its macro benchmarks and weekly report once per week, scheduling the actor to run every Monday morning creates an optimal, automated weekly market intelligence digest.

***

### 🔗 Related SEO & Analytics Scrapers

- **[Google Trends Scraper](https://apify.com/haketa/google-trends-scraper)** — Real-time keyword interest and regional search momentum.
- **[Bulk Metadata Extractor](https://apify.com/haketa/bulk-metadata-extractor)** — Rapid extraction of meta titles, descriptions, and OpenGraph tags.
- **[Bulk URL Checker](https://apify.com/haketa/bulk-url-checker)** — High-volume HTTP status code, redirect, and latency auditing.
- **[Google Play Scraper](https://apify.com/haketa/google-play-scraper)** — App rankings, install metrics, and user review intelligence.

***

### 📋 Changelog

#### v1.2 (2026-11)

- **Deep Pagination & Scale:** Verified deep pagination controls and unlimited leaderboard capture.
- **Schema Validation:** Fixed dataset schema to exclusively utilize views, fully compliant with Apify Actor specification v1.
- **Pay-Per-Event Billing Wiring:** Integrated verified `Actor.charge()` events for listings, detected changes, and email enrichments.
- **Documentation Overhaul:** Added visual shields, `⚡ At a glance` quick reference, and comprehensive field coverage matrix.

#### v1.1

- **Stateful Change Tracking:** Added named KV store persistence to compute rank and click deltas between runs.
- **Contact Email Enrichment:** Implemented Cloudflare obfuscation decoding and junk email filtration.

#### v1.0

- Initial stable release covering Searchange/outseo.lol leaderboard, Stats, and Weekly report snapshots.

# Changelog

This Actor's version history is a separate document: https://apify.com/haketa/outseo-scraper/changelog.md

# Actor input Schema

## `includeLeaderboard` (type: `boolean`):

Scrape the searchange.com leaderboard — one row per ranked website with its rank, domain, real organic click volume and description.

## `maxItems` (type: `integer`):

Cap the number of leaderboard sites. Leave empty for all.

## `trackChanges` (type: `boolean`):

Compare against the previous run and add change info to each site (new, up, down, gone, with rank and click deltas). Needs at least two runs.

## `enrichEmails` (type: `boolean`):

Visit each leaderboard site and extract contact emails (adds time and cost). Off by default.

## `maxConcurrency` (type: `integer`):

How many sites to visit in parallel when email enrichment is on.

## `includeStats` (type: `boolean`):

Scrape searchange.com/stats (Organic Index, biggest movers, CTR by position, visibility, segments).

## `includeWeeklyReport` (type: `boolean`):

Scrape searchange.com/reports/weekly (the weekly 'State of Organic Search' snapshot with the report date).

## `proxyConfiguration` (type: `object`):

Apify Proxy is recommended (datacenter is enough).

## Actor input object example

```json
{
  "includeLeaderboard": true,
  "maxItems": 100,
  "trackChanges": true,
  "enrichEmails": false,
  "maxConcurrency": 10,
  "includeStats": true,
  "includeWeeklyReport": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

URL to the scraped dataset items

# 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 = {
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/outseo-scraper").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 = {
    "maxItems": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/outseo-scraper").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 '{
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call haketa/outseo-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,haketa/outseo-scraper"
        }
    }
}
```

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/x8O7OBsy99DiEgpS5/builds/fqHQ1h1cEk1sha7Ef/openapi.json
