# Outbid.lol Leaderboard Scraper (`actor_builder/outbid-scraper`) Actor

Scrape the outbid.lol pay-to-rank leaderboard: rank, product name, URL, bid amount, claim price, clicks, category and description for every listed product.

- **URL**: https://apify.com/actor\_builder/outbid-scraper.md
- **Developed by:** [Green Salad](https://apify.com/actor_builder) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 results

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

## Outbid.lol Leaderboard Scraper

Scrape the [outbid.lol](https://outbid.lol/) pay-to-rank leaderboard, an "attention market" where products bid real money to claim a rank. Get every product's rank, bid, claim price, clicks, category and description.

### Use cases

- **Track attention spend**: see which products pay the most for visibility and how bids move over time
- **Market intelligence**: follow AI and SaaS launches and the categories they compete in
- **Discover trending tools** by category, clicks and spend

### Input

| Field | Default | Description |
|---|---|---|
| `maxItems` | `10` | Maximum leaderboard entries to scrape. `0` = all (~3,000). |
| `proxyConfiguration` | Residential | Residential proxy helps pass outbid.lol's bot challenge. |

### Output

One item per leaderboard entry:

```json
{
  "rank": 2,
  "name": "Tutti — Your all-in-one marketplace to monetize influence",
  "url": "https://tutti.so/join",
  "bid": 16000,
  "claimPrice": 16001,
  "clicks": 15553,
  "timeAgo": "last month",
  "category": "Marketing",
  "categorySlug": "marketing-advertising",
  "description": "Join campaigns from real brands and get paid on effective exposure and engagement. No minimum followers. Performance-based payouts for creators on X/Twitter."
}
```

| Field | Description |
|---|---|
| `rank` | Leaderboard position (1 = top) |
| `name` | Product name |
| `url` | Product URL (tracking parameters removed) |
| `bid` | Current bid in USD |
| `claimPrice` | Price in USD to take this rank |
| `clicks` | Clicks the listing has received (`null` if not shown) |
| `timeAgo` | When the rank was last claimed, as shown on the site (e.g. `2 weeks ago`, `last month`) |
| `category`, `categorySlug` | Category name and slug |
| `description` | Product description |

### How it works

outbid.lol sits behind Vercel's bot challenge, which blocks plain HTTP scrapers. The actor uses a real browser (Playwright) to pass it, reads the leaderboard (50 entries per page) and pages through until `maxItems` is reached.

### Support

Found a bug, need a new field or want a custom scraper? Open an issue on the **Issues** tab or email **<apifybuilder@gmail.com>**.

# Actor input Schema

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

Maximum leaderboard entries to scrape. 0 = all (~3,000).

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

Residential proxies recommended — outbid.lol runs Vercel Attack Challenge Mode; a real browser solves the challenge, residential IPs reduce blocks.

## Actor input object example

```json
{
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `entries` (type: `string`):

Leaderboard entries with rank, bid, clicks and category.

# 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": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("actor_builder/outbid-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": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("actor_builder/outbid-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": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call actor_builder/outbid-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,actor_builder/outbid-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/kHS1tcW8Q4BRor33b/builds/RXtWVAT4QNzZB2wfg/openapi.json
