Polymarket Scraper | Odds, Events & Profiles avatar

Polymarket Scraper | Odds, Events & Profiles

Pricing

from $1.10 / 1,000 results

Go to Apify Store
Polymarket Scraper | Odds, Events & Profiles

Polymarket Scraper | Odds, Events & Profiles

Scrape Polymarket events, markets, odds, volume, tags, sports and comments. Rows include org emails (hello@ / press@) and commenter X handles. No phones or street addresses. Unofficial — not affiliated with Polymarket.

Pricing

from $1.10 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Share

Polymarket Scraper — Events, Markets, Odds, Volume & Liquidity

Scrape Polymarket prediction market data — then download structured results as Excel, CSV, or JSON.

Use this Actor as a practical Polymarket API alternative for odds monitoring, event research, category tracking, and sports/series market intelligence. Enter a mode (events, event detail, search, tags, sports, series, teams, comments, or CLOB catalog), pick a locale, and get Dataset rows with titles, slugs, prices, volume, liquidity, market URLs, org emails, and (on comments) commenter names / X handles.

  • Scrape Polymarket events, markets, tags, sports, series, teams, search, comments, CLOB market catalog, order books, leaderboard, positions, trades, holders, resolutions, and perps instruments
  • Filter by category / tag, series (e.g. NFL), sport, featured / active / closed, and sort order (volume, liquidity, …)
  • Capture outcome prices, volume / volume24hr, liquidity, negRisk, market counts, and optional price history
  • Support verified locales: en, zh, es, de, fr, pt, ru, ko, ja
  • Export to Excel / CSV / JSON, or connect Make, n8n, Zapier, Python, or the Apify API
  • Pay per Dataset row — Actor start + each delivered result; platform usage is included (you do not pay separate Apify compute on top)

Unofficial community Actor — not affiliated with Polymarket. Collect only publicly available metadata. You are responsible for complying with Polymarket terms and applicable law.


What does the Polymarket Scraper do?

Polymarket Scraper lets you extract structured prediction-market data from Polymarket without running your own browser farm. Give it a mode and filters, then start a run.

Under the hood, the Actor:

  1. Validates your input (mode, locale, tags / series / event slugs, filters)
  2. Calls the control-plane broker and its managed VPS worker, which reads the public Gamma API, CLOB, Data API v2, site BFF, and Perps read surfaces
  3. Normalizes events, markets, tags, sports, series, teams, and comments into Dataset rows
  4. Writes RUN_SUMMARY (and ERROR_SUMMARY on failure) to the key-value store

You run it like any other Apify Actor — schedule it, call it from the API, or plug it into automations.


What Polymarket data can I extract?

DataEvents listEvent detailMarkets / CLOBTags / Sports / Series / Teams
Title / question / slug✅✅✅✅
Event / market URL✅✅✅—
Outcome prices / top outcomes✅*✅✅—
Volume / volume24hr / liquidity✅✅✅—
Tags / category✅✅—✅
Neg-risk / market count✅✅——
Series / sport / league✅**✅—✅
Comments—✅***——
Org emails / commenter X✅✅✅✅
CLOB tick / min size / conditionId——✅****—
Price history✅*****✅*****✅*****—

*When markets are included or flattened.
**Via seriesSlug / sport filters or expand modes.
***mode=comments.
****mode=clob_markets.
*****Optional enrichPriceHistory (slower).


Why scrape Polymarket?

Polymarket is one of the largest public prediction-market platforms. Teams scrape Polymarket to:

  • Monitor event odds and volume across politics, crypto, sports, and culture
  • Build research datasets from category / series / sport taxonomies
  • Track liquidity and featured markets for quant or content workflows
  • Pull market metadata and optional price history into dashboards or agents
  • Export clean rows instead of hand-copying the Polymarket UI

Compared with leaderboard-only or whale-trade Actors, this Actor focuses on events + markets + taxonomy (tags, sports, series, teams) with locale-aware titles.


More Actors like this

Need another site or vertical? Use a dedicated Actor below for structured fields. Stay on Polymarket Scraper for Polymarket events, markets, odds, tags, sports, series, and teams.

Similar intelligence & content scrapers

Prefer another specialized scraper?

If your target has a specialized Actor below, use that first — usually cheaper and more structured than a generic scrape.

Jobs & Freelance

E-commerce

Real Estate

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.


How to use (no code required)

  1. Click Try for free (or Start) on this Actor page
  2. Leave mode on Auto, or choose one — e.g. events, event, search, teams, clob_markets
  3. Set filters — tagSlug / seriesSlug / sport / locale / maxItems
  4. Click Start — rows appear in the Dataset tab
  5. Download CSV / Excel / JSON, or pull via API

Example inputs

Top crypto events (Chinese locale titles where available):

{
"mode": "events",
"locale": "zh",
"tagSlug": "crypto",
"maxItems": 20,
"includeMarkets": false
}

