How we build the Polymarket Builders Directory
We mirror the official Polymarket data API daily, enrich each of the 383 builders with their actual project website, and publish — with full disclosure of how we got there. No paid placement, no fabricated data, no scraping past what the public API exposes.
The data pipeline
- 01
Source
Polymarket's public Data API at
data-api.polymarket.com/v1/builders/leaderboard. No auth required, no rate limit hit at our cadence. We paginate through 4 time periods (DAY / WEEK / MONTH / ALL). - 02
Consolidation
Each builder appears in multiple period lists. We consolidate by
builderCode(the on-chain attribution hash — unique per builder regardless of display name capitalisation). Each consolidated entry stores stats for all 4 periods. - 03
Enrichment
For each builder we try to resolve a real outbound URL. Three strategies in order: (a) hand-curated overrides for ~50 famous names; (b) URL-pattern guessing across common TLDs; (c) DuckDuckGo HTML search. Once resolved, we GET the page for og:title / og:description / X handle.
- 04
Build
Astro consumes the JSON and renders 380+ pages (directory + one per builder) at build time. Cloudflare Pages serves the static output. No client-side data fetching — every page is pre-rendered with the latest snapshot baked in.
- 05
Refresh
A GitHub Action runs daily at 06:00 UTC. The scraper writes new content/builders/leaderboard.json, appends per-builder history, commits, and Cloudflare Pages rebuilds. Same script you can run locally if you fork the repo.
Verification tiers
Editorial pick
Top builders we've hand-curated: real description, real URL audit, X handle verified. ~50 entries to start; will expand.
Polymarket verified
The official ✓ flag from Polymarket's API. Their internal review process, not ours.
Auto-detected
Our enrichment script found and confirmed a working URL. Description from og:meta. Independent of Polymarket's verification.
Unverified
We couldn't find an outbound URL automatically. Profile renders with stats only. Help us identify by emailing [email protected].
What we will not do
- Accept payment for ranking position. The API ranks; we mirror.
- Fabricate descriptions when we can't find the source.
- Hide builders that don't pay us — every entry from the API is published.
- Cite our own data as authoritative on builder safety. We mirror what's public; we don't audit.
FAQ
01 Where does the leaderboard data come from?
We hit the public Polymarket Data API at https://data-api.polymarket.com/v1/builders/leaderboard once per day. The endpoint is documented at https://docs.polymarket.com/api-reference/builders/get-aggregated-builder-leaderboard. It takes a `timePeriod` parameter (DAY / WEEK / MONTH / ALL) and paginates via `offset` (max 1000). We pull all 4 periods and consolidate by builderCode (the on-chain attribution identifier). No auth required.
02 Why does your directory have more builders than the official builders.polymarket.com page?
The official page only renders the top 50 by 1-month volume in its SSR HTML. The API returns the full leaderboard for every time period — currently 380+ unique builders across DAY / WEEK / MONTH / ALL. We mirror the full corpus.
03 How often do you update?
Daily. A GitHub Action runs our scrape_polymarket_builders.py at 06:00 UTC, commits any changes to content/builders/leaderboard.json plus per-builder history files, and Cloudflare Pages rebuilds the site automatically. Ranks move fast; the daily cadence is what makes the directory useful as a 'who's heating up' tracker.
04 What does 'Polymarket verified' vs 'Editorial verified' actually mean?
Two independent signals. **Polymarket verified** is the official ✓ flag returned by their API (`verified: true` in the JSON response). It signals Polymarket has reviewed the project. **Editorial verified** is our own flag — we set it `true` only after we've (a) confirmed the project's website loads, (b) confirmed the website matches the builder identity, and (c) written or audited a description. The two states can disagree: a Polymarket-verified builder might still be Editorial-unverified because we haven't audited it yet; and a project might be Editorial-verified even if not Polymarket-verified.
05 How do you find the outbound URLs for each builder?
Three-tier strategy. (1) **Hand-curated overrides** — about 50 of the most-recognizable builders (MetaMask, Bitget, Polytrader.app, Sharkbetting.com, etc.) live in a KNOWN_OVERRIDES dict in research/scripts/enrich_polymarket_builders.py. (2) **URL-pattern guessing** — for names with embedded TLDs ("Olympusx.app"), try that URL directly; for others try {slug}.{tld} across the common suite (.com / .io / .app / .xyz / .bet / .fun / .trade / .dev / .ai). HEAD-check each; first 200 OK wins. (3) **DuckDuckGo HTML fallback** — search "{name} polymarket" and pick the first non-aggregator result. Then we GET the resolved URL, capture og:title / og:description / X handle / favicon. All confidence flags are disclosed on each profile page.
06 What does the rank you show actually represent?
Whatever Polymarket's API reports for the selected time period. The default view on the directory uses **1-month rank**; the period selector lets you switch to **24-hour**, **7-day**, or **all-time**. The API itself paginates ranked lists per period — i.e. a builder ranked #20 in MONTH might be #2 in DAY (massive recent surge) or #45 in ALL (only recently active). Our per-builder detail page shows all 4 ranks side-by-side.
07 How are categories assigned?
Three-source hierarchy: (1) manual override in `content/builders/{slug}.json` (for hand-curated entries), (2) the enrichment script's category_guess based on keyword rules over the name + meta description, (3) fallback to 'Other'. The full keyword rule set is in research/scripts/enrich_polymarket_builders.py — Bot / AI Assistant / Wallet Integration / Exchange / Arbitrage / Market Maker / Trading Tool / Prediction Tool / Trading Interface / Fund Strategy / Betting Interface / Quant / Data / Other.
08 I found a wrong URL or missing builder — how do I report it?
Email [email protected] with the builder's slug and the correct URL (and ideally a screenshot or X handle that confirms identity). We update overrides within 24 hours. Builders that move from auto-detected to editorial-verified after our review get a ★ Editorial Pick badge — it's worth being on the list.
09 Is being listed in this directory an endorsement of any specific builder?
No. We mirror the public Polymarket data; being in the directory means a project is in the Builder Program, nothing more. Verification state reflects whether we found a working outbound link — not whether the product is good or safe. For wallet permissions, always verify the URL matches the project's known domain before connecting. For performance verification, cross-check Polybot Arena's on-chain leaderboard.
10 Can I run the scraper / enrichment scripts locally?
Yes. The repo is open. `research/scripts/scrape_polymarket_builders.py` fetches the leaderboard; `research/scripts/enrich_polymarket_builders.py` tries to find outbound URLs. Both use Python 3 + requests + beautifulsoup4 only. No API keys needed.