# Superteam Earn Scraper — Bounties, Projects & EV per Entry (`tactful_anvil/superteam-earn-scraper`) Actor

Scrape every Superteam Earn bounty and project: reward in USD, deadline, entries so far, naive EV per entry, verified-sponsor and AI-agent-allowed flags, skill categories and a 0-100 opportunity score. HTTP-only, no login, no API key.

- **URL**: https://apify.com/tactful\_anvil/superteam-earn-scraper.md
- **Developed by:** [Mr Zack](https://apify.com/tactful_anvil) (community)
- **Categories:** Developer tools, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 listing 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/platform/actors/running/actors-in-store#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

## Superteam Earn Scraper — Bounties, Projects & EV per Entry

Crypto freelancers check [Superteam Earn](https://superteam.fun/earn) the way clippers check a campaign board: every day, manually, hoping to catch a well-paid bounty before a hundred other people pile in. The board shows you a grid. It does not show you the three numbers that decide whether a bounty is worth your evening: **how much one entry is actually worth once you count the competition, how long you have, and whether the sponsor is trusted.**

**One run of this Actor returns every Superteam Earn listing as clean structured data**: reward in USD, deadline with days-remaining, entries already submitted, a naive **EV per entry**, verified-sponsor / featured / Pro-gated / **AI-agent-allowed** flags, skill categories, and a 0-100 opportunity score you can sort by.

No login, no API key, no browser, no proxy. HTTP-only, so runs finish in seconds.

### Who is this for?

- **Bounty hunters & crypto freelancers** — writers, designers, devs. Stop refreshing the board: sort by EV per entry, cap the competition with `maxSubmissions`, and see what is genuinely still winnable tonight.
- **Content creators** — most of the board is content bounties (threads, videos, articles). Filter `categories: ["Content"]` and catch the $10k sponsors before the crowd.
- **Sponsors & Superteam chapters** — benchmark your reward against every live listing: what does a thread bounty pay this month, and how many entries does $500 actually buy?
- **Analysts & builders** — ~2,000 completed listings of history in one pull: reward inflation, submission rates, category mix, sponsor activity over time.
- **AI agents (MCP)** — this board publishes an `agentAccess` flag, and some sponsors explicitly allow AI-agent submissions. `agentAllowedOnly: true` returns exactly the listings an agent may enter.

### What one row looks like

| Field | Example | Notes |
| --- | --- | --- |
| `title`, `type` | `Bring Your Web2 Ideas Onchain`, `bounty` | `bounty` = open competition; `project` = application-based gig; `hackathon` = side tracks |
| `status` | `open` | canonical: `open` / `in_review` / `completed` |
| `rewardUsd` | `5000` | stablecoin listings (USDC/USDT/USDG — ~94% of the board) convert 1:1. A reward in SOL or BONK stays `null` rather than a made-up number; amount + token always preserved |
| `minRewardUsd`, `maxRewardUsd` | `500`, `2000` | for range-compensated projects |
| `evPerEntryUsd` | `357.14` | **the signal the board hides**: reward ÷ (entries + yours). See honesty note below |
| `submissions` | `13` | entries already in — a real count, `0` included |
| `competition` | `medium` | `none` / `low` / `medium` / `high` / `brutal` |
| `deadline`, `daysLeft`, `closingWithin48h` | ISO, `9.3`, `false` | deadline math done for you |
| `categories` | `["Content"]` | Content / Design / Development / Other — a listing can carry several |
| `sponsorName`, `sponsorVerified`, `isFeatured` | `Superteam Vietnam`, `true`, `true` | trust signals |
| `agentAccess` | `AGENT_ALLOWED` | sponsor explicitly accepts AI-agent submissions |
| `isProGated` | `false` | restricted to Earn Pro members |
| `opportunityScore` | `81.5` | see below |
| `url` | direct link | straight to the listing |

Any value the board does not publish comes back `null` — never a fabricated zero.

#### EV per entry, honestly

`evPerEntryUsd = reward ÷ (entries + yours)` is deliberately naive: bounties pay a top-N split, not an equal split, and your odds depend on quality. But it is **comparable across the entire board**, which is what a ranking needs. A $10,000 bounty with 0 entries (EV $10,000) and a $500 bounty with 122 entries (EV $4.07) are different universes, and the grid renders them as identical cards. That is the gap this field closes.

#### How the opportunity score works

Deliberately simple, documented, reproducible — so you can argue with it:

- **45% reward size** — log-scaled $50 → $25k, because rewards span three orders of magnitude.
- **25% timing** — 3+ days left is full marks; a bounty closing tonight is not an opportunity no matter what it pays.
- **20% competition** — decays as entries pile in; 25 entries = half marks. On this board 0 entries genuinely means *uncontested*: payout happens once at judging, so there is no "has it ever paid" trap.
- **10% trust** — verified sponsor + featured placement.

Non-open listings and rewards without a USD value score `null`, never a guess.

### Input examples

The actionable board (default) — everything open, best first:

```json
{ "status": "open", "sortBy": "opportunity" }
```

The low-competition content hunter:

```json
{ "status": "open", "categories": ["Content"], "maxSubmissions": 10, "minRewardUsd": 300, "sortBy": "evPerEntry" }
```

Developer gigs from verified sponsors only:

```json
{ "status": "open", "categories": ["Development"], "verifiedSponsorsOnly": true, "sortBy": "reward" }
```

What may an AI agent enter?

```json
{ "status": "open", "agentAllowedOnly": true }
```

Full market history for analysis (~2,000 rows):

```json
{ "status": "all", "sortBy": "deadline", "maxItems": 5000 }
```

### How to schedule this Actor (recommended setup)

The board turns over fast: new bounties launch daily, deadlines expire, and a good listing collects a hundred entries within days. A scheduled run is how you enter on day one, when the EV is at its peak.

1. Run the Actor once with your input and check the results.
2. On the Actor page open the **…** menu and choose **Schedule Actor** (or go to [Schedules](https://console.apify.com/schedules) and click **Create new**).
3. Set the cron expression:
   - `0 7 * * *` — every morning. The natural cadence for this board.
   - `0 */6 * * *` — every 6 hours, when you are racing for fresh high-EV listings.
   - `0 8 * * 1` — Mondays, if you are tracking the market rather than hunting.
4. Attach your saved input. The open board is ~25 rows, so **every scheduled run costs about four cents**.
5. Add an integration so the board comes to you: **Integrations → Slack / Discord webhook / Google Sheets / Zapier / Make**, triggered on *Run succeeded*.

**Catching launches:** schedule `{ "status": "open", "maxSubmissions": 3, "sortBy": "evPerEntry" }` daily. Anything that appears is a listing almost nobody has entered yet — the exact window where a submission is most valuable.

### Why this Actor

- **The only Superteam Earn dataset on the Store** (checked Aug 2026) — the nearest bounty aggregator covers GitHub/Algora/Dework and does not touch Earn.
- **Signals the board does not show** — EV per entry, competition buckets, deadline math and a sortable score, all derived in the same run. No snapshot, no state, no second run.
- **HTTP-only** — full history in seconds, no proxy cost baked into the price.
- **Honest nulls** — volatile-token rewards and unpublished values are `null`, never invented; real zeros (0 entries) survive.
- **Pay per event** — tiny start fee plus a per-listing fee. A scheduled open-board run is ~$0.04; the full ~2,000-row history about $2.40.
- **No free-plan cap** — free-plan users get the same board as everyone else.

Hunting other money boards? Same treatment, same account: [Immunefi bug bounties](https://apify.com/tactful_anvil/immunefi-bug-bounty-audit-competition-scraper), [Web3 audit contests (Code4rena, Sherlock, CodeHawks, Cantina)](https://apify.com/tactful_anvil/web3-audit-contest-aggregator) and [Merkl DeFi rewards](https://apify.com/tactful_anvil/merkl-defi-rewards-scraper).

### FAQ

**Is this legal?** The Actor reads the public listings API — the same data anyone sees on the board without logging in. No login, no private data, no bypassing access controls. Submissions, user profiles and anything behind auth are not touched. Review Superteam's terms for your specific use case.

**Is `evPerEntryUsd` a payout promise?** No. It is arithmetic over two published numbers, documented above precisely so you can disagree with it. Winning still depends on the quality of your work.

**Why is `rewardUsd` null on some rows?** The reward is denominated in a volatile token (SOL, JUP, BONK…) with no published USD rate, or the compensation is `variable`. The original amount and token are always in `rewardAmountRaw` / `token`. We don't invent exchange rates.

**What does `agentAccess: "AGENT_ALLOWED"` mean?** The sponsor explicitly accepts submissions produced by AI agents. `HUMAN_ONLY` listings should not be entered by bots — respect it.

**How fresh is the data?** Each run fetches the live board at that moment. See the scheduling section for a hands-off setup.

**Found a bug, or want another field (region, skills detail)?** Open a ticket on the **Issues** tab.

### Changelog

- **0.1** — Initial release: full board (open / in-review / ~2k completed), USD conversion for stablecoin rewards, EV per entry, competition buckets, category enrichment, agent-access filter, opportunity score, pay-per-event.

### Was this Actor useful?

If it caught you a bounty before the crowd arrived, a short review on the Store page helps other hunters decide whether to try it. Reviews are the only signal buyers have before they spend anything.

If something is wrong instead, please open a ticket on the **Issues** tab rather than leaving it broken — API drift and field requests get fixed.

# Actor input Schema

## `status` (type: `string`):

Which part of the board to pull. `open` = live listings you can still enter (default). `review` = deadline passed, winners being judged. `completed` = winners announced (~2k rows of history). `all` = everything.

## `types` (type: `array`):

Keep only these listing types. Empty = all. `bounty` = open competition, many submit, top N win. `project` = application-based freelance gig. `hackathon` = hackathon side tracks.

## `categories` (type: `array`):

Keep only listings tagged with at least one of these skill categories.

## `minRewardUsd` (type: `integer`):

Keep only listings whose fixed reward (or range maximum) is at least this many USD. Listings paid in volatile tokens have no USD value and are excluded by this filter.

## `maxSubmissions` (type: `integer`):

Cap the competition: keep only listings with at most this many submissions already in. Try 10 for boards almost nobody has found yet.

## `minDaysLeft` (type: `integer`):

Skip listings that close sooner than this many days from now (open listings only).

## `verifiedSponsorsOnly` (type: `boolean`):

Keep only listings from sponsors Superteam has verified.

## `agentAllowedOnly` (type: `boolean`):

Keep only listings whose sponsor explicitly allows AI-agent submissions (`agentAccess: AGENT_ALLOWED`).

## `excludeProGated` (type: `boolean`):

Drop listings restricted to Superteam Earn Pro members.

## `enrichCategories` (type: `boolean`):

Tag every row with its skill categories (4 extra API calls). Turn off for the absolute fastest run; any category filter forces this on.

## `searchText` (type: `string`):

Case-insensitive match against title, sponsor, type, categories and token. Example: "solana", "video", "rust".

## `sortBy` (type: `string`):

Order of the results.

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

Hard cap on pushed results — you are only charged for what is returned.

## Actor input object example

```json
{
  "status": "open",
  "types": [],
  "categories": [],
  "verifiedSponsorsOnly": false,
  "agentAllowedOnly": false,
  "excludeProGated": false,
  "enrichCategories": true,
  "sortBy": "opportunity",
  "maxItems": 1000
}
```

# Actor output Schema

## `listings` (type: `string`):

One row per Superteam Earn listing: reward in USD, deadline, entries, EV per entry, sponsor trust flags and opportunity score.

# 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 = {
    "types": [],
    "categories": [],
    "searchText": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("tactful_anvil/superteam-earn-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 = {
    "types": [],
    "categories": [],
    "searchText": "",
}

# Run the Actor and wait for it to finish
run = client.actor("tactful_anvil/superteam-earn-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 '{
  "types": [],
  "categories": [],
  "searchText": ""
}' |
apify call tactful_anvil/superteam-earn-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tactful_anvil/superteam-earn-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/31XQRrcxISDMuQ9LD/builds/HKuyhlBasXHTf4C1S/openapi.json