NFL series event list (Spanish locale):

{
"mode": "events",
"locale": "es",
"seriesSlug": "nfl",
"maxItems": 20,
"includeMarkets": false
}

Single event with nested markets:

{
"mode": "event",
"eventSlug": "fed-decision-in-july-181",
"locale": "en",
"includeMarkets": true
}

What to fill in

mode defaults to Auto: the Actor picks the mode from the fields you fill. Pick a mode yourself to force it.

ModeFill at leastIf you leave it empty
Autoany one field belowExample run: searches the sample query bitcoin, at most 3 rows
event / resolutionseventSlugs, eventIds, eventSlug or eventIdAuto picks another mode, or the run stops with INVALID_INPUT
searchquerysame as above
commentsparentEntityId or an event slug/IDsame as above
booktokenIdsame as above
positionsusersame as above
holdersuser, conditionId or tokenIdsame as above
eventsnothing (optional tagSlugs, tagSlug, seriesSlug, sport)top open events by 24h volume
series / sports / teamsnothing (optional seriesSlug / sport / league)the full list
markets, tags, categories, clob_markets, leaderboard, trades, perps, data_statusnothingthe full list or latest page

With Auto, the first filled field wins in this order: event slugs/IDs → comments parent → tokenId / conditionId / user → seriesSlug → league → sport → tags → query. Fields that belong to another mode are ignored and listed in the INPUT_REPORT record of the run's key-value store, together with anything that was filled in or renamed. maxResults and limit are accepted as other names for maxItems. Unknown fields and invalid filter values (for example an unknown order) are ignored with a warning instead of failing the run.

An error starting with INVALID_INPUT: names the field to fill and never repeats what you typed.

Permissions: this Actor runs with Apify limited permissions; it only reads its own input and writes its own dataset and key-value store.


Input overview

FieldPurpose
modeauto (default), events, event, markets, search, tags, series, sports, teams, comments, categories, clob_markets, book, leaderboard, positions, trades, holders, resolutions, perps, data_status
tokenId / user / conditionIdBook, positions, trades, and holders identifiers
localeen / zh / es / de / fr / pt / ru / ko / ja
tagSlug / tagSlugsCategory filters for event lists
seriesSlugSeries-scoped event list (e.g. nfl)
sport / leagueSports expand / teams filter
eventSlug(s) / eventId(s)Detail lookup (batch supported)
queryPublic search
ordervolume24hr, volume, liquidity, competitive, startDate, endDate
paginationModekeyset or offset
includeMarkets / flattenMarketsincludeMarkets=true adds rawMarkets[] (full Gamma payload) to event rows; flattenMarkets=true emits one billed row per market
expandEventsExpand sports/series into events
enrichPriceHistoryOptional CLOB prices-history
enrichDetailsDefault on. For comments, fetch commenter xUsername
maxItemsMaximum Dataset rows for each input; default 70

Full field docs live in the Input tab.

How maxItems works

maxItems is the row limit for each input, not one shared limit for the whole run:

  • each value in tagSlugs, eventSlugs, or eventIds gets its own budget;
  • scalar inputs such as tagSlug, query, seriesSlug, sport, league, or parentEntityId count as one input;
  • values above 70 are continued in parts of up to 70 rows when that mode has another page;
  • event, market, tag, sport, series, team, comment, catalog, and CLOB-market rows all count toward the applicable input budget.

The complete run also stops at the maximum total charge you set on Apify. Free Apify plans remain capped at 200 rows per run and 10 runs.


Output

Each Dataset item includes a recordType such as event, market, tag, series, sport, team, comment, clob_market, book, leaderboard, position, trade, holder, resolution, perps_instrument, or data_status, plus identifiers (slug, id, conditionId), titles, metrics, URLs when available, and lead/clue keys on every row.

Lead fieldWhat you get
emailsOrg contacts from the site footer: hello@polymarket.com, press@polymarket.com
org{ name: "Polymarket" }
webhttps://polymarket.com plus org socials; on comments, commenter https://x.com/{xUsername} when present
personOn comments: { name, role: "commenter" }. Empty on event/list rows
phones / address / geoAlways empty — 本站无 (no tel:, no street/门牌). Reasons in leadAbsences
leadSource / leadRevealcontact+visible for footer emails; entity+visible for commenter profiles

enrichDetails defaults on: comments mode also calls /api/profile/userData so xUsername is filled when the user published an X handle. It enriches the same comment row and does not create separately billed rows.

flattenMarkets, expandEvents, and enrichPriceHistory default off. When flattenMarkets is enabled, every emitted market is its own billed Dataset row and counts toward that input's maxItems budget.

Honest limits

  • Commenter personal email / phone / 门牌 are not on the site. Footer emails are Polymarket the company, not the commenter (leadAbsences.emails.person).
  • /about and /contact return 404. Help Center has no mailto.
  • john@polymarket.com is a signup placeholder, not a lead.
  • Chrome search is /{locale}/predictions?q= and can substring-match; worker search is Gamma /public-search (different ranking). Do not treat UI hits as the API contract.
  • No show-phone click-reveal. Event rows stay compact by default (marketCount + first-market topOutcomes). Set includeMarkets=true to add rawMarkets[] with the full Gamma payload, or flattenMarkets=true for one billed market row per market. CLOB /book is in scope with mode=book and tokenId; bids/asks are capped at 50 levels (bidsTruncated/asksTruncated flag clipping).
  • recordType and scrapedAt are injected by the Actor layer, not the worker row — downstream consumers should not treat them as Polymarket source fields.
  • geo is always null — Polymarket has no physical-location surface; reasons are in leadAbsences.geo.

Key-value artifacts:

  • INPUT_ECHO — normalized non-secret input
  • RUN_SUMMARY — status, worker source, counts, warnings
  • ERROR_SUMMARY — present on hard failures

Pricing

Pay per Dataset row (platform usage included — User pays platform usage = No):

EventPrice
Actor Start (apify-actor-start)$0.005 per start (per GB of memory, min 1)
result (apify-default-dataset-item)$1.50 / 1,000 on FREE & BRONZE

Result tier discounts (Apify paid plan tier):

Tier$/1,000per result
FREE*$1.50$0.0015
BRONZE$1.50$0.0015
SILVER$1.30$0.0013
GOLD$1.10$0.0011
PLATINUM$1.00$0.001
DIAMOND$0.80$0.0008

*Apify Free plan users also have Actor-developer caps below.

Free Apify plan limits (Actor developer policy)

CapValue
Free runs of this Actor10 total
Free results per run200
Paying Apify usersUnlimited runs (schema max still applies)

These limits are set by the Actor developer, not Apify Console. When the run quota is hit, the Actor finishes with RUN_SUMMARY.status=FREE_TIER_LIMIT and a clear status message (not an opaque platform error).

The 200-row free cap applies to the whole run. On paid plans, the whole-run total is bounded by your maximum total charge even when several inputs each request up to maxItems rows.


Tips for better results

  • Prefer tagSlug / seriesSlug / sport over huge unfiltered crawls
  • Leave includeMarkets: false on large lists; use mode=event with includeMarkets=true for full markets, or flattenMarkets=true for one row per market
  • For series lists, use seriesSlug (offset pagination); avoid assuming closed=false always applies
  • Turn on enrichPriceHistory only when you need time series — it is slower
  • Randomize acceptance inputs; do not reuse README examples as your only production query

Built-in seed catalog

The worker ships with an offline-generated seed catalog (seed_catalog.py, regenerated by worker/deploy/build_seed_catalog.py) covering:

  • ~7,400 tag slugs — full Gamma /tags pagination merged with sitemap categories.xml top-level slugs
  • ~485 sport codes — full Gamma /sports with each sport's tag slugs resolved via tagIds → slug
  • ~50 series slugs — Gamma /series single-shot
  • ~50 leagues — top by team count from Gamma /teams (the endpoint returns ~48k individual athletes across 400+ leagues; we cap to the top 50 with up to 200 teams each)

Seed-driven surfaces:

  • mode=categories emits the full seed list (no extra HTTP fetch) plus the catalog metadata row
  • mode=tags with featuredTagsOnly=true treats the 20 sitemap top-level categories + the 10 nav slugs as featured
  • mode=events and mode=teams warn (but still pass through) when tagSlug/tagSlugs/seriesSlug/league is not in the seed catalog — helps catch typos without breaking rare but valid slugs

Regenerate after Polymarket taxonomy changes: python3 deploy/build_seed_catalog.py inside worker/.


FAQ

Is this an official Polymarket API?
No. It reads publicly available Gamma / CLOB metadata through a managed worker. Not affiliated with Polymarket.

Do I need proxies?
Egress is handled on the worker side (WORKER_PROVIDES_PROXY). You do not mint Apify residential proxies from this thin Actor by default.

Can I get order-book depth?
Yes — mode=book with tokenId reads the CLOB /book endpoint (no auth). bids/asks are capped at 50 levels; bidCount/askCount always report true depth and bidsTruncated/asksTruncated flag clipping.

Can I get trader phone numbers or street addresses?
No. Polymarket guest pages have no tel: and no 门牌. You get company emails (hello@ / press@) and, in comments mode, public usernames plus X handles when published.

Which locales work?
Verified: en, zh, es, de, fr, pt, ru, ko, ja. Locale changes titles/URLs — it is not a multi-country TLD switch.


Integrations

  • Apify API / client (JS, Python)
  • Schedules & webhooks
  • Make, Zapier, n8n
  • Export Dataset to Google Sheets, S3, or warehouses

All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.

Jobs & Freelance

Real Estate

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ Browse the full profile: apify.com/lentic_clockss