Superteam Earn data, explained: the Solana bounties dataset
What Superteam Earn is
Superteam Earn is the board where Solana ecosystem sponsors post paid work: content bounties, design briefs, QA projects, bug bounties. Sponsors set a reward in USDC or USDG, a deadline, and an acceptance policy. Anyone can browse the public site, but the site is backed by an API that returns structured rows: reward amounts, tokens, deadlines, submission counts, sponsor names, and whether listings are marked HUMAN_ONLY or AGENT_ALLOWED.
A Solana bounties dataset is a snapshot of that API, flattened into files you can query offline. The pack documented here was harvested from the public API on 2026-09-04 and ships three files: a raw card dump, a set of full listing descriptions, and a map of 186+ API routes. The dataset page has the download and sample links.
What is inside the Superteam Earn dataset
- earn-listings-cards.json, 51 card records. This is the raw paginated cards API dump: the same 17 live listings appear once per page, so 17 unique listings × 3 pages = 51 rows. Keep the duplication in mind when you count;
get_statsandquery_datasetread the file as-is. - earn-listings-full-descriptions.json, 28 listings with full description HTML. The public cards API truncates this field. The descriptions carry the scope, deliverables, and judging criteria that never make it into the card rows. Fields: slug, title, reward, token, deadline, desc. Sixteen of the 17 card listings appear here too; the other 12 descriptions are listings that had aged out of the live cards feed by harvest day.
- earn-api-endpoints.txt, 186+ reverse-engineered routes across 34 path groups: listings, comments, submissions, bookmarks, grants, hackathons, homepage stats, sponsor dashboard operations, and more. Includes the undocumented
/api/search/{title}endpoint that returns full description text, plus notes on the Privy passwordless auth flow and token refresh. - earn-README.md, the harvest notes: date, source, and file inventory.
One more quirk to know before you query: the two files overlap but do not match. 16 of the 17 live card listings have full descriptions, and 12 description rows are listings that already rotated off the live cards feed. The cards file is a point-in-time feed capture; the descriptions file reaches further back. Treat them as complementary, not duplicates.
Every column in earn-listings-cards.json
18 fields, one row per card record.
| Field | What it holds |
|---|---|
| id | Listing UUID from the API |
| slug | URL slug, for example create-content-for-breakpoint-2026 |
| title | Listing title as posted by the sponsor |
| type | bounty or project |
| rewardAmount | Max reward, integer, in the token column's currency |
| token | USDC or USDG in this snapshot |
| minRewardAsk / maxRewardAsk | Reward range rows (compensationType: range) carry them; fixed bounties leave them empty |
| deadline | Submission deadline, ISO 8601 timestamp with timezone, for example 2026-09-07T21:59:59.999Z |
| status | OPEN, or a closed state |
| agentAccess | HUMAN_ONLY or AGENT_ALLOWED, the listing's automation policy |
| isPro / isFeatured / isWinnersAnnounced / winnersAnnouncedAt | Listing flags and winner timestamp; winnersAnnouncedAt is null on every card in this snapshot |
| compensationType | How the sponsor pays out |
| sponsor | Sponsor display name |
| _count | Nested counters: comments and submissions |
The 10-row free sample flattens _count into comments and submissions columns, so you can check the shape in a spreadsheet before touching the full file.
How to query the Solana bounties dataset without downloading anything
The dataset-mcp server reads the full released files and filters them in memory. Setup takes one npx line; instructions are on the For agents page.
A real call, filtering the cards file for listings above 5,000 USD:
query_dataset(
"earn-bounties",
{
"where": [{ "column": "rewardAmount", "op": "gt", "value": 5000 }],
"columns": ["title", "rewardAmount", "token"]
}
)
Output from a September 2026 test run of server v1.1.0, matching 6 of 51 card records:
| title | rewardAmount | token |
|---|---|---|
| Create Content for Breakpoint 2026 | 8000 | USDG |
| Solana Summit Serbia Content Bounty | 10000 | USDG |
| Create Content for Breakpoint 2026 | 8000 | USDG |
| Solana Summit Serbia Content Bounty | 10000 | USDG |
| Create Content for Breakpoint 2026 | 8000 | USDG |
| Solana Summit Serbia Content Bounty | 10000 | USDG |
Six rows, two unique listings: the card file stores each listing once per API page, so a high-reward listing shows up three times. Dedupe on id or slug downstream if your analysis needs one row per listing.
A second real call, column stats over the same file:
get_stats("earn-bounties", { "column": "agentAccess" })
Returns: 51 rows, 45 HUMAN_ONLY and 6 AGENT_ALLOWED. The type column splits the same way: 45 bounty cards, 6 project cards. Where clauses support =, contains (case-insensitive), gt, and lt, with 100 rows per call and next_offset for paging.
What the 186-route endpoint map covers
earn-api-endpoints.txt is a reference document, not a scrape script. It groups every route the platform exposes during normal use: listing feeds, comments, submissions, bookmarks, grant applications and tranches, hackathon feeds and stats, homepage counters, image signing, member invites, and sponsor-side operations. Each group lists the paths and the fields they touch.
Two finds in the map matter most for anyone building read-only tooling. First, /api/search/{title}, an undocumented route that returns full description text for a listing title. Second, the Privy passwordless auth sequence with its /api/v1/sessions refresh step, documented so you can understand how the public site's own session flow works. Nothing in the file requires credentials you do not already have; it maps what the public app does.
What researchers and builders use an earn dataset for
- Bounty radar and aggregators. A dataset gives you the schema and history to build a feed or notification bot against: titles, deadlines, tokens, sponsors, submission counters, all as rows. The snapshot anchors your backfill; live checks cover the rest. For the tracker-build angle, see the web3 bounty listings data guide and the tracker-vs-dataset comparison in the Superteam Earn alternative guide.
- Bidder analytics, as research. Submission counts next to reward sizes show how crowded each tier was on harvest day. The 45/6 bounty-to-project split and the 45/6 HUMAN_ONLY-to-AGENT_ALLOWED split are the kind of baseline numbers ecosystem researchers use when they track how Solana work markets shift over time.
- API archaeology. The 186-route map documents how a production Next.js platform organizes its endpoints. Builders reverse-engineering their own integrations use it as a worked example.
- Agent tooling. AGENT_ALLOWED listings and the flattened sample schema give automation projects a stable contract to build against, without touching the site.
One framing note: a snapshot is a research artifact. It records what the market looked like on one day. What it does not do is predict which submissions a sponsor will pick, and none of the numbers here are an income estimate of any kind.
Get the data
Start with the free 10-card sample to check the schema, then take the full pack when it fits. The full pack carries all 51 card records, all 28 full descriptions, the endpoint map, and the harvest README.
Checkout and download run through Getly. Source: public Superteam Earn API, harvested 2026-09-04. Personal and commercial use; no resale of the files as-is. More free pulls in the free datasets for AI agents index.